Given we are getting closer to DROD RPG 2's release, we probably don't want to rock the boat too much, however while developing on the engine it's clear we do really need to think about issues with DROD's dependencies and language version etc. I have this in my head right now so figured it was better to write down thoughts while I have them, even if we delay doing anything until after RPG 2's release.
DROD's github repo has two outstanding issues, so we might as well start there:
FMOD
https://github.com/CaravelGames/drod/issues/576
FMOD isn't open source, it's the only DROD dependency that isn't. Also, according to that issue, one of the other platforms has to swap it out for SDL_mixer anyway. Therefore it makes sense to me that we should consider swapping over. I don't know if we owe FMOD any money for using it in a paid product, if so then it probably makes sense to strip it out in time for DROD RPG 2's release.
Dependencies too old to build
https://github.com/CaravelGames/drod/issues/602
Two of the dependencies can no longer be built in the free versions of Visual Studio, they are just too old. Most (all? I haven't checked) of the dependencies have CMAKE available as an option to build them, so it might be worth taking a look if we can get the build script to use CMAKE as a way to build the dependencies.
But this also leads on to a more general concern about supporting old tools vs support from modern tools. At them moment we try to e.g. not use C++ 11 features, in order to support older compilers. C++ 11 came out in 2011, that's 14 years ago. While I can see the value in letting things potentially build easily on more systems, I think things can get so old that you eventually start to run into a new set of issues. 1) Modern IDEs, especially free versions for use by hobbyists, simply stop supporting older versions of various tech, making it much harder to get the code up and running by a new person. 2) When you look online for figuring out how to fix issues, more and more the solutions you find may make use of features you can't use in DROD's codebase.
I think there's always a tradeoff to be made between supporting the existing tech stacks of the old guard, and easier onboarding of new people that want to help out, and I feel like the DROD engine is increasingly falling on the wrong side of that tradeoff. Soon it will be the case that if somebody wants to help out with DROD development and build the game, they need to find tools that will support a tech stack that is older than they are!
Outdated dependencies
Some of the dependencies are no longer available to download on the internet, as the versions are so old and it's no longer recommended to use them. Updating dependencies is never as simple as you'd hope, I remember the issues we had with SDL_ttf and how an older version of Tom's New Roman had an incorrect flag that caused rendering issues.
However I do think that it is worth reviewing if some dependencies should have updating prioritised. For example, curl stands out to me as an issue, the version we have is over 10 years old and we this to talk over the internet, presumably for CaravelNet. The internet is a dangerous and scary place, I don't like the idea of our internet communication code being over a decade out of date! But there might actually be no real cause for concern.
-----
Back in 2017 I wanted to work on something in C++. I actually tried the DROD source first. This was before it was on Github. Well it was just simply too hard for a newbie like me, I had no idea how to get it to work. In the end I worked on something else and it went well, but it could have been DROD. Also, last year I got a new computer, and the truth is I have never been able to build it properly on this machine, I had to copy over the built dependencies from my old machine. To make it worse, on my old machine I can't actually build DROD anymore there either. I updated my Visual Studio there at one point to work on something else and something about the build tools or whatever was just incompatible with DROD and I simply couldn't build the source any more. It's only because of the new computer that I have been able to make PRs again and fix a load of bugs in the engine.
You may have noticed hyperme produces all of the DROD RPG 2 development builds in the private forum. That's no coincidence, when I build it, it mostly works but various things would crash the game frequently. I spent a while yesterday tracking one of those down and put in a PR, but it appears to be as far as I can tell a newer version of the standard library no longer putting up with something that was always wrong in the code but was simply not picked up by using an older version.
I am a little concerned about the impact for other platforms. There's been a bunch of linux users over the years having serious difficulty trying to build, and while slimm tomm has done great work maintaining a Mac build, it is slowly becoming more and more unstable, especially around importing and hold updating and I am a little concerned that nobody else will be able to help out there because it's too difficult to build.
[Last edited by kieranmillar at 01-11-2025 11:13 AM]