Cpp
Reflection
I think the standard choice for a collider shape of a player controller nowadays remains firmly in the court of a capsule. It can represent a vertical body with rotational symmetry, quite like a cylinder, but without involving much more complicated math. The most important advantage over other shapes with flat bottom walls is that a capsule can scale slopes and obstacles much more smoothly than its counterparts.
Those were the reasons I chose it when prototyping Hosper in Godot and it served me well as during testing of different forms of geometry for maps. I decided to support capsule collisions in Chavelleh as well, but despite already having dealt with spheres and arbitrary hulls, this exercise still took me some time and left me unconvinced with regards to the reliability of my implementation. Wanting to have more insight into collision data, I quickly put together some visualizers and started testing scenarios involving different sets of bodies. While this immediately helped me iron out some bugs, the approach of coding every scenario in a single scene, in C++, also quickly revealed itself to be hard to scale - it took a lot of boilerplate and time to construct and compile.
Chugging Along
It’s been a while, as expected, since the last update. Somewhat confusingly, progress on the engine is still moving forward. If anything, its rate is not exactly satisfactorily, but that can be explained easily - relationships take time, effort and attention to maintain. Especially the fast moving ones.
Loading games
Nevertheless, Chavelleh can, starting today, load game DLLs. The ultimate goal is to reproduce the Q3 setup, with a virtual machine executing unsafe mod code and only resorting to DLLs on dev builds or with locally verified files, but this setup should dramatically increase the development speed. With proper approach to data and API versioning, the DLLs can be hot reloaded during gameplay, giving me the ability to reload the game without restarting the engine. I would like to implement a homebrew solution for this - Handmade Hero was already very instrumental in pushing me towards this solution and will probably serve as source for additional inspiration - just for the sake of learning something along the way and being able to be proud of making something cool, even if it eats through a lot of my spare time that I don’t have much of recently.
Back To Basics
Gitlab also uses VSCode as the web IDE, that’s neat.
Godot is a fantastic engine. The speed at which one can prototype off of very naturally modelled ideas is, I believe, unparalleled. The object-oriented approach to defining objects in the game world makes it very easy, especially for a programmer, to simply pick it up and start hacking. The fact that the engine is licensed under MIT has enabled me to learn quite a bit about their new extension system and even fix it in a couple places!