Weekly post
November 8, 2025 • 4 min
- Implemented obelisk puzzle mentioned last post
extra_argsfeature added to Lua level trigger scripting system- isBullet support from lua files for level protos at top level only
- Visual tweak: now shape sides show their HP via stroke darkness for the nanovg shape drawing code -- it is absolutely determined, not relatively
- "v to toggle camera" feature added -- allows you to switch the camera to encompass a sublevel if enabled in the Lua level script for that level.
- Having issues where it doesn't toggle to the right position
- Had to fix InputManager to release keys properly for keys polled while simulating multiple update frames.
- For context: during simulation updates, keys can also be polled (for abilities for example). One way to check input is to check if
isKeyPressed, meaning was it just pressed (and wasn't also down last frame) -- good for instantaneous events, such as "v to toggle camera". The issue was that if you press a key and then release it, while lagging (causing accumulator to accumulate time and therefore do more update frames before rendering), it would make the key stay "pressed" (withisKeyPressedreturning true for every simulation update before the next render frame). This caused the "v to toggle camera" feature to oscillate the camera between toggled and untoggled, repeatedly doing something that should only happen once. On the other hand, if I change it to release the keys forisKeyPressedafter each simulation update, then polling of inputs after simulation frames (which is just part of normal game update) will see the key as released and no longer function. So, the solution was to push the context of the InputManager before doing simulation updates, then pop it after they are all done.
- For context: during simulation updates, keys can also be polled (for abilities for example). One way to check input is to check if
- Had to make a new RPC type to send level origins
- Fixed some spectator mode bugs
- Did a "preliminary playtest" on November 4 (preliminary to the November 18 one, though I may have to postpone that one now). I got good feedback and found a bunch of crashes which interrupted game flow too much to get feedback on level design really (mostly just core game feedback).
- Post-playtest (based on feedback):
- Made it show the mass of shapes on hover.
- Improved replay files a bit for transitioning between levels, but was unable to get the replay files recorded from the playtest to play back properly past the level transition due to bugs affecting player spawn location (players would spawn in wrong places if levels had multiple
pidentifiers for player spawn points). - Fixed memory leak from replays where it wouldn't
freePacketif not sending due to potential receiver being just a fake player - Constraint strength setting support for Lua UI (trying to get scoreboard UI for KoH to not have spurious constraint-solving errors)
- Improved issue where player teleports on client screen only on new level load
- Input file recording and replaying: now use seed saving on level load and using it to set the seed for the next level loaded
- Fixed player teleporting in level at spawn
- var-cpp library memory leak fix
modpatchpackage bugfixes (an Emacs package made with ChatGPT-5 Thinking). I use this package for editing patch files which are loaded by mods. I use mods to have separate Lua configurations intestmodule.lua, a file reserved for constants mostly, for debug vs release.- Fixing unit tests for input replay files and adding more