Random remarks:
It may be possible to set up the multi-game support as external plugins so that the whole program doesn’t need an update when individual game components are updated by dynamically loading the libraries using LoadLibrary() on Windows and dlopen() on *nix (at least on Mac and Linux, would need to check for the BSDs). This can be further combined with std::filesystem::exists() to ensure that support for the specific game is installed first.
To improve readability, we’ll want to wrap that code in a project-scope loader so we don’t need conditional compilation everywhere
Edit:
Looks like BSD is the same: https://man.freebsd.org/cgi/man.cgi?dlopen
Never messed with that stuff before so it’ll definitely take some research to figure out how to set it up.
