blob by pknowles
Requires WebGL. Tested with firefox and chrome with HD5850, GTX670, GTX560 and Quadro4000.
The submission (goanna.cs.rmit.edu.au/~pknowles/blob-submit/) had some bugs, which didn't appear on my 660, so I've put together a "post-compo version" which should give an idea of what the game was meant to be.
== The Game ==
You are red. Only red blobs can be moved by you.
The aim: to eat food (green), reproduce and attack blue, becoming the dominant blobs!
Larger red/blue blobs will destroy smaller red/blue blobs.
Eating a green blob will duplicate the eater, with size deviation - evolution :)
You must balance eating and attacking (to cull your smaller blobs), encouraging evolution of larger red blobs.
The game ends when you lose too many blobs or destroy a significant portion of blue blobs.
Sorry to those of you without the hardware to run this. I built the game around my interest in GL shaders. The game itself runs almost entirely on the GPU and can happily handle blobs on the order of one million.
== Controls ==
Left drag to move red blobs. You "draw" force.
Scroll to zoom (not entirely necessary).
Right drag to pan.
== Tech Details ==
Each level is randomized at launch with perlin noise. I compute a signed distance field for collision detection with the level. Blobs move with a fragment shader, writing to a double buffered a floating point texture. Interaction is achieved by additively drawing density, velocity etc on to a texture which other blobs can read (These can be viewed by pressing tilde "~"). I count the number of remaining blobs similarly to mipmapping before reading a very small texture back to the CPU. The blobs are rendered by raycasting a density texture, similarly to parallax mapping, applying transmittance and environment mapping.
The submission (goanna.cs.rmit.edu.au/~pknowles/blob-submit/) had some bugs, which didn't appear on my 660, so I've put together a "post-compo version" which should give an idea of what the game was meant to be.
== The Game ==
You are red. Only red blobs can be moved by you.
The aim: to eat food (green), reproduce and attack blue, becoming the dominant blobs!
Larger red/blue blobs will destroy smaller red/blue blobs.
Eating a green blob will duplicate the eater, with size deviation - evolution :)
You must balance eating and attacking (to cull your smaller blobs), encouraging evolution of larger red blobs.
The game ends when you lose too many blobs or destroy a significant portion of blue blobs.
Sorry to those of you without the hardware to run this. I built the game around my interest in GL shaders. The game itself runs almost entirely on the GPU and can happily handle blobs on the order of one million.
== Controls ==
Left drag to move red blobs. You "draw" force.
Scroll to zoom (not entirely necessary).
Right drag to pan.
== Tech Details ==
Each level is randomized at launch with perlin noise. I compute a signed distance field for collision detection with the level. Blobs move with a fragment shader, writing to a double buffered a floating point texture. Interaction is achieved by additively drawing density, velocity etc on to a texture which other blobs can read (These can be viewed by pressing tilde "~"). I count the number of remaining blobs similarly to mipmapping before reading a very small texture back to the CPU. The blobs are rendered by raycasting a density texture, similarly to parallax mapping, applying transmittance and environment mapping.
| Web | http://goanna.cs.rmit.edu.au/~pknowles/blob/ |
| Original URL | https://ludumdare.com/compo/ludum-dare-24/?action=preview&uid=16649 |
Ratings
| Coolness | 56% | 3 |
| Overall | 2.35 | 663 |
| Fun | 2.26 | 596 |
| Graphics | 3.30 | 227 |
| Innovation | 3.15 | 247 |
| Mood | 2.14 | 604 |
| Theme | 2.05 | 652 |
Error when it first starts, and then clouds.
screenshot looks A+ though.
OSX 10.6.8: Chrome Version 21.0.1180.82: "Could not create GL context."
"GL Error 1286: <unknown> after draw <no stack>"
I would really like to know more about how you did all this. Maybe you'd like to write a blog post?
I haven't got round to implementing AI yet. At the moment blue movement is purely random, but the data for pathfinding and unit density is available.
The first thing I want to fix is the blob interactions (so the evolution part of the game actually works). I really want min/max blending for this but like so many GL features it's missing in WebGL.
I'll definitely continue to work on the game. I'll put a link on the same page with some more in-depth tech details when I get time.
Thanks all for the feedback :)