4 ms·
I think Quake's code represents a design methodology you almost never see in the wild. Essentially, Quake's code operates on the same principles that Apple's p
by i_c_b 15y ago
I think Quake's code represents a design methodology you almost never see in the wild. Essentially, Quake's code operates on the same principles that Apple's physical interface designs do (or perhaps singular programming language designs like Scheme or C).
Carmack, as dictator of id code (and thus id design) had the ability to say "we are not adding the following feature to our game because I don't like the compromises it will force in our technology and, thus, in other features we want to add down the road." It's basically as simple as that.
In almost all other organizations, someone holding the pot of money will trump the programming overlord at that point and say, "I don't care, XML is the buzzword this second, and all objects in the game need to be serialized to XML as web services - that's what the market is clamoring for right now" (or whatever the buzzword du jour is). And over time those political technical decisions add up to so much cruft that adding any new thing becomes a technical, jenga-style nightmare.
Not so with id's engines. I actually worked on beta versions of both Quake 2 and Doom 3 code bases while those games were in development, and one striking thing about getting updates from Carmack was his ruthless willingness to eliminate working, finished features / code if he didn't think the complexity or dependencies they introduced were worth whatever feature they added in the overall technical context.
Quake is what you get when a genius programmer who has mastery of his knowledge domains leads. Institutionally, there aren't too many other circumstances where similarly talented and sure-footed and, well, fundamentally, _right_ programmers get to specify requirements like that. I think the comparison to the Linux kernal is apt.
- jiggy2011 15y agoInteresting, I think you are right. When I first looked at the Linux source I assumed it would also be a monolithic jenga style mess since it was developed by so many different people with different motivations but I guess it must be a testament to Torvald's management/leadership skills. I suppose I am probably jaded because I work developing bespoke corporate software with relatively few users compared to Quake. Therefor each user has huge individual sway over the functionality/design even if they don't really get the nuaces of building usable software. For example they will request additions of buttons in nonsensical places because it helps their personal workflow but then somebody else will come along and use it then complain that there's too many buttons and it's too complicated "can we please make this more like the iPad?".. I wonder if there are any pieces of bespoke corporate software that aren't in fact giant piles of bloated dogshit? All the books on this subject recommend doing thorough requirements analysis but that doesn't really work when you have to deal with people who can't really articulate what they want and actually have no idea what might suddenly become important in the future. Plus you have to deal with corporate politics of people with different roles and places in the heirachy who want and need diametrically opposed things, people will also often have good ideas but they won't tell you them until it's too late because they are worried about contradicting their boss. It would certainly be refreshing to work with a Carmack but I doubt that I would have the focus or brainpower required to keep up!
- nosignal 15y agoThis is very interesting. I (yesterday, coincidentally) finished reading Masters of Doom, the book about id by David Kushner. While generally a good read, it had a very fanboyish tone towards both the Johns. It really portrayed Carmack as absolutely superhuman when it came to coding. Given the tone of the rest of the book I'd assumed he was exaggerating — it sounds like he wasn't after all, about that at least. I don't know C so I can't, let alone appreciate, the source he's released to judge for myself. Thanks for sharing.