Weekly post
October 25, 2025 • 2 min
- Fixed crashes from new DLL Lua bindings
- Fixed "obelisk has spawned" text not showing on clients
- Recompiled libpng to fix link time warning about link-time code generation
- Made it so players lose their charged obelisks on out of mass
- Fixed some issues with obelisks becoming uncharged in mp
- Fixed replay issue where files with different suffixes get loaded even if suffix is fixed, i.e. if multiple players and suffixes match
- Spent ages thinking replay files were busted wh
en really it was because lib.isTruePlayer was being used without checking if the player was alive and not just disabled. So when replay was loaded the player would be there but disabled, causing an obelisk to spawn due to 100 mass being the threshold for debugging purposes so it would spawn an obelisk meant for when a player reaches a certain amount of mass. However in the original simulation the player was created later - that is, upon joining.
- So, I finally made a unit test for input replay files. This took a while since I had to refactor into a core DLL for the game for debug builds only, since the build wasn't able to accommodate another exe besides ShapeShift.exe being built since the Lua bindings DLL linked to that exe which is unsupported for having its Import Address Table filled in by the Windows loader automatically, so if the exe module of the host exe was different from the one the DLL is linked to, it crashes in a mtx_do_lock function (mutex lock). To figure this out I used windbg with help from ChatGPT 5 Thinking, since windbg is so hard to use.
- Then I also had to add support for a "modding API" - I needed a way to patch the Lua testmodule to return true for recording replays, and then separately, true for replaying replays, so that I could record and replay a replay as part of a unit test. I have been using ChatGPT o3 and 5 Thinking to accomplish a lot of these things rapidly.
- To get modding API patches to be easy to create, I am using an Emacs package, "modpatch", that I prompted ChatGPT-5 Thinking to create. The package is for generating patch files when I modify a file, instead of saving changes to that file.