Like a bee in water, game update and tools
Here is a video of some work in progress of my new game: Like a bee in water (working title)
Another day, another gameplay clip. If I keep this up I will run out of stuff, so need to keep the development going :) #gamedev #indiedev #godot
— Tesmaia 🏳️⚧️ (@tesmaia.bsky.social) December 6, 2024 at 2:19 PM
[image or embed]
Here I want to go more in depth on the process of making the game. First of all, this project is going for about a year, on and off (mostly off) development, where I've spent a lot of time iterating on the movement and abilities.
I think there is a pretty good basic moveset now to work with, however there are also some concepts I've not entirely figured out yet. I've run into several issues:
- Level design is very hard. The swimmy mechanics means that a lot of standard concepts do not apply, because of that, it's hard to build levels on intuition alone.
- Building levels that are not on a grid can be very time-consuming when you have to manually construct the entire layout in detail. This makes it hard to test and iterate on what level design concepts work.
When I began the project, I just roughly sketched some fixed shapes. In order to make things look better, I switched to SmartShape2D. This plugin allows you to create curved terrain, with collision. The user interface, however, is atrocious and it makes it very easy to make destructive mistakes while editing and navigating the extensive resource menu.
Since then I stepped away from it and instead started trying a different kind of level using just Line2D and a script that builds collision for it. That however was not good enough to really build good levels in, I still wanted what SmartShape2D could do, but without the severe issues it has:
Introducing ProceduralPath2D:
ProceduralPath2D is a plugin I'm making that takes a different approach to building optionally curved levels. Using a node derived from Path2D, I created a procedural generation platform that can take in template scenes and wrap the contents around the path.
The concept is very simple: The X axis in the template is ignored, and the Y position determines how far away from a path a node should be wrapped along a path. Scripts can be invoked for each control point to add additional procedural content. With that method I can also randomly place other objects, perfectly snapped along the path.
As work on the game continues, this plugin will also continue to evolve. Once I'm happy about it, I'll release it as open source and try to get it in the asset manager.