[Android] Arkanoid + Acids = Blocus | A lot of particles that have a real physic

Hi all !

I’m back once again to present you my latest game, an Arkanoid-like game, called Blocus

http://img15.hostingpics.net/pics/449725banner.png

It’s available on the store at : https://play.google.com/store/apps/details?id=be.julien.blocus

Here is what it looks like :

YyZgHoQ87UY

https://lh3.ggpht.com/rYgwk_v5QbWnDhlE4JBAr_RYK-lGZimaEjoaE7NCbQtJQrqqH5y4qHlUHKdOcz4gA0Y=h310-rw

http://img4.hostingpics.net/pics/266567lights2.png

What is worth noting in this game and that you can’t get from the screenshots / vid :

  • An endless game with a constantly increasing difficulty
  • The paddle is divided in three part (left, that send the ball to the left, middle and right). When a ball hits the paddle, it becomes warmer. If you can get it warm enough, the paddle will shoot very powerful projectiles.
  • You can upgrade your paddle (It improves the projectiles)
  • When you clear a column, the ball becomes more powerful and quicker
  • The particles will collided with the paddle or the walls

I hope you’ll enjoy it :slight_smile:

It’s good.

Honestly particles > ALL THE THINGS

Thanks… And I couldn’t agree more ! :smiley:

It’s the first time I dare include some physic on my particles, and that feels even better

OMG!! NOOB! Another breakout clone!!??
(kidding of course) :slight_smile:

This game looks wonderful, it reminds me of Shattered for some reason.

SHATTERED !!!
That’s the name of the game I was looking for ! :smiley: Thanks a lot ! I hope I can pick up some ideas from this game ^^

And thanks for the feedback :slight_smile:

Maybe you can you randomize the angles a bit, as the balls currently only move in four distinct directions.

You right about the angles. But when you don’t touch the screen, your balls rotates but it wasn’t really enough so I’ve increased the rotation in the latest version :slight_smile:

Just little insight on how the game is made :slight_smile:

Well that’s in Java, using libGDX, and as you’ve seen it uses a huge number of particles :D.
I’ve used simple tricks to make them performant (I don’t use the one included in libGDX, I wanted more flexibility) and to make the game more “alive” :

  • One class per particles. That’s tedious, but it allows me to make them as light as possible
  • Almost everything happens only one frame out of two. One out of four or once per second when it’s possible.
  • You can see that it is very colorful, and every color evolve over time. Well that’s all just based on 7 arrays of roughly 40 float, the only thing that evolve for the particles, blocs, paddle or balls is the current index.
  • Some indexes are actually floats, for the blocs mainly, that allows me to make them evolve on a sinusoidal curve (I hope that’s the right word, English isn’t my native language).
  • More broadly, I’ve tried to make everything as smooth as possible. Another example is when a ball hit something it grows, and then shrinks quickly cause it’s sized is multiplied by 0.95f. Same logic is applied for the screenshake, the particles, the blur shader, the mini blocs that forms a full bloc… everything
  • The number of particles adapt in real time to the fps. It’s really simple : On one hand, particles are often generated each frame, so less frames mean less particles. On the other hand I generate a number of particles proportional to the number of fps. Sometimes with a minimum if that’s a key element like the balls.
  • The physic of the particles is about as simple as possible, but it works quite well : The only collide with the paddle and with three walls. I don’t even bother to test the exact collision point, the center is enough, they are either too quick or too small for it to be noticeable anyway.

Well… That’s all I can think of for the moment :slight_smile:
Funny detail, beside the background and the tutorial button, the game uses only 1 1x1 texture and 1 32x32 textures (a circle)

Hi all !

There has been an update introducing procedurally generated levels with a coherent pattern :slight_smile:

You can see some examples here :

So, I’ve finally completed the dynamic lights mode !

You can see the definitive result here :
YyZgHoQ87UY

And of course get the game here : https://play.google.com/store/apps/details?id=be.julien.blocus

Hope you’ll enjoy it :slight_smile:

did you play plasma-pong back when ?

Didn’t knew this game, but it looks fun :smiley:

Hi all !

I’ve updated Blocus, it’s a small modification on the sprites but it really makes the game a lot easier to understand

Few examples :

http://img4.hostingpics.net/pics/231145newblocs1.png

http://img4.hostingpics.net/pics/918606newblocs2.png

And… The trailer is already outdated :confused:

Ok, new update !

With more performance and a game easier to understand ! I’ve tuned down the number of particles but honestly it’s not visible on the screen :o

A the number of downloads have exploded without me doing anything special… That’s frustrating, I’ve spent hours on marketing with little or no gain but sometimes, without apparent reason, I get hundred of downloads for a few days

Real marketing is better left to forces you’re not in control of. :point:

It crashes on my Nexus 4 with a java.lang.VerifyError. I’ll post the complete exception later.

Here’s the stack trace:


10-02 18:39:55.542: E/AndroidRuntime(19771): FATAL EXCEPTION: GLThread 98791
10-02 18:39:55.542: E/AndroidRuntime(19771): Process: be.julien.blocus, PID: 19771
10-02 18:39:55.542: E/AndroidRuntime(19771): java.lang.VerifyError: Verifier rejected class com.badlogic.gdx.utils.Json due to bad method java.lang.String com.badlogic.gdx.utils.Json.a(java.lang.Object) (declaration of 'com.badlogic.gdx.utils.Json' appears in /data/app/be.julien.blocus-1.apk)
10-02 18:39:55.542: E/AndroidRuntime(19771): 	at jeu.c.a(Unknown Source)
10-02 18:39:55.542: E/AndroidRuntime(19771): 	at jeu.c.a(Unknown Source)
10-02 18:39:55.542: E/AndroidRuntime(19771): 	at jeu.d.a(Unknown Source)
10-02 18:39:55.542: E/AndroidRuntime(19771): 	at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(Unknown Source)
10-02 18:39:55.542: E/AndroidRuntime(19771): 	at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1512)
10-02 18:39:55.542: E/AndroidRuntime(19771): 	at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)

The device is a Nexus 4 with Android 4.4.4 using the ART runtime.

Yeah libGDX isn’t compatible with ART on 4.4 and never will be. :-\

It should be fixed on L tough.

Yeah, maybe I should pray or make sacrifices :smiley:

What a pitty. Why don’t they fix this even if ART might be the actual cause? That’s the only thing that doesn’t work for me with ART. I’m not using anything else for months now and never had a problem with it.

I need to play it. I like the cool fireworks :wink: :slight_smile:

Oy !

So, the new update is online, a frankly, it’s awesome ! :smiley: And yes, more fireworks !

I’ve fixed a few bugs, but the main focus was on graphics, here is what it looks like :


http://img4.hostingpics.net/thumbs/mini_299103214.png


http://img4.hostingpics.net/thumbs/mini_772381573.png


http://img4.hostingpics.net/thumbs/mini_403140Screenshot20141005170707.png


http://img4.hostingpics.net/thumbs/mini_700098583.png

So, I’ve made new sprites for the blocs and ball. There are also animations that you can’t see on the screenshot :

  • The balls emits lightnings
  • The blocks have a “sweeping” effect on them.
  • When a blocks gets it and it’s not destroy, the tiles flip before displaying the new color

I hope I’ll enjoy it, I’m really proud of this one :slight_smile: