id Software's Usenet Group Posts Archive!

id_notes/John C/1998-02-04_1998-02-08



[idsoftware.com]


Welcome to id Software's Finger Service V1.4!



Name: John Carmack


Email: johnc@idsoftware.com


Description: Programmer


Project: Quake 2


Last Updated: 02/09/1998 01:34:06 (Central Standard Time)


-------------------------------------------------------------------------------


2/8/98


------


Just got back from the Q2 wrap party in vegas that Activision threw for us.



Having a reasonable grounding in statistics and probability and no belief


in luck, fate, karma, or god(s), the only casino game that interests me


is blackjack.



Playing blackjack properly is a test of personal discipline. It takes a


small amount of skill to know the right plays and count the cards, but the


hard part is making yourself consistantly behave like a robot, rather than


succumbing to your "gut instincts".



I play a basic high/low count, but I scale my bets widely -- up to 20 to 1


in some cases. Its not like I'm trying to make a living at it, so the


chance of getting kicked out doesn't bother me too much.



I won $20,000 at the tables, which I am donating to the Free Software


Foundation. I have been meaning to do something for the FSF for a long


time. Quake was deployed on a dos port of FSF software, and both DOOM and


Quake were developed on NEXTSTEP, which uses many FSF based tools. I


don't subscribe to all the FSF dogma, but I have clearly benefited from


their efforts.




2/4/98


------


Ok, I'm overdue for an update.



The research getaway went well. In the space of a week, I only left my


hotel to buy diet coke. It seems to have spoiled me a bit, the little


distractions in the office grate on me a bit more since. I will likely


make week long research excursions a fairly regular thing during non-


crunch time. Once a quarter sounds about right.



I'm not ready to talk specifically about what I am working on for


trinity. Quake went through many false starts (beam trees, portals,


etc) before settling down on its final architecture, so I know that the


odds are good that what I am doing now won't actually be used in the


final product, and I don't want to mention anything that could be taken


as an implied "promise" by some people.



I'm very excited by all the prospects, though.



Many game developers are in it only for the final product, and the


process is just what they have to go through to get there. I respect


that, but my motivation is a bit different.



For me, while I do take a lot of pride in shipping a great product, the


achievements along the way are more memorable. I don't remember any of


our older product releases, but I remember the important insights all


the way back to using CRTC wraparound for infinate smooth scrolling in


Keen (actually, all the way back to understanding the virtues of


structures over parallel arrays in apple II assembly language...).


Knowledge builds on knowledge.



I wind up catagorizing periods of my life by how rich my learning


experiences were at the time.



My basic skills built up during school on apple II computers, but lack


of resources limited how far and fast I could go. The situation is so


much better for programmers today -- a cheap used PC, a linux CD, and


an internet account, and you have all the tools and resources necessary


to work your way to any level of programming skill you want to shoot


for.



My first six months at Softdisk, working on the PC, was an incredible


learning experience. For the first time, I was around a couple of


programmers with more experience than I had (Romero and Lane Roath),


there were a lot of books and materials available, and I could devote


my full and undivided attention to programming. I had a great time.



The two years following, culminating in DOOM and the various video game


console work I did, was a steady increase in skills and knowledge along


several fronts -- more graphics, networking, unix, compiler writing,


cross development, risc architectures, etc.



The first year of Quake's development was awesome. I got to try so many


new things, and I had Michael Abrash as my sounding board. It would


probably surprise many classically trained graphics programmers how


little I new about conventional 3D when I wrote DOOM -- hell, I had


problems properly clipping wall polygons (which is where all the polar


coordinate nonsense came from). Quake forced me to learn things right,


as well as find some new innovations.



The last six months of Quake's development was mostly pain and suffering


trying to get the damn thing finished. It was all worth it in the end,


but I don't look back at it all that fondly.



The development cycle of Quake 2 had some moderate learning experiences


for me (glquake, quakeworld, radiosity, openGL tool programming, win32,


etc), but it also gave my mind time to sift through a lot of things


before getting ready to really push ahead.



I think that the upcoming development cycle for trinity is going to be


at least as rewarding as Quake's was. I am reaching deep levels of


understanding on some topics, and I am branching out into several


completely new (non-graphics) areas for me, that should cross-polinate


well with everything else I am doing.



There should also be a killer game at the end of it. :)