Article View: alt.games.quake
Article #75591Engine Changes in Q2: Masters of Doom, Daikatana
From: Veli-Pekka Tätilä
Date: Mon, 11 Dec 2006 17:40
Date: Mon, 11 Dec 2006 17:40
59 lines
4556 bytes
4556 bytes
Hi, I was reading the book The Masters of Doom the other day, which details the lives of the two Johns Carmack and Romero as well as their games like Wolf 3D, Doom and Quake. In general the book deals with tech topics a little vaguely but managed to explain concepts like binary Space partitioning and surface caching adequately enough. However, there was one particular detail in the context of the Quake 2 engine that made me curious as a fan of FPS games and a recreational programmer. Quote from the Masters of Doom: February 1998, he got what he had been waiting for: the Quake II code. It was the stuff that would enable them to put the completion of Daikatana into high gear. But when Romero opened the file, he took one look at the code and froze. Oh my God, he thought, what had Carmack done? <big snippage> The engine was completely different than what he had expected. All this time he'd had his programmers preparing Daikatana in a way that would make it easy to switch over to what he assumed Carmack's new engine would require. But it turned out that Carmack had trashed his expected direction and instead produced a structure of code that caught Romero completely by surprise. It certainly wasn't done to dupe Romero into a delay, it was just Carmack making his own idiosyncratic, intuitive leap-a leap that, once again, cramped Romero's grand designs. End quote. The above was especially vague and left me wondering what was the big hurdle in the Quake 2 engine compared to Quake 1. I'm guessing it is something architectural if it lead to major problems. I know very little about 3D engines, per se, apart from gaming experience, Duke3D's build and con files plus FraggleScript in Doom Legacy, so this is guess work. My number one guess would be that the engine was deeply and elegantly object-oriented as opposed to procedural. That might require a major architectural change. Particularly if it affected AI, that is in stead of a huge, explicit if, elseif, elseif, else control flow construct it woulde be done differently. That is writing callback functions for particular events that occur to the actors. Technically it could look more functional (a bunch of function pointers) or object-oriented namely inheriting a pure virtual base class to use the C[++] terms here. Another vague guess would be that the graphics in Quake 2 were more agnostic in terms of the underlying rendering system making the code more abstract and harder to understand initially. After all, Quake only did software rendering originally. But Quake 2 supported, as far as I can remember, software rendering, a subset of Open GL called mini GL, and Direct3D and or glide considering Voodoo cards were around (I used to have one myself). Well, hope someone here knows enough of the engine internals to answer this question. I could take a look at the source but its probably hard to get into and I might not find the answer after all if its something completely unexpected. So, thought I'd be lazy and ask here in stead, <smile>. PS: Just noticed this group is moderated according to the description though a little silent. To the moderator: if this one needs a Semi OT or OT tag, just lemme know and I'll fix that. -- With kind regards Veli-Pekka Tńtilń (vtatila@mail.student.oulu.fi) Accessibility, game music, synthesizers and programming: http://www.student.oulu.fi/~vtatila/
Technical Details
Message-ID:
<elk56p$8d8$1@news.oulu.fi>Path:
mbox-mo1.pugleaf.net!number1.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!t-online.de!news.tele.dk!feed118.news.tele.dk!news.tele.dk!small.news.tele.dk!uio.no!newsfeed1.funet.fi!newsfeed3.funet.fi!newsfeeds.funet.fi!ousrvr3.oulu.fi!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!number1.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!t-online.de!news.tele.dk!feed118.news.tele.dk!news.tele.dk!small.news.tele.dk!uio.no!newsfeed1.funet.fi!newsfeed3.funet.fi!newsfeeds.funet.fi!ousrvr3.oulu.fi!not-for-mail From: Veli-Pekka Tätilä <vtatila@mail.student.oulu.fi> Newsgroups: alt.games.quake Subject: Engine Changes in Q2: Masters of Doom, Daikatana Date: Mon, 11 Dec 2006 19:40:34 +0200 Organization: "University of Oulu" Lines: 61 Message-ID: <elk56p$8d8$1@news.oulu.fi> NNTP-Posting-Host: dsl-168-5.oulu.fi X-Trace: news.oulu.fi 1165858841 8616 130.231.168.5 (11 Dec 2006 17:40:41 GMT) X-Complaints-To: news@news.oulu.fi NNTP-Posting-Date: Mon, 11 Dec 2006 17:40:41 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2962 X-RFC2646: Format=Flowed; Original MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit