Free Gerridae (2D puzzle platformer fit for speedrunning)

Dragon47

Member
Gerridae

Download: https://drive.google.com/open?id=0B2aQ5BkGahEiNWFtLXp0VWV1Szg

This was my team's entry for Global Game Jam 2017, a 48 hour game jam where the theme was "waves". It is a 2D puzzle platformer consisting of 6 levels where you play as a water strider manipulating water to make waves. Use the arrow keys or WASD to move. Escape or Alt+F4 ends the game. F11 or Alt+Enter can be used to toggle between fullscreen and a borderless window. R restarts the game.

It's about a 5-10 minute long game the first time you play through, but you'll notice that as you continue playing you'll get more and more familiar with the manipulation of water, and discover interesting tricks to speed up your runs, making it very suitable for speedrunning. I encourage you to try again after you've completed it the first time to see the difference. Whenever you complete the game, you're presented with the run's time and you can use this to record your improvement.


World records:
1. Coldays with 31.863 seconds (video)
2. Dragon47 with 35.067 seconds
3. Bitsauce with 35.133 seconds (video)


Screenshots:





Gif:



Speedrunning:

As of January 23rd 2017, the world record is 31.683 seconds by Coldays. The video recording of it is embedded below (it contains spoilers, so play the game before watching if you haven't already).

Feel free to post your times below. I'll edit the score table if recordings are provided.


 
Last edited:

Dragon47

Member
That water effect looks sick, do you have any tutorial, or source code?
Thanks! For the physics I based it on the way this marketplace asset does it: https://marketplace.yoyogames.com/assets/587/water-physics-simulation
Each water is a rectangle which has about 100 vertices on the surface and is rendered as a primitive. Each vertex has a position and a velocity which are continuously spread across to neighboring vertices. The velocity is updated so it acts like a vertical spring. For the rendering I wrote a reflection shader that takes three textures; the screen (with reflectionless water already rendered onto it), a texture with the reflectionless water only, and a texture with a gradient noise normal map. Using the latter texture the shader searches from every pixel and upward until it finds the surface of the water. The distance between the pixel coordinate and the water surface that was found is used to reflect the corresponding point above the water surface. You can use binary search for this (linear also works, but it's slower). Then a displacement is done to make the reflection look distorted. This is done by taking the x- and y-channels of the normal map texture, multiplying them by some factor, and then adding the result to the reflection point that was found in the search. This yields the final position that you use to lookup the reflection color in the screen texture. You can make the reflection fade out into the water by using the distance you found earlier (and optionally apply the smoothstep function to this distance if you want it more smooth).
 

Zerb Games

Member
Ok, so I've played it. It's an original idea, which is always great, the graphics are stellar, and if you are a speedrunner, I would imagine this is a great deal of fun. The only issue that I really had is that my computer is really bad, so I had to use the shaderless version. It still lagged, so I was never even really able to try to speed run it ):

3.5/5 stars
 

Dragon47

Member
The world record has been beaten. The new WR is 31.683 seconds by Coldays. A huge improvement compared to the previous record gap. Here's the video recording:

 
Top