The First Entity Component System
Marc LeBlanc walks me through how the development of Underworld I & II, System Shock, Flight Unlimited, and finally Thief: The Dark Project gave rise to the architecture we now call an "ECS".
At last year’s inaugural Better Software Conference, I gave a presentation called The Big OOPs. One of the central figures in the presentation was programmer-designer Marc “Mahk” LeBlanc, whom I credited with the key phrase, “a compile-time hierarchy that matches the domain model”.
That quote, and the chronology of Looking Glass’s entity systems, both came from an extended interview I did with Mahk as part of my research for the talk. At the end of that interview, Mahk and I both had the same thought: “We should have recorded this!” There was so much Looking Glass history, nicely focused specifically on the evolution of their entity systems, that it seemed a shame nobody would get to hear it.
So this year, we did the only logical thing: we both pretended we had never had the conversation, and conducted the whole interview again. This time, we recorded it.
And here it is! The full two-and-a-half-hour interview, covering everything from Mahk’s first encounter with Looking Glass1 during Ultima Underworld, up through his work on the core engine architecture for Thief: The Dark Project.
Bonus Unboxing
Because we could not find any corroboration posted on the internet, Mahk also unboxed a still-shrink-wrapped, original boxed copy of Flight Unlimited so we could verify it did, in fact, ship with a batch file that restarted the game to fix C++-induced memory fragmentation:



After installing the game directly from the original CD, Mahk found the following batch file used to run the game:
@echo off
set dos4g=quiet
Y:\cdrom\flight.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
:wacky
if errorlevel 44 goto done
if errorlevel 43 goto refuel
if errorlevel 42 goto credit
goto done
:credit
Y:\cdrom\credits.exe
Y:\cdrom\flight.exe +fromcredits %1 %2 %3 %4 %5 %6 %7 %8 %9
goto wacky
:refuel
Y:\cdrom\flight.exe +refuel %1 %2 %3 %4 %5 %6 %7 %8 %9
goto wacky
:doneTo quote Mahk, “If anything marks this as a genuine LG2 product, it’s the use of ‘wacky’ as a goto label.”
Mahk Links
I hope you enjoy the interview! If you’d like to check out what Mahk’s been up to since the Looking Glass days, you can find him at the following links:
Mahk’s YouTube: https://www.youtube.com/@algorithmancyTube
Mahk’s Twitch: https://www.twitch.tv/algorithmancy/videos
Mahk’s game design website: https://8kindsoffun.com
Until next time, have fun programming everyone, and I (and Mahk!) will see you on the internet.
— Casey
This is the first in a series of Big OOPs supplemental materials that I will be posting over the next several weeks. In addition to this interview with Mahk, there will be paper reviews of each of the major tranches that I used to reconstruct the history presented in the talk. If you’d like to get those delivered to your inbox when they’re published, you can take a look at our subscription options here:
Then called Blue Sky
“LG” here refers to Looking Glass, not the Korean conglomerate LG

