Tessa makes stuff

Tesmaia's blog

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

[image or embed]

— Tesmaia 🏳️‍⚧️ (@tesmaia.bsky.social) December 6, 2024 at 2:19 PM

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:

  1. 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.
  2. 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.

Starting my website

So I started my own website. For now I'm using a very lightweight approach where the site contains no JS. Everything is done with just HTML and CSS, and I'm hosting it as github pages. I'll see if I need something more involved later. To make the process a bit easier on me (just a bit) later I wrote a pattern replacement tool in Go so I can just write these articles in seperate files. I don't really know Go, so that's also so I can learn a bit of a new language :)