Even though by definition the codebase is changing all the time, I think there's still cool stuff to be done in the mod arena. I'd love to see stuff from this community on that front.

That being said, what does a mod look like for this game? Do you post a diff? A file plus some changes to make? A setup script? Do you go through that every time you want to try a new one?

Well, here's a process I whipped up in an attempt to figure all that out.

The best thing to do right now seems to be to override the world game mode with the mod. This requires the same single-line change for every mod.

Since you're replacing world mode, that means it's less "I want to make the Familiar explode if you look at it" and more "What if you used HMH to do... this!". But as more subsystems get solid, more code will move out of world_mode.cpp, thus the same strategy should, over time, be able to look more and more like "normal modding" (if desired).

Making this kind of mod looks like:

1) Make a new cpp file that implements UpdateAndRenderWorld() and PlayWorld()
(you'll also need a few other declarations at the moment to silence the compiler)
2) Replace the #include "handmade_world_mode.cpp" in handmade.cpp with an include for that new file.

I wrote a quick script that handles #2, such that if you have several mods, you just run "mod_build.bat mod_name" (mod_name being the new file name without .cpp), and then run the binary. It makes a binary for the mod, then returns all vanilla HMH code to a pristine state.

http://theinternetftw.com/code/hh_mod/mod_build.bat

(You might have to modify it a bit, it expects the script to be in the dir above /code, and thinks build.bat is there as well)

Also, here's a proof-of-concept mod that does all this stuff. Setting -O2 in build.bat is highly recommended.

http://theinternetftw.com/code/hh_mod/hh_mod_sraif.cpp

Anyway, it's not a big deal or anything, and the code was quickly thrown together, but hopefully a clear standing example of how simple this process is will get others sharing cool stuff.