Devlog #2 From Ugly Shapes to a Real River
Last time I talked about how the game started and how the core mechanic came to life. This time it's all about the visual overhaul, turning a flat blue rectangle into an actual river. Where we started The first version was functional but ugly. A white triangle for a boat, colored circles for buoys, and a flat blue background. It worked, but it looked like a prototype from 1995. I knew if I wanted people to actually enjoy the game I had to make it look like something worth playing. Building the river with code: Here's something interesting, there are zero image assets in this game. No sprite sheets, no PNG files for the background. Everything is drawn with Flutter's Canvas API in code. That means the river, the rock walls, the plants, the light reflections, all of it is mathematically generated every single frame. This was both a challenge and a creative constraint. I couldn't just import a pretty background image. I had to figure out how to make water look like water using gradients, sine waves and layered shapes. Rock walls The rock walls on either side of the river were one of the trickiest parts. I wanted them to feel three dimensional and organic, not just a flat green rectangle. The solution was layering multiple shapes with slightly different colors and offsets to fake depth, adding moss patches with semi-transparent circles and darkening the water edge to simulate wet rocks. Light reflections and waves: To make the water feel alive I added animated light reflections, small oval shapes that slowly drift downstream and pulse in opacity. Combined with subtle sine wave lines scrolling down the screen it creates the illusion of moving water without being distracting. The sailboat: The original triangle boat had to go. I redesigned the boat entirely, a curved hull with cubic bezier curves, a proper deck, a cabin with windows ;), a mast with rigging wires, a mainsail and foresail that actually billow slightly as you move, a boom and a little red flag at the top. Plants and details: To make the rock walls feel more alive I added procedurally placed plants that sway gently. Each plant has a randomized position, size, color and sway speed, so the walls never look exactly the same twice. supposed. The result: Going from a flat blue rectangle to a proper river with depth, reflections, detailed rock walls and a (realistic) sailboat was a huge moment. The game suddenly looked like something I'd actually want to play. What's next? In Devlog #3 I'll talk about the day/night cycle and storm effects, because what's better than a river at sunset? A river in a full thunderstorm at 500m. Stay tuned!


Discussion