C++
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.
Enginedev insanity
I’m telling you, you can’t even begin to comprehend how utterly nuts this whole endeavour is and has been from the very beginning. One’s event horizon has to be microscopically shallow to somehow escape the obvious realization that this is just a lot of herculean work, for comparatively infinitesimal reward. Recently I started having second thoughts about creating a custom engine for what seems like a very minor title, but I’m way too deep into all of this to quit now.