Porting progress

December 2024

After writing most basic game engine systems, like the multithreading and memory management algorithms, I've now also implemented the koi modelling, rendering and animation systems. Besides just porting it, I've been able to improve the systems and make them more performant. Since the new engine performs very well, I can now increase the amount of detail and the quality of the koi animations.

Koi
The koi are swimming again, although their tails are still missing.

The koi animation system runs completely on the GPU, and has become rather complicated already. I think it still needs some improvements over the last iteration though. The pectoral and ventral fins looked fine shape-wise, but moved rather rigidly. I'm going to try some new methods to animate them to see if that feels better.

The game uses a lot of procedural generation systems to make its content; not just the koi, but also the environments are completely unique for each game, the same 3D model will never appear twice. Generating these models can be very complex and slow, so this work must be multithreaded to prevent the game from freezing or stuttering. In Javascript, this was somewhat possible, but synchronizing the threads wasn't very efficient or pleasant to work with. I've been able to improve this workflow a lot with the new engine, so it will be much easier to implement future algorithms now.

Koi farm 1 only had small plants, which are rather easy to animate realistically. If they sway back and forth in the wind, it looks convincing enough. I want to add larger and more complicated plants to the environments in koi farm 2, which will probably require skeletal animation just like the koi. To facilitate that, I've written the koi animation system in such a way that more animation systems can be added to it in the future. Trees, birds and dragonflies can all extend that system in their own way to animate themselves.