Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming IT Technology

Michael Abrash on Games Programming 129

An anonymous reader sent in an awesome article by Michael Abrash (If you don't know, I'm not telling). Tons of great bits in there, advice, anecdotes etc. Definitely worth a read if you are either a programmer, or a game fan.
This discussion has been archived. No new comments can be posted.

Michael Abrash on Games Programming

Comments Filter:
  • by Joe Rumsey ( 2194 ) on Thursday January 18, 2001 @09:22AM (#498784)
    I think you're confusing the fulfillment derived from overcoming a set of challenges with the fulfillment derived from knowing that you created something that saves lives or improves the standard of living in some way. Obviously, computer games don't save lives (if anyone cares to disagree with me on that one, I'd love to hear your argument),

    One counter argument to the notion that violent games like Quake cause violence is that such games actually give an outlet to violent tendencies, preventing them from manifesting themselves in everyday life. If you believe that argument, you could extend it to believe that games have prevented some people from becoming serial killers, thus saving lives.

    I doubt many people who write games believe either side of that. I know I don't. But it's what you asked for, an argument that games save lives.

  • No one needs to sell a programmer on the benefits (both personal and professional) of a job programming games (or of scientific programming). How about giving us a few urls discussing how one prepares for and ultimately lands a job developing games?

    As I sit in my cubicle coding financial crap, I feel like articles like these only aim at making fun of me! Don't just talk to me about the value of freedom when I'm stuck in a prison... liberate me!
  • by bliss ( 21836 )
    "There are two ways to answer this; one is by paraphrasing the man himself. Games programming is one of the last bastions of 'pure' code; you can write from scratch, and optimisation counts. I stopped being interested in programming when Windows was becoming ubiquitous; I don't like using other people's libraries. So as Obi-wan would say, games programming does transcend; from a certain point of view."

    I thought most people no adays who work as programmers usually had to use the libraries of others. I sure see that when I look at several hundered such libraries needed by various programs.

    "As for the fulfilment: the big software that keeps hospitals running is first and foremost accountancy software. I've written this sort of thing, and it's soul-destroying work. Knowing that it was used in a hospital and was helping keep people alive would have made the pill a little less bitter, but not by much."

    The tool is neutral. I see little way in which writing a program could destroy my soul unless I kept failing to be able to actually solve the problem and the compiler kept bitching at me and this continued over a very long time then yes it would destroy my soul. To be perfectly honest I am in CS not for the fun but for the possibility of a job. I have other interests which are more fun and interesting but I just don't have the nerve to approach them.

    "Are games trivial? Of course they are. How many people do you know who wouldn't benefit from reading a book or visiting a museum rather than fragging ass?"

    Not all games are FPS games. Many RPGs have a deep and meaningful plot which is very enjoyable and are usually my first choice for a game genre to look at when buying. Games are only made for a while and will eventually be no more. That old museum or book will be around in some form for probably longer than I am alive.

    "But much as I like reading and museuming, I still like crushing the weak underfoot, and consider that aspect of my character - and social life - to be one of the many traits that make me the wonderful human being that I am today."

    Was that a faceous remark? How are barbarism, savagery, violence, and acting like some hard ass navy seal officer good traits to propragate?

    "Is the absolute aim of each human to live longer, or to live better? If I wrote a game that brought enjoyment to millions, and pushed the envelope slightly so that future generations of games - and/or hostpital software - benefited from my insights into coding, then I'd feel pretty fulfilled."

    Well long life is a plus but having a crappy long life is nothing that I would welcome. The idea is to make sure you have the same quality of life that you have now and keep that quality as you extend age.

    PS. The lameness filter is really bad for quoted text and dosn't like anything that it thinks is a "troll". It must be fixed.
  • This is, by far, the most salient piece of advice Michael offers. Do what you love. If you don't love what you do, or stop loving it, do something else -- fast.

    I count myself lucky to have known so many of the seminal game designers "way back when." Michael, whom I met years ago when he was working with Dan Illowski's game company, is one of those folks who always seemed to be right-focused, and he inspired me to stay happy.

    I count myself fortunate to be able to say that I've always loved the things I have done for a living. But that was only because of a willingness to change what I do. When game-design turned into a drag, I found the law. When that stalled, I went back to engineering for a brief time. Now I'm doing both, and loving it.

    MIchael's observations will seem kitch and cliche to some -- but if you think its pointless, you are most certainly missing a very important point.

    Just do something you love ... or if you don' love what you do, do something else until you find it.
  • Yes, but remember that in worst case binary search can degrade to O(n) if the tree is unbalanced. To ensure quick search the binary tree must be balanced (AVL tree).
  • For those of you really interested in 3D games such as Quake, you may want to check out id's [idsoftware.com] collection of source code [idsoftware.com]. There you can find the source to Quake, Linux Doom, and Wolfenstein 3D.
  • reminds me of a guy i worked for who told me he used to be an engineer at motorola or something up in dallas... his team found a way to make some feature on cell phones speed up by 1/10 of a second or something like that. saves billions of dollars for the megacorp, but what does it do for the engineers? not much.

    eudas
  • I found a reference to the "It's Great To Be Back" as being a short story published in 47, but I can't find a book anywhere that contains it. Does anyone have any leads on where it may be on the net or book?

    Thanks
    Glutious
  • by amnesty ( 69314 ) on Thursday January 18, 2001 @09:25AM (#498792) Homepage

    When I tell people that I'm a Computer Science major, their first reaction is that I'll probably make lots of money. Regardless of the truth of that statement, it saddens me that people think of that first. Even many of my peers are in this program because they think it will be a ticket to a high paying career, even though they hate what they are doing.

    So its incredibly refreshing to see an article like this. This reminds me why I chose computer science -- because I love it! Its in my blood! Call me a geek, but binary search is beautiful (log n!!). I can't stop reading about this stuff after school and on weekends.

    It almost seems like Abrash really enjoyed his time with game programming, but wanted to 'do the right thing' and go into "a software field with deep structure and long-term challenges-something more significant, difficult, and ultimately rewarding." But in the end, his love for games and graphics programming won out.

    Thank you for this inspiration, Mr. Abrash!


  • For Team Fortress 2 they have, but for HL it's mostly a mix of Quake/Quake2 engine code. If nothing else it saved them time to work on the content.
  • Games programming is one of the last bastions of 'pure' code;

    don't believe the hype, I had fairly recently a short stint at a games development company (whom I will not name) and nowadays pure coding doesn't seem to be the case anymore.

    I should know, we had to use an IMHO sucky gaming engine just because our publisher wanted us to, and we wouldn't have offered a contract if we offered to write our own engine (which IMHO would have been a zillion times better than what we were forced to use).

    Nowadays games programming is getting closer and closer to assembly line programming, it's all milestones, milestones, milestones, using pieces that you can buy off the shelf as much as possible to minimize publisher's exposure (your team tanks ? who cares, the publisher still has the license to the engine you are using, while if you were developing from scratch, they wouldn't have anything).

    IMHO (again) games programming used to be fun and 'pure', now for many developers it's as rewarding as sucking rocks through a straw, I mean, to get into games programming (I wanted to see it first hand) I had to take a significant pay cut, work nearly twice as many hours, and have far less freedom in my technical decisions than I had at any other company I worked in: after a while I figured it was not for me, and found a much much more rewarding (financially and professionally) job elsewhere.

    Before buying in the hype, please do yourself a favour and research how the games industry really is nowadays. While there are some fun software houses to work in, the likelyhood you're going to end up in one of them (especially as your first job) is not that high.

    While some of what's posted there is mostly flames etc. reading Fatbabies [fatbabies.com] will give you at least an idea of the flip side of the coin.

  • They might be fulfilling to the programmer, but that does not necessarily mean that games programming is the highest form of programming.

    In addition to the errors in this statement that have been pointed out by others, also note that he said that games push the limits of hardware (700 Mhz processors and 3D accelerators) more than most other kinds of software. In other words, games are not a higher form a program, but they do consume more of the computing resources than most other categories of program.
  • "the 'definitive' FPS's are Quake 3 Arena and Unreal Tournament"

    I don't know about this... I don't consider Q3 or UT to be definitive shooters at all. The definitive modern graphic engines maybe, but that was the whole point of their development and release, I always thought; to spend all the time making a great engine so that OTHERS could spend their time instead making great games... like Quake III engine has led to such beautiful games as FAKK2 and American McGee's Alice, because they didn't have to spend all their time writing a kickass graphics engine. I think we will see more of this in the future.. we live in an age of specialists.

    "Valve focussed on playability, story, and fun in HL"

    Absolutely... because they didn't have to write the engine from scratch... as others can now do with the Q3 and UT engines. I expect to see a lot of incredible games come out over the next year or two based on these (and other) engines.

  • Not everyone plays the games 24/7. I consider myself a gamer, but I play in moderation. I balance out the free time I have (I work in IS so that's very little free time) between, family (except my in-laws), friends, hobbies (mountain biking), games, etc...

    But I can say that playing games drastically improves hand/eye coordination, and games like Myst (puzzle type games) help improve problem solving.
  • Could it possibly be less expensive to just use faster hardware than spend time/money on programmer's to optimize code.

    The entire Java industry is based on this assumption. Check back in 5 years or so to see whether it's correct or not.

  • Keep looking for new, better approaches, and be ready and willing to change the model constantly as you learn more - or even throw it away entirely

    Some "old" stuff just won't die [amazon.com], it'll live forever.

    Brooks and Abrash are my heroes in computer programming.

  • www.everything2.org:

    Gate A20
    (thing) by Merlin83 Thu Jul 20 2000 at 14:26 utc

    A20 refers to system address line 20 on the address bus in IBM-compatible PCs.
    8088 processors, when referring to address lines greater than A19, would wrap around to the first address line. Some programmers made use of this 'feature' in their code. When the 80286 came along, with it's larger address space, lines above A19 existed and so the wrap around 'feature' no longer worked, and the processor would simply address higher areas in memory (those in the HMA - the Higher Memory Area.)

    There is an option in BIOSes these days called 'Gate A20'. The purpose of this option is to restore the system to the state it was in the 8088 days, ensuring that addresses above 1MB of memory actually do wrap around, as they did before, thus ensuring that older programs would still work. It's a bit of a useless option really, since the programs that did use this feature have surely been superceded by newer programs, but it's there nonetheless.

    For a more detailed explanation, see http://www.smsc.com/main/appnotes/an612.html
    ****
    I don't get it either. But my guess is that the twist is that if you need this instuction to invoke virtual memory or something you've already exceeded the 256bytes.

    /Patrix
  • by Stiletto ( 12066 ) on Thursday January 18, 2001 @08:12AM (#498801)
    I consider Mike Abrash my personal hero. His writing inspired me to get into graphics programming. He has a simple way of writing, and he makes it a pleasure to follow him thorough the complex concepts he writes about.

    Mike's "Zen of..." books should be on any graphics programmer's bookshelf.

    It's kind of sad that he now works for Microsoft, but I guess it's good for MS--if nothing else it proves that they CAN hire talented (and old-school) coders.

    His tips on the second page are golden! Particularly:

    Get past the abstractions and know what your code does. Profile in many ways: profilers, NULL drivers, bracketing key code with timing calls, breaking into the debugger at random and seeing where you are. If you don't do this, you're guessing.

    Knowing what to optimize matters as much as knowing how to optimize. Otherwise, you'll optimize the wrong thing, and end up with really fast slow code.
  • I'd have to say that Michael Abrash was my hero when I was growing up .. I read all his books, zen of assembley, zen of assembley optmization, zen of graphics programming, and the classic Power Graphics Programming (one of his lesser knowns, written in 1989, which I believe was the first book to discuss mode-x?) ...

    He changed the way average programmers thought about hardware. For anyone who dosen't know, michael abrash espoused 100's of algorithims and assembley techniques in his books which were non-intutitive uses of the hardware and language -- but which ran dramatically faster. And he made some great games in the progress ... Doom ? :)

  • Its amazing how facts can get so twisted. :P
  • No, it's "I Won't Work", or "I Want Whiskey". Honestly, you had a better class of blockhead in days gone by...

    BTW, you're in a forced labour camp already, you just don't know it.

  • by Metal Machine Music ( 255620 ) on Thursday January 18, 2001 @08:50AM (#498805)
    > games cover a huge range of technologies-graphics, physics, modeling, scripting, AI, networking, databases-more than any other kind of software I can think of. What I finally realized was that, for me at least, game programming is the sweetest spot in all of software development.

    They might be fulfilling to the programmer, but that does not necessarily mean that games programming is the highest form of programming. Don't get me wrong, I like a Quake deathmatch with the rest of the office as much as the next guy, but to say that games programming somehow transcends other software is wrong.

    Surely it's much more fulfilling to say that you created the software that runs a hospital which saves people lives, or that we sent man to the moon on one of your programs. Compared with these games seem just a little trivial.
  • I have a spot for those in my source tree. :-)

  • by Anonymous Coward on Thursday January 18, 2001 @08:55AM (#498807)
    No, it isn't even a little bit sad that he's working for Microsoft. He's enjoying it. Just get over the stupid obesession with Microsoft.

    As Carmack says, "Check your assumptions".
  • by LightningTH ( 151451 ) on Thursday January 18, 2001 @08:58AM (#498808)
    I'm a game developer working on the Open Source Genesis3D [genesis3d.com] game engine for a new version coming out.
    It has always been my dream to do some type of programming that was constantly a challenge as I tend to become bored very easily. There is always some challenge to game programming as you do your best at something then have to do even better next time around. You are constantly trying to out perform the best out there and constantly pushing the computer to it's limits with the latest games.
    It can be a great field to be in but getting in is the difficult part as along the way you are viewed as a game programming wannabe and most people don't even make it over the "write a simple game" hurdle. Even after getting into the area you have to prove your worth against others at or possibly above your level of knowledge. Reading a ton of tutorials doesn't always help as you have to break away from the tutorials sometime and take your own steps out in doing a game or an area of a game. Alot of people fall down at this point too and never get back up because they decide it is too hard and don't really understand what is going on so they continue on the tutorial path or just quit all together. For those that break away from tutorials and understand what is really going on to make the game run can great some good games. From there it is a matter of finding a game company to take you in. Of course you would want to get into a company that is constantly using the latest things and this isn't always easy either.
    The road is long but can be very enjoyable for those that have the patience, always want a challenge, and have fun with their job.
  • You slashdotted Penny Arcade!!! Gah!
  • I think the goal of the contest was to demonstrate that you can still have a game in minimal resources, i.e. you have to concentrate on gameplay rather than on graphics or sound or whatever (things that take up lots of space). Since this guy couldn't imagine a game that didn't start by going after high memory, he was missing the point of a minimalist contest.
  • by dmorin ( 25609 ) <dmorin@@@gmail...com> on Thursday January 18, 2001 @09:00AM (#498811) Homepage Journal
    Remember this challenge? Sort of the defining moment for a code optimization metric. I spent a long, long time following in the footsteps of that series of articles. (In short, the challenge was pretty much "make Conway's Life go as fast as possible"). There's a moment in code optimization where you get to experience the true epiphany of hacking - version 1 takes 15 seconds, version 2 takes 13 seconds, version 3 takes 12 seconds....and then suddenly, as if in a dream it comes to you....and version 4 makes that leap to something like 2 seconds and you revel in it.

    I have no idea if I explained that like I wanted to. But I know what I meant.

  • > Call me a geek, but binary search is beautiful > (log n!!). Binary Search is not that beatiful. Why don't you use hash tables?? They're pretty much more beautiful... :)
  • by Slak ( 40625 ) on Thursday January 18, 2001 @09:35AM (#498813)
    I don't like using other people's libraries.

    *Pu-lease*. It's attitudes like this that I find sad. Are you telling me that you'd rather re-invent string manipulation functions than use the standard ones?

    As far as "Games programming is one of the last bastions of 'pure' code", there's plenty of 'pure' code going on in academia - witness the rise of Beowulf clusters. There are places in industry which focus heavily on code optimization - Simulated Anealing at Intel, etc.

    I take umbrage with 'pure' code. There is more to a program than code - design and maintenance are important parts to the equation. In the latter, I would argue that game programmers are fairly lazy. Those soul-destroying accountancy programs (generally) are more maintainable than a game. Games (especially closed source ones) are not (or rarely so) designed to last. Such is the nature of the industry.

    My perception (admittedly based on little information) is that game programmers tend to be arrogant pricks who tend to subscribe to two theories:

    1. If I didn't write it, I won't link to it. This goes directly to your comment about other people's libraries.
    2. They do not seem as willing to learn from lessons from other "programming industries".
  • fluffluffflufflufffluffluffflufflufffluffluff

    I completely agree. The near-last bullet about using your right brain: "go wild, listen to that little voice inside" made me cringe. It was like some Oprah Winfrey moment, or a page from one of those little "Life's Little Book of Quotes" crap that they sell near the cash registers at bookstores.

    ---
  • by ShadyG ( 197269 ) <bgraymusic@gm a i l . c om> on Thursday January 18, 2001 @09:38AM (#498815) Homepage
    It's so refreshing to see a prominent games developer advocating such engineering principles as architecture and design. It may seem odd to some -- natural to others -- but the very brightest game programmers I have been able to find care nothing for engineering. Any hint of process or structure means restricting creativity and stifling innovation.

    There's a similar sentiment in the hacker community I have witnessed in open source projects. I've participated in a few, and I inevitably get blank stares when I ask for an SRS or architecture document so my components blend well and extend the current structure elegantly. Nevermind when I ask where in the source tree to drop my UML diagrams. I just ask that for kicks nowadays :)

    In the business world, no one gets paid to write code. We get paid to ship software, and I've found that regardless of their attitude coming into the project, everyone is delighted when we ship a solid product on time and within budget. It's so rare a thing in this industry that coders get simply giddy at the thought of telling their friends they actually did it.

    From my experience, a realistic estimation and budgeting system and thorough engineering process is the number one most effective perk in terms of retaining happy programmers.

    -- ShadyG

  • He says, "games are pushing the envelope harder than almost any other kind of software-what else does a consumer need a 700 MHz machine with a high-end 3D accelerator for?" This pretty much sums up the motivation of the 'Average Consumer' in picking out a PC, and supports my belief that PC users play games on their 1 GHz PC's and Mac users do work on theirs -- It's also why PC users constantly whine about the 'high prices' of Macs -- if I weren't making my money back one-hundred-fold on my hardware investment, I'd bitch about it too. Just something to think about. BTW I use six computers, and they run everything from OS9 - OSX - MS95 & Linux so I'm not partial -- well actually I am ;)
  • by mizhi ( 186984 ) on Thursday January 18, 2001 @09:45AM (#498817)
    You have to be comfortable in the basics at least. Actually, to do well in any area of computer science, you have to be generally good at math, not necessarily a master, but you still proficient and if you run across something you don't understand, you need to have the ability to sit down and teach yourself. IE, I know basic linear algebra, when I run across something that requires a new skill, I sit down with a text book and acquire it. When I read Abrash's book "Zen of Graphics Programming", I remember thinking to myself about the difficulty of the math (I was in late middle school, early high school), but after working through it, it's kinda neat to see what you can do with numbers. And Abrash is one hell of a programmer and thinker. He and Donald Knuth are two of my favorite CS guys.
  • Of course, java runs about as fast as C++ nowadays...
  • My perception (admittedly based on little information) is that game programmers tend to be arrogant pricks who tend to subscribe to two theories:
    • If I didn't write it, I won't link to it. This goes directly to your comment about other people's libraries.
    • They do not seem as willing to learn from lessons from other "programming industries".
    Not at all the case in my experience.

    Point 1 hasn't really been possible since the days of DOS, and even back then game programmers seemed more than willing to use someone elses library to figure out whatever weirdass soundcard the system had and play the sound, or play back full screen video etc.

    Point 2 might be true in that some may feel their code doesn't need to be maintainable (keeping code maintainable has many lessons from other industries to learn) but not in my experience. You have to factor in that most game programmers are aware of many things that heralded breakthroughs such as BSP trees and know that they were not invented by game programmers. These things are floating around fully documented in academic tomes and other industry just waiting for a game programmer willing to learn a lesson or two. Quaternians, FFTs, Bezier/spline patches, natural language parsing, scripting languages... heck, just look at the list Abrash posted "graphics, physics, modeling, scripting, AI, networking, databases" and ask yourself 'how much of that was invented by game programmers'.
  • I would hasten to point out that Abrash spoke to the reason in his article. Frequent, positive feed back. NL is not really in that category for most people. It's a deep problem with progress often made in better model representations as I understand it. I am no expert by any remote stretch on it, but I do dabble in NN, GA and the derived expert systems. Even those don't have what most people see as results often. After you couple them to the opponent in Q3, then the progress shows up.

    I think the perspective is the thing. Getting an extra 4 fps on the engine wouldn't turn my crank as much as finding a better, smarter pathing algorithm for the opponent, but I know a few coders that would be in situation nirvana if they got those extra 4 fps, even if the engine was already at 120+ fps. :-)

    If we didn't have different hot spots in our ambitions, we'd just be writing a bunch of engines with bad computer opponents, wouldn't we?

  • Gimme a few days to find my copy of doom ... I'm fairly ceartin the later editions mentioned him.

    OD

  • Yeah, maybe Final Doom, because that was released around the time of Quake II. A lot of companies these days put their entire staff into the credits, even those who did not work on the game. Final Doom was an expansion-pack on top of DOOM V1.8, which was released before Abrash joined Id around the time of Quake.

    That's how I remember it, anyway, and I have done a fair bit of business with the boys at Id.

  • Yeah, I'm having trouble getting qcrack to work which is whats holding me up :)
  • by Anonymous Coward

    Head to blitzbasic.com [blitzbasic.com], download the demo and get started :)

    3D due out mid-2001, so get learning with Blitz 2D now!

    This Spam is over...

  • Yeah, but because of the way you solved the problem you now have the gloves for use on other problems - a "reuse" situation.
  • I don't disagree but regarding your comment on Joe Schmoe, that's true of anything.
  • And it's very possible that he won't get to do that optimisation. Do a little research: XBox is an _idea_ that has been very successfully sold. The reality will be more of a letdown than PS2. Microsoft is an extremely inefficient, adversarial corporate culture and some of Abrash's assumptions ("XBox will not change. Ever") are doomed because in the constant infighting someone's going to change the rules. His attitude would be great at a startup- or working with OSS hackers. He's not doing that, and if he cannot form political alliances and scheme he's going to accomplish squat at Microsoft.

    I think it's safe to say that it _is_ sad that a guy who clearly enjoys the pure act of programming will be forced to either spend most of his time politicking or be steamrollered: it's like subjecting an artist to Dilbert hell. To MS, the guy is more of a symbol than a functional team member: Microsoft is 'team' backwards with the guts ripped out (and replaced with 'fosorci'). There are much better things Abrash could be doing. He is wasted in that place.

  • *Pu-lease*. It's attitudes like this that I find sad. Are you telling me that you'd rather re-invent string manipulation functions than use the standard ones?

    Actually, yes. Back in the good old days of 1990, I was working as a C programmer. I started a new job (working in DOS), and was given the most appalling libraries for screen manipulation to work with. Eventually, writing my own (for other areas as well) was the only way forward. Then I saw what was required for programming in Windows 3.x, and sort of lost interest. I don't want to imply that these experiences or typical, or that I'm a hard-code junkie who livez on the edge, but I'd prefer - any day - to use my own libraries rather than those of others. Of course, if I took up serious programming again today, I'd probably be forced to change my mind. I've no idea about the extended instructions in 286 assembler, let along PIV instructions.

    I take umbrage with 'pure' code. I apologise, and withdraw the term. I shouldn't have used it. I meant code that was solely written by one person, who knew exactly what it did and why it was written to do it that way. I realise that this is no longer a practical view, in games as much as anything else.

    Basically, my opinions, I have just come to realise, are sadly outdated. Back when I worked as a programmer for a living, I would use other people's code, but only if I could talk directly to them. There was no web and email wasn't nearly as ubiquitous at the time, so I was limited to code from people whom I knew (a lot of whom were better programmers than I). But if I used their code, I considered them to be co-authors of whatever I was writing.
    To encapsulate: I was inaccurate, and my point was lost in my inaccuracies; you touched on part of that point in your comment on the disposable nature of game code. (This is probably no longer true but) if you write something yourself that does its job and goes out into the world (or is used by six people you know) then you've got something out there that is wholly your creation, and will be there as long as it's useful and not supplanted by something else. Granted, my Space Invaders the Text Adventure will never achieve world domination, but that wasn't its intent. It was something I wrote myself, to share with whomever wanted it. No-one would have thought the program cheapened if I'd used other libraries in its construction, but if I did I would have felt that I deserved all the credit for the program.
  • Half Life is based on the Quake 1 Engine. For details look at id's licensing page for their various engines.

    Makes it even more amazing considering that engine is now GPL'd and underscores your point completely, gameplay is king. I think the fact that a freely available Half-Life mod (CounterStrike) is now reigning king of multiplayer, at least by server count. The last time I checked, there were over 3000 Half Life servers in my list, with a little over 2000 Q3 and a little over 1000 UT servers. Thats not to say that someone is going to come up with an even better mod to one of those games and dominate the multiplayer scene in the future, but it sure makes for some interesting points right now.

  • I know the feeling. Know what happens here, though? Version 1.0 goes out and the customers say "Wow, that's pretty slow." Then version 2.0 adds new features and the customers say "That's even slower." Then the bosses come to you and say "How do we make it faster?" and suddenly performance is the priority. If you're lucky, they want performance so badly that you even get to be creative, rather than just doing the usual things to speed it up.

    I once said to a boss "Exactly how fast do you want it? I mean, I'll go lock myself in my office and put my optimizing hat on and I'll give you lightning. It'll be hard to follow the code and probably pretty unstable, but that sucker'll fly." That helps set boundaries on the expectations. :)

  • If you had original Quake, you would have agreed with me on Half-Life being based on that engine. Compare the weapon-bobbing between Q1 and Half-Life: the same. Try typing in "killserver" in the console during a game in HL. Unlike Q2 (at which point it drops to the console with "Server was killed."), nothing happens. What's the extension for model files? Right, .mdl, and not .md2 like in Quake2. What protocols are supported for multiplayer? Incredibly, IPX as well as TCP/IP are supported in HL (Q2 only supports TCP/IP, while Quake1 supported IPX as well in the original DOS version). The only similarity I see between the HL engine and the Q2 engine is how you seem to drift when standing on moving platforms (in HL, it's most noticeable on tracktrains).
  • >Binary Search is not that beatiful. Why don't you use hash tables?? They're pretty much more beautiful... :) shut up! thats not the point.
  • by rde ( 17364 )
    "But much as I like reading and museuming, I still like crushing the weak underfoot, and consider that aspect of my character - and social life - to be one of the many traits that make me the wonderful human being that I am today."
    Was that a faceous remark? How are barbarism, savagery, violence, and acting like some hard ass navy seal officer good traits to propragate?


    The remark was not facetious. You know as well as I do that when I'm hurtling through as castle, rocket launcher in hand, that I'm being neither barbaric nor savage. I'm not hurting anyone (some pride, perhaps), but all I'm doing is using my computer to interact with others. This is one aspect of my social life; I'd be a different person if I didn't play computer games. Whether that person would be better or worse is a subjective question; the answer would inevitably be 'it depends'.
  • Most of what you say makes sense. But Abrash optimizing DirectX code doesn't help EVERY game, anymore than EVERY game runs on Windows. DirectX optimizations aren't going to make Linux Quake3 run faster. This is the tragedy of "proprietary"--it means everybody loses except the proprieter.

    -Paul Komarek
  • Obviously, computer games don't save lives (if anyone cares to disagree with me on that one, I'd love to hear your argument)...

    Actually, computer games do save lives in that they provide income and health benefits to a large populace in the electronic entertainment industry. That same multi-billion dollar industry also saves lives in the general populace by contributing to the economy at large. (Recall that there is a strong association between a nation's economic strength and its citizens' life expectancy.)

    So, games do save lives, but in order to see the fact one must be willing to examine indirect economic effects.

  • Interestingly enough, a video version of the talk (in very bad quality real video..but the audio is good enough to hear what he's saying) has been available for months on Gamasutra. I remember watching it maybe back in October.

    Abrash is a pretty good speaker, and I think the talk comes off a bit better in the video than as an article. The video is linked off of the page the article is now on, but here's the link anyway [mfi.com].

  • by Chris Siegler ( 3170 ) on Thursday January 18, 2001 @10:41AM (#498837)

    Learn by doing. Thinking is great, but the only way you ever really learn something thoroughly is by doing it-and particularly by finishing it, which is harder than it sounds because shipping software is an unnatural act

    This is so true. Just visit Sourceforge and check out projects that die between working and complete. There are so few programmers who can actually finish a project. More so than pure programming ability it separates the great from the merely competent programmers.

  • IIRC Abrash has always worked for Microsoft. He just took a leave of absence when he went to ID because Microsoft _really_ likes Abrash and enjoys keeping him happy. When he felt he'd had enough of ID (not necessarily in the bad way;) he just went back to Microsoft and walked back into his office...

    Or so I've been told. :)
  • Too bad there isn't a 'stupid' mod tag.
  • History lesson: Abrash did not work on DOOM.
  • by geomcbay ( 263540 ) on Thursday January 18, 2001 @10:47AM (#498841)
    Your post is not only total bullshit, but its insulting to Michael Abrash as well.

    Michael Abrash worked at Microsoft before he worked at id Software. He went back to Microsoft after he left id Software (after Quake 1). He has worked there for YEARS. Do you think he would put up with working there for years if he was just a 'symbol' and not getting useful work done? Suggesting such is like slapping the guy in the face.

    Your other suggestions indicate you're not familiar with the voracity in which Microsoft has been getting into gaming over the past few years. DirectX 8, other than being a Windows-only API, is GREAT. There are very few things that can be complained about (other than cross-platform support). This isn't DirectX 3 anymore.

    Furthermore, Microsoft knows what it is doing with the X-Box. It WONT change. It might produce an XBox 2 in 5 years, but that's standard console practices these days.

    Microsoft, no matter how evil you might portray them as, is smart enough to know that a console isn't a PC, and the X-Box has been handled accordingly. That's partially why every known game developer (and his/her mom) is currently signed up as an XBox developer, the only notable exceptions being Sony (for obvious reasons), Nintendo & its 2nd parties (for obvious reasons), and Squaresoft (who have been rumored for a long time to become an X-Box developer -- if they do that's a major coup and loss of de facto exclusivity for Sony).

  • I wrote an ASM `life` 15 years ago with DEBUG. On a 4.77 MHz 8088 it ran 80x25 at about 1.5 fps. And it was very primitive: read the display memory and calc'd all the cells.

    Sure, I could have used a regen buffer and skipped the empty cells. But then it would run like it does on my 500 MHz machine -- too fast, just a blur. Lame excuse :)
  • I agree completely. Total waste of time.

    I also think that it's pretty easy to work at Microsoft, then Id, then Microsoft again - always on ultracool projects, always optimizing assembly code - and think the games industry is wonderful.

    If he worked at any other games houses he wouldn't last five minutes with that "I'm so happy happy happy" attitude. I'm talking about the kind of place where they restructure your code (badly) without telling you, write everything in spaghetti and expect you to interface to it, and where they use raw-pipelined RISC processors instead of the programmer's dream that is the superscalar x86.

    The games industry sucks. That's my outlook, from my position deep within it. I'm getting out ASAP. But ... if I had Abrash's cushy jobs, I think I'd be pretty happy too.

    It's like Marie Antoinette saying "Let them eat Cake".

  • Gloves? Tarps? The obvious solution was to get a WalMart employee to carry it to the car for you ;)
  • I don't think he implied that everyone in the industry would die, but it would put a lot of people on the streets if the market vanished overnight. Programmers, publishers, distributers, designers, artists, sound techs, retailers, management... The industry supports a lot of people. EBX, Software Etc, Babbages, Eidos, Activision, ID, Microprose, Epic, Valve, Monolith, all come to mind, maybe even Wizard's of the coast. And on a local scale, Gameworks! Even Microsoft would take a decent hit. Chip makers would be hit as one of the driving forces behind their 'Need for Speed' would be gone. I don't think it would be a huge hit for them, but the likes of NVidia would suddenly have share in a vapormarket.

    I'd say on the order of a couple million people at least.

    Some would die. Guaranteed. 2 or 3 million people worldwide suddenly without jobs. There aren't enough open positions for which they'd be qualified to do.

    But I agree with you, it is a little bit indirect. ;)
  • If you had Abrash's cushy little jobs you'd probabaly be as happy as he is.
  • What he fails to remember is that most games don't need a 700 MHz processor at all. Modern PC games companies are the worst at optimizing. You couldn't make a PS2 game without spending some months optimizing code, but most PC games are just spaghetti C with a few C++ classes thrown in and no fast algorithms in sight.

    That's why they need 700 MHz processors. If the games programmers did their jobs properly users would be fine with a 200 MHz chip.

  • I don't have any URLs, just some advice.

    If you like code structure, and if you think design is important, don't go into the games industry. 99% of programmers in this industry are unreconstructed C hackers who avoid using "switch" if a bunch of "if" statements will do.

  • But I can say that playing games drastically improves hand/eye coordination ...

    Yeah. Sure. Hey, you wanna hear another one?

    Time: 4:17pm
    Place: Somewhere in the suburbs. A bedroom.
    Characters: 1 13 year old. 1 mom.

    "This? Um, this is Playboy."

    "I know what it is. But why do you have it?"

    "The articles. I read it for the articles."
  • I feel your pain, but you do realize the amount of computation involved in per-polygon collision detection? Its not that game programmers don't want to do this, its that even high-end computers (let alone the 'average' computer out there) just doesn't have the CPU available to calculate this in real time with a reasonable number of models onscreen.

    Keep in mind that because of graphics card advances, the number of polygons used has been going up as well, so per-polygon collision detection is also a moving target.

  • Hey, ever seen the part in Dune (DeLaurentiis/Lynch production, not the Sci-Fi series) where Gurney and Paul fight with the shields? How about if the bounding model is as grainy as that? It'd be a lot less hard to calculate collisions with such a low polycount, but the functionality would still be there!
  • by copyconstructor ( 124033 ) on Thursday January 18, 2001 @11:00AM (#498852)
    I myself am on the verge of spending some serious cycles on NL programming (adding 'smart' bots to a MUD) and am curious what about NLP he didn't find satisfying. Seems to me NLP is one of those 'deep knowledge areas the industry is moving to'.

    Well, at least in all the games I've ever played the AIs are stupid as fu**, especially when it comes to language, so obviously somebody needs to look into it.
  • Having spent 10 years programming in a Hospital I have yet to save 1 single life or improve a single medical procedure. Almost all the work is managing insurance and finances, in a non-profit hospital. Not much different than any other business. db
  • Didn't see Dune, but I see your point.

    I'm sure something like that will come to pass in the near future. Engines that already use progressive mesh algorithms that scale the model down for the current processor could adapt that technology to be used in the collision detection as well, so maybe you have a polygon that scales down to 5,000 polygons for display, but 50 polygons for collision detection. Still a lot more expensive than doing a rectangular box vs rectangular box check, but within the realm of possibility.

  • Well, the design and coding principles advocated by Abrash simply apply to any field where you need performant and robust software : games, scientific computing, but also operating systems (don't forget that your OS does *all* what your apps don't want to do), real time systems, etc.

    And as some others said, this article is not particularly brilliant. It can be useful to young programmers eager to develop their first game and seeking for advice, but in the end, it is mostly the common sense you acquire after a few years of experience in (serious) software development.

    That being said, I do have a lot of respect for Mike Abrash, especially for his work in Quake and BSP trees. :)
  • As a layman, I ask the following:

    Could it possibly be less expensive to just use faster hardware than spend time/money on programmer's to optimize code. I would imagine that at some point, code optimization becomes too expensive an alternative.

  • Abrash's experiences in the PC games industry are not typical. The PC games industry at large generally doesn't bother to optimize code. That's why you're still getting 5,000 polygon scenes on machines which can theoretically push 50,000 polygons per frame. Direct3D doesn't help.
  • For some good commentary from people in the industry, check out VoodooExtreme [ve3d.com], and more specifically their Ask Devs [voodooextreme.com] articles. Many of them deal with getting a job in games programming.

    As for what skills you will probably need:

    • Math! Learn linear algebra, basic newtonian physics, some more math, taylor series, euler integration, etc.
    • Learn either D3D or OpenGL. Learn how the 3D rendering path works. While you may not need this directly for a job (i.e. you are working mainly on physics or animation code), it is always beneficial.
    • Experience ... write lots of sample code in your spare time. The only way to get good at it is to do it.

    If you do pick up on all the above, just remember: The typical games programmer doesn't make a killing with paychecks (of course, this can vary wildly) and work 80+ hour weeks (many would call this conservative). Be warned! ;)
  • by yerricde ( 125198 ) on Thursday January 18, 2001 @12:19PM (#498859) Homepage Journal
    In many games, polygonal objects are stored at several levels of detail; objects close up are drawn with more complex models. If you always use the lowest LOD model for collision detection, people will notice how much better it is than a cubic bounding box but will probably not notice a couple cm difference in the detail silhouettes.
    Like Tetris? Like drugs? Ever try combining them? [pineight.com]
  • by scorbett ( 203664 ) on Thursday January 18, 2001 @11:08AM (#498860) Homepage
    Actually, computer games do save lives in that they provide income and health benefits to a large populace in the electronic entertainment industry.

    Oh, come on now. Are you telling me that everyone in the electronic entertainment industry would die if suddenly there was no more demand for new computer games? I think that most of the people in that industry would be talented enough to roll into related areas rather than slowly starve to death due to lack of income. For example, a graphics programmer could certainly get a job doing engineering graphing software (something I have done, in fact I got that job because I had experience writing games and doing graphics programming), or a game logic programmer could move into the AI field, etc, etc.

    So, games do save lives, but in order to see the fact one must be willing to examine indirect economic effects.

    Sorry, but it's a little too indirect to actually make the claim that it "saves lives" that way. Certainly it puts bread on the table for a lot of people, but I'm sure none of them would die if it all went away. Interesting argument, though.


    --

  • Knowing games programmers as I do, Abrash probably quit NLP because he couldn't hack it. I mean, there's plenty of optimization Gods out there, but only one Noam Chomsky.
  • I remember reading his articles religously in DDJ--talk about some incredible stuff. They got me to the point where I wrote a real-time free directional 3d texture mapping engine in Pascal! (With a bit of inline assembly of course.) Of all people, I'd have to say that he's had the most profound effect on my coding style; what an edge.

    Seeing his name on the X-Box team was a sort of blast from the past. It may even pursuade me to set aside my contempt for M$ and buy my first console since the nintendo.

  • by Bonker ( 243350 ) on Thursday January 18, 2001 @09:02AM (#498868)
    While this article was great in terms of general programming knowledge, it seemed to neglect a detail that many game developers sadly overlook. A game is *nothing* without playability.

    Mr. Abrash spends quite a bit of time in the article talking about the best ways to go about programming a game. This is obviously something that comes through in his designs, since the certain software company he developed for spent more time on their game engine than they did level design. This tendancy is even stronger in today's game market where the 'definitive' FPS's are Quake 3 Arena and Unreal Tournament. Both of these spent much, *much* more time on engine development and programming than they did on making their games enjoyable.

    Don't get me wrong... Q3A and UT are loads of fun, but compare them to the playability of Half-Life, a little older game that is based (IIRC) on the Quake 2 Engine. There's a lot of custom code in HL, but the majority of it is still a big Q2 total conversion. Valve focussed on playability, story, and fun in HL, rather than code and this shows. I'll play Q3A for a little while, especially if I'm waiting on a long download, but I've lost entire weekends to the plot details in Half-Life.

    Programming can be and end unto itself, and even *should* be in some circumstances, but its only half of the equation when building a video game.
  • Abrash is a great guy who has done great stuff but that article was total fluff. If it weren't for hero worship it would never have been posted. If Joe Schmoe had written it, it would still be languishing on some never visited web page. I got to the end and kept looking for a link to the next page because I couldn't believe that was all there was too it. I think that article was kinda like the geek equivalent of the post-game locker-room interview. "Well, we just gotta get out there and do our best and give it our all and work a team and whichever teams wants it more will get it!"
  • by scorbett ( 203664 ) on Thursday January 18, 2001 @09:04AM (#498871) Homepage
    Surely it's much more fulfilling to say that you created the software that runs a hospital which saves people lives, or that we sent man to the moon on one of your programs. Compared with these games seem just a little trivial.

    I think you're confusing the fulfillment derived from overcoming a set of challenges with the fulfillment derived from knowing that you created something that saves lives or improves the standard of living in some way. Obviously, computer games don't save lives (if anyone cares to disagree with me on that one, I'd love to hear your argument), but writing one can be extremely fulfilling in its own way. As Abrash states in the article, game software covers a surprisingly large number of usually separate fields of knowledge, and you have to be a bit of an expert in everything in order to pull it off. I used to be into games programming myself (as an amateur, not a professional, and certainly not on the same level of quality as Abrash), and I found it more challenging than most of the work I've done as a professional software engineer since then. Not only more challenging, but a hell of a lot more interesting and fun as well.

    As you say, surely some people would take more pride in writing software that runs a hospital, but for some personalities, writing a really cool game can be just as fulfilling, if not moreso, even if the usefulness of the end product in the long run is dubious at best.


    --

  • by rde ( 17364 ) on Thursday January 18, 2001 @09:05AM (#498872)
    ...but to say that games programming somehow transcends other software is wrong.
    There are two ways to answer this; one is by paraphrasing the man himself. Games programming is one of the last bastions of 'pure' code; you can write from scratch, and optimisation counts. I stopped being interested in programming when Windows was becoming ubiquitous; I don't like using other people's libraries. So as Obi-wan would say, games programming does transcend; from a certain point of view.
    As for the fulfilment: the big software that keeps hospitals running is first and foremost accountancy software. I've written this sort of thing, and it's soul-destroying work. Knowing that it was used in a hospital and was helping keep people alive would have made the pill a little less bitter, but not by much.
    Are games trivial? Of course they are. How many people do you know who wouldn't benefit from reading a book or visiting a museum rather than fragging ass? But much as I like reading and museuming, I still like crushing the weak underfoot, and consider that aspect of my character - and social life - to be one of the many traits that make me the wonderful human being that I am today.
    Is the absolute aim of each human to live longer, or to live better? If I wrote a game that brought enjoyment to millions, and pushed the envelope slightly so that future generations of games - and/or hostpital software - benefited from my insights into coding, then I'd feel pretty fulfilled.
  • I'm work for MS (Yeah, yeah), in XBOX development. Per-poly detection is a real problem because of the sheer number of operations. We'll probably end up using a lower poly count to do the shadow volumes and the collision (with a higher poly count for the characters themselves). The biggest problem we run into is the memory to store it all- in the latest generation of video cards, it's bad to try to access the polies the video card uses, which means you have to duplicate polies. 64M is a lot, but it's still tough to fit everything in it.
  • by dR.fuZZo ( 187666 ) on Thursday January 18, 2001 @11:22AM (#498877)
    This paragraph made me smile.

    Aim high, think big. Right now is a particularly good time for ambitious game programming, because so much more is possible now than ever before, thanks to CPU performance and 3D accelerators.

    You know -- that's as opposed to five years ago when CPU performance was at its lowest in over ten years.

    I mean, you know, I dig the point and all, but won't it always be a good time for ambitious game programming?
  • Obviously, computer games don't save lives (if anyone cares to disagree with me on that one, I'd love to hear your argument)

    A number of simulations actually provide decent training, and better training can save lives. While Starcraft may never save a life, Flightgear might be used as the basis of a commercial simulator, and make better pilots. So it could happen.
  • Half life's rendering routines were updated when Q2 was released, but most of the network and game logic is descended from Q1.

    I could run across the street and ask for all the specifics, but it's raining out and it makes me miserable. :)
  • could you give the parent of this post a +1 funny?
  • Doh! Teach _me_ to make assumptions. Clearly anything about Abrash being a 'symbol of Id-like coolishness' was nonsense, and I was quite wrong there.

    Everything else I stand by. Abrash _is_ sunk in a deeply adversarial corporate culture that will get in the way of his work. Microsoft _doesn't_ know what they're doing with XBox and _won't_ resist the temptation to try to drive revenue with upgrades. It is not a technical issue. It is a marketing issue. And Abrash is far from the only absolutely brilliant developer marking time at Microsoft without accomplishing much. If he is getting stuff actually done that's more than most of their trophy coders, and speaks volumes about Abrash's savvy and capacity to work within the system. I applaud that, it is the mark of a well-rounded and rather tough personality- though yeesh, some employer he picked.

    I'm sure _my_ opinion of Abrash's employer doesn't concern him one iota. Maybe he is enough of a pragmatist to happily concede that much of what I say is true, like the .NET chief architects and developers who recently bailed out of MS to try and compete against it as a startup, and were MS-lawyered into submission. _Those_ guys did not have an exaggerated opinion of the ability to get things done within Microsoft- why should you or I consider Abrash to be stupider than them? Maybe Abrash just is a 'big company type' and happy at MS regardless.

  • Games programming and scientific programming can often be similar in spirit. If people are interested in either learning to program or want to push their skills elsewhere, they should try working in science, especially in the bio arena where programmers are needed....

    -Moondog
  • I don't think that's what he was saying at all. He didn't get close to saying "Doom/Quake is the most important program ever written". First off, he puts the clause "for me at least" in there to avoid making a general statement about programming for everyone, which is smart.

    My take on it was he's saying that game programming gives a programmer the most experience with the most diverse fields within programming. Working on something like Oracle is a very tightly focused effort. I'm sure there are people at Oracle that spend months or years trying to speed up tiny little chunks of code. It's important, it is probably what those people love doing, and it certainly pays well. But it doesn't exactly show them the width and bredth of the world of programming. It's not the outcome or product that he's judging, it's what goes into making that product.

    -B
  • Yeah, it's interesting to be in a world where the majority of generalist programmers rely on the improvements in hardware, there are a true 37117 of coders who are willing to take something small and focus on it as deeply as possible.

    Personally, I preferred contests that said "You've got 256 bytes. Fit what you can into that. Coolest thing wins.", and people would write phong-shaded toruses and floormappers and stuff.
  • by ShadyG ( 197269 ) <bgraymusic@gm a i l . c om> on Thursday January 18, 2001 @09:14AM (#498896) Homepage
    This guy hit it right on the head when he spoke of changing your perspective from time to time to work the actual problem rather than just your existing design.

    I've been doing this subconsciously for years, but I didn't really take note until this past Christmas. My gf and I were at Walmart buying a tree, and it was pretty friggin' sharp. To carry it to the car, I needed gloves. No gardening gloves were to be found in the garden department, so my gf asked an employee where the tools were, thinking they might be there. I instinctively re-asked the question in a different way: "Where can I find gloves suitable for protecting my hands from the tree spines?" We found then in sporting goods. The tool department was a proposed design, but analysis led me back to the core problem that needed solving.

    Of course when I got home, I realized that I didn't need gloves at all. The problem was scratched/punctured hands, not an explicit need for gloves. On that same trip, we had already purchased a tarp to lay over our carpet. I could have wrapped the tree in it and not needed the gloves. So I actually failed to address the original problem to determine the most efficient solution. Still learning after all these years :)

    Back to software engineering, this new focus has been of tremendous help in developing product requirements, architecture, and design. I feel much more confident that the product my team develops is actually providing a useful service to the customer, rather than usefulness being accidental to the cool technology we invented.

    -- ShadyG

  • Abrash gave the light side. Now I'd like to give you the dark side of the games industry:

    (1) Game coders are expected to work burn-out hours. The 60+- horu week si a NORMAL week. It gets worse at push tiems like ebfore shows.

    (2) Game coders get periodically pulled off of realwork to code "demos" that mean neothign but are apprently just vital to show at trade shows.

    (3) Game coders are, by sotfware industry standards, highly underpaid. this i particualrly sad in that the ones who survive are by and large very fine, if sometiems not formally trained, engineers. Some game companies hav held out royalties as a compensatio nbut generally you only get thsoe as long as you continue to work for the same company. (See tabiulity commenst to follow.)

    (4) The game industry is highly unstable. Combine the fact that it is a boom/bust busienss with the fact that management is generally fairly incompetant and what you have is an industry where companies go from being industry darlings to out of business in 2 to 3 years. (Anyone remember looking glass? Thats just a recent example.)

    (5) Typical coding siutation: you have no control over budget, you have no control over schedule, you have no control over functionality and you are totally responsible for the success of the engineering effort. In point of fact, when a proejct fails, it is typical game company behavior not to ask why but just to fire everyoen associated with it. (Ironicly the one palce the fault msotlikel lies-- upper management, aren';t the oens who get canned.)

    (6) Viewable/playable milestones. Because management is fudnementally incompetant they are afraid to commit to decisons. Theya re also afrid of their own judgement in people, and thus do not trsut their engineering team to deliver. The result is a schedule that forces the engioneers to get little tiny peices of functionality working and "playable" at a time.

    As any good engineer knows this is a recipe for disaster in the form of monolithic, redundant, bug laden code.

    (7) Design changes. Again, thanks to managemetns inabilti to commit, once they start playing with thsoe peices likely as not they will start doubting and changing their minds. They will make snap decisions that "this isn't fun" before enough of the game is there to tell anything. And then they wil lstar tchanging your spec... without changing your budget or delivery dates.

    SO if you enjoy working too hard for too little money in a situation where you are forced to work in ways that make no engineering sense and upon which, at the end of the day, your job depends. The game industry is it.

    Abrasj hasn't really experienced tyhe game industry. he's experienced workign in one, ver special place-- ID. I'm sure if we coudl al work for John Carmack game programming woudl be a dream-- but we can't.

  • Abrash didn't write Doom.

    Doom was Carmack and Compnay. ID's first game after Wolfenstien3D. Abrash joined ID just for Quake3. Before then he was a writer.

    I enjoyed his Zen of optimization and he made man ygood points. Mode X was interesting but ultimately not all that useful.

    His attempt at "fast" 3D in Dr. Dobbs though was pretty pitiful. Nowhere near as fast as rend386 on my old 386.

  • Hold on, before you pack up and leave your cubicle for... well... a different colored cubicle, be sure to hear from the opposing side. Here's an article posted back in '99 on Why Being a Computer Game Developer Sucks. [slashdot.org]

  • Wrong. Abrash did not work at all on Quake 3. He worked on Quake 1.


    Torrey Hoffman (Azog)
  • by dmorin ( 25609 ) <dmorin@@@gmail...com> on Thursday January 18, 2001 @09:15AM (#498908) Homepage Journal
    Ooo! OOO! There was a game contest on rec.games.programmer once to write a game in 256 bytes. I remember, like, within the first day somebody had written "You losers, that's impossible, it'll take me 220 bytes just to pull the A20 line high and get into virtual memory." (Or something very close to that, it's been a long time). Talk about missing the point.
  • by Shotgun ( 30919 ) on Thursday January 18, 2001 @09:20AM (#498910)
    but my boss tells me that we have 2yrs of work to do by July. Optimize code? Hell, as soon as something looks as if it might possibly work one day it is ripped from my hands, stamped with Version 1.0 and shipped to the customer. I'm told that 'we'll fix it later', but there is another list of features that are slated for the next release (December).

    I do code as the author suggest at home on my own projects. I'll rework a program at the drop of a hat if I see or hear of a better way. But, at work, and I'm sure this holds for the vast majority of programmers, code is considered optimized when it works correctly on 95% of a regression test set.

  • by JWhitlock ( 201845 ) <John-Whitlock&ieee,org> on Thursday January 18, 2001 @09:22AM (#498912)
    Whada ya mean "It's kind of sad that he now works for Microsoft"? Yes, that means he won't be working on Quake X, but Quake is doing fine on it's own. Yes, it means he may have to be a little secretive on what he is doing, but you know he's working, and that the results will be spectacular. When Penny Arcade [penny-arcade.com] has a hard time getting one of them to hate the XBox, you know Microsoft is doing well, and the gaming world should send another big thank-you card to Abrash.

    Plus, if he can just spend a little time optimizing the DirectX code, then EVERY game benefits. You know that if he finds any new tricks, he'll report on them, and even the free software world will benefit. Check out this link [ddj.com] at Dr. Dobb's journal for a taste of what he is doing at Microsoft, and why it is important.

    Like he says in the article, the important thing is to do, not to think, and there's a lot of optimization to do at Microsoft.

Get hold of portable property. -- Charles Dickens, "Great Expectations"

Working...