Quake Engine Indicators

https://news.ycombinator.com/rss Hits: 22
Summary

Nov 24, 2025 Quake Engine Indicators I was working on a bug in Chocolate Quake netcode. The issue was an edge case where starting two clients on the same machine resulted in the second one zombifying the first one. When the bug occurred there was no disconnection but the client could no longer move. Instead the screen would show an "indicator" looking like an unplugged Ethernet cable in the upper left corner. As I dug into the code, I learned there were more of these. Located inside pak0.pak and nested in gfx.wad are files TURTLE, DISC, RAM, and NET. I could not find anything about these "indicators" so I documented them here. TURTLEThe TURTLE indicator shows up on screen when the framerate goes below 10 fps. It is unlikely to have been intended for players but rather for people at id Software during development. Programmers could see where the engine was not fast enough. More importantly map designers could see if they had too many polygons in specific areas of their map. The TURTLE indicator can be enabled/disabled with command showturtle 1/0. The code is all in function SCR_DrawTurtle, where host_frametime is the time in seconds it took to draw the last frame. There is a scr_showturtle in Quake 2 source code but it does not do anything. The icon doesn't actually depict a turtle but a tortoise. A turtle swims in the water while a tortoise walks on land. RAM Quake does not render polygons using directly a texture and a lightmap. Instead it combines these two into a "surface" which is then fed to the rasterizer. After being used surfaces are not discarded but cached because the next frame is likely to need the same surface again. The RAM indicator is here to warn when the engine evicts from the cache surfaces that were generated and cached on the same frame. This means the geometry of the map forces the engine to operate beyond its surface cache capacity. Under this condition, the renderer enters a catastrophic "death spiral" where it evicts surfaces that will be ne...

First seen: 2025-11-27 17:38

Last seen: 2025-11-28 14:41