In Project Firefly, we are moving away from retro-style gaming, and also trying to maintain ports to old hardware like Playstation 2, PSP and others. This allows for the use of new technologies, that were not available in those platforms.
First, we are now using CLang as default compiler for C++ code instead of Gcc, and the build system is now based on CMake instead of Qt’s QMake. We also are using C++ version 23, that includes lots of improvements to ease the development.
In out initial prototypes for the new game, we moved from SDL 1.2 to 2.0. But in the meantime, SDL 3 was released, and is now in a very fast release cycle, thanks to the support from Valve, that basiacally pays for the whole development of this library. So, to keep up, we moved to SDL 3.4, and already have some benefits, like the support for Wayland on Linux.
One of the issues we had when trying to implement new stuff like infinite-maps (that can grow as you keep adding more data into it) and slopes, was that the original engine was not made to go beyond simple tile-based collision. To solve that, we are now using the Box2D library a kind of a standard in modern 2D platformers. Sadly, while it does help ina lot of cases, the library does bring its own issues, for example, you will always slide on slopes, so the developer needs to check the collision for the normal vector and adjust linear speed in the object (player or npc) to canceal the forces. To be absolutely honest, I am disappointed the library itself does not include ways to solve those issues, leaving it for the developer to implement those hacks in their own code. So it is possible we end up moving to another one, like Chipmunk2D.
For the maps, another industry standard is Tiles Editor (TBD).
