Weekly post
November 15, 2025 • 3 min
- Unit test for input file replay involving cross-level portals is not working; will eventually fix this in order to fix crashes from last playtest (which was the first "preliminary" MP playtest).
- New resim method for MP implemented. It uses an "interference graph" to tell what should be resimulated when a server state update arrives on the client, and runs the resimulation in a separate thread. It seems to work well overall.
- Checked out Box2D 3.1.1 to see how much performance has improved. It is significantly faster than 2.3 (the one I am using), getting about 70 ms frame time with 250000 boxes in its "tumbler" sample modified to have this many boxes, in an optimized build. However, I will keep 2.3 since a lot has changed in 3.1.1 (way too much to port probably).
- Client resim rate improved (so it doesn't resim multiple times per frame if multiple packets arrive on a single frame).
- Drawing fixtures in camera only for performance
- Camera focus improved in MP but still has issues related to "v toggle camera"
- Started work on "lighting2", a new infinite homogeneous projection-based lighting method that uses a light buffer (FBO). ChatGPT-5 Thinking helped a lot with this, given this article's contents as a prompt. This is my third attempt at getting lighting that is a) performant enough, b) looks good, c) works in large environments (i.e. without floating point precision issues).
- Spent a lot of time getting "emissive lines" to show under shapes for their joints/spokes.