In a GDC Europe talk recounting id Software’s early days, co-founder John Romero revealed ten core principles that led to the studio’s success creating Doom, Quake, Wolfenstein and more than 25 other games in five years with fewer than ten staff.
“Some of this will sound insane, but we were in our twenties and there were no limits,” Romero began, recalling the start-up developer’s experience making a Super Mario 3 demo for Nintendo, licensing the Commander Keen engine – a move Romero described as the beginning of the modern engine licensing business – and implementing smooth scrolling pixel-by-pixel in Dangerous Dave in Copyright Infringement – a discovery said led to “Id Software being born that moment”.
Revealing stories behind the iconic studio’s formative months and years – including wading through a river filled with snakes to make it to the office in order to code and creating Doom in homage to Dungeons & Dragons, Aliens and Evil Dead – Romero outlined ten key commandments developers should abide by in order to produce the best game they can:
- “No prototypes. Just make the game. Polish as you go. Don’t depend on polish happening later. Always maintain constantly shippable code. We just quantified what needed to be done and went about working on it.”
- “It’s incredibly important that you game can always be run by your team. Bulletproof your engine by providing defaults upon load failure.”
- “Keep your code absolutely simple. Keep looking at your functions and figure out how you can simply further. We made everything up to Quake in plain C, not C++.”
- “Great tools help make great games. Spend as much time on tools as possible. I wrote a tile editor in 1991 called TEd, for ‘Tile Editor’. It was used for 33 retail games.”
- “We are our own best testing team and should ever allow anyone else to experience bugs or see the game crash. Don’t waste others’ time. Test thoroughly.”
- “As soon as you see a bug, you fix it. Do not continue on if you don’t fix your bugs, as your new code will be built on a buggy codebase and ensure an unstable foundation.”
- “Use a superior development platform than your target. Doom was developed on NeXTSTEP workstations, which was superior to DOS.”
- “Write your code for this game only – not for some future game. You’ll be writing new code later because you’re smarter, and you won’t be limiting yourself by using old code. Try new things.”
- “Encapsulate functionality to ensure design consistently. This minimises mistakes and saves design time.”
- “Try to code transparently. Tell your lead and peers exactly how you’re going to solve your current task and get feedback and advice. Do not treat code like a black box.”