Quake Engine Indicators

Fabien Sanglard News

Summary

Technical documentation of four hidden diagnostic indicators (TURTLE, RAM, DISC, NET) in the Quake engine, explaining their purpose and how they help developers diagnose performance issues.

No content available
Original Article
View Cached Full Text

Cached at: 05/16/26, 03:34 AM

# Quake Engine Indicators Source: [https://fabiensanglard.net/quake_indicators/index.html](https://fabiensanglard.net/quake_indicators/index.html) Nov 24, 2025 Quake Engine Indicators --- I was working on a[bug](https://github.com/Henrique194/chocolate-quake/issues/59)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\. [![](https://fabiensanglard.net/quake_indicators/quake_640.png)](https://fabiensanglard.net/quake_indicators/quake_640.png)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\. TURTLE --- [![](https://fabiensanglard.net/quake_indicators/TURTLE.png)](https://fabiensanglard.net/quake_indicators/TURTLE.png)The*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](https://github.com/id-Software/Quake/blob/bf4ac424ce754894ac8f1dae6a3981954bc9852d/WinQuake/screen.c#L362), where`host\_frametime`is the time in seconds it took to draw the last frame\. There is a[scr\_showturtle](https://github.com/id-Software/Quake-2/blob/372afde46e7defc9dd2d719a1732b8ace1fa096e/client/cl_scrn.c#L412C30-L412C44)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 --- [![](https://fabiensanglard.net/quake_indicators/RAM.png)](https://fabiensanglard.net/quake_indicators/RAM.png)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 needed later in the frame\. Needless to say the framerate suffers greatly\. This was likely a feature intended for map designers to warn them of scenes going beyond the amount of surface cache memory Quake[provisioned](https://github.com/id-Software/Quake/blob/bf4ac424ce754894ac8f1dae6a3981954bc9852d/WinQuake/d_surf.c#L35)\. See[D\_SCAlloc](https://github.com/id-Software/Quake/blob/bf4ac424ce754894ac8f1dae6a3981954bc9852d/WinQuake/d_surf.c#L130)where thrashing is detected to learn more about it\. Alike the turtle one, this indicator can also be enabled/disabled with command`showram 1/0`\. DISC --- [![](https://fabiensanglard.net/quake_indicators/DISC.png)](https://fabiensanglard.net/quake_indicators/DISC.png)The*DISC*indicator[wraps HDD access](https://github.com/id-Software/Quake/blob/bf4ac424ce754894ac8f1dae6a3981954bc9852d/WinQuake/common.c#L1574)done via`Sys\_FileRead`\. It is unlikely it was used by developers to diagnose anything since its screen location overlaps with the TURTLE indicator\. It is just here to give feedback to players that the game is loading\. Because the icon is hidden when`Sys\_FileRead`returns, it is normal to see it flicker on the screen \(and it also looks kinda cool\)\. The code for this indicator is in[Draw\_BeginDisc](https://github.com/id-Software/Quake/blob/bf4ac424ce754894ac8f1dae6a3981954bc9852d/WinQuake/draw.c#L882)\. NET --- [![](https://fabiensanglard.net/quake_indicators/NET.png)](https://fabiensanglard.net/quake_indicators/NET.png)The*NET*indicator is displayed when a client has not received any packets from the server in the last 300ms\. This was likely aimed at players to help them determine how bad their connection was \(a distant server would easily have a 500ms ping in these dial\-up over PPP modem days\) or if they had plainly lost connection to the server\. The code for this indicator is in[SCR\_DrawNet](https://github.com/id-Software/Quake/blob/bf4ac424ce754894ac8f1dae6a3981954bc9852d/WinQuake/screen.c#L387)\. The NET indicator is present and active in Quake 2\. The code is still in[SCR\_DrawNet](https://github.com/id-Software/Quake-2/blob/372afde46e7defc9dd2d719a1732b8ace1fa096e/client/cl_scrn.c#L442)but the image is no longer in a wad\. It is stored in`pak0\.pak`at`pics/net\.pcx`\. All together --- Below, a terrible user experience where the frame made the engine thrash its surface cache, the framerate dropped below 10fps, and the engine last received packets from the server more than 300ms ago\. [![](https://fabiensanglard.net/quake_indicators/quake_all_together.png)](https://fabiensanglard.net/quake_indicators/quake_all_together.png) --- \*

Similar Articles

Building a 1997 Quake PC: Benchmarking Quake

Fabien Sanglard

A detailed technical analysis of Quake performance on various 1990s CPUs and configurations, comparing Intel, Cyrix, AMD chips, and memory types under DOS and Windows 95.

Building a 1997 Quake PC: Benchmarking Vquake

Fabien Sanglard

A detailed retrospective on building a 1997-era Quake PC and benchmarking the VQuake hardware-accelerated version of Quake, focusing on the Rendition Verite 1000 graphics card and its unique features including bilinear filtering and fullbright support.

Why WinQuake exists and how it works

Fabien Sanglard

A technical deep-dive into the historical reasons for creating WinQuake, a Windows-native version of Quake, and how it achieved performance close to the DOS version on Windows 95 and NT.

Building a 1997 Quake PC!

Fabien Sanglard

The author documents the process of building a vintage PC from 1997-1998 to play all versions of Quake, covering hardware choices like the Pentium MMX, 3dfx Voodoo2, and Socket 7 motherboards.