Slashdot Mirror


Michael Abrash on Games Programming

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.

129 comments

  1. Re:Sweetest spot? by Joe+Rumsey · · Score: 3
    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.

  2. But can I get paid? by worldwideweber · · Score: 2

    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!

    --
    w o r l d w i d e w e b e r
    1. Re:But can I get paid? by mdavids · · Score: 1

      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.

    2. Re:But can I get paid? by The+NT+Christ · · Score: 1
      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.

      --

      I didn't pay for my operating system either

    3. Re:But can I get paid? by djohnsto · · Score: 1
      For some good commentary from people in the industry, check out VoodooExtreme, and more specifically their Ask Devs 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! ;)
      --
      Dan
    4. Re:But can I get paid? by mdavids · · Score: 1

      You're right. This is about the third article I've read in as many days telling me how lucky I am to work in this industry. Actually I burned out of this industry (not real programming to be honest - web stuff) a couple of years ago and haven't been able to face it since.

      It's particularly ironic that this comes from someone who's been put out to pasture at Microsoft, where they specialise in competantly flogging the dead horses of genres developed years ago (probably by the same people they've poached and have set up in front of their production line).

      Who's going to pay you? Ninety-nine percent of the time it's someone who's only concern is the bottom line, and who is only willing to place safe bets on adequate reworkings of ideas that have gone before. This applies to any work, not just games, not just IT. So you get your consolation from the technical challenges, which if you're able to ignore the big picture will probably save your sanity whether you're a games programmer, coding financial crap, or a burger flipper.

      The only people I've seen who are happy with wage slavery are the ones who approach it like a crossword puzzle, and aren't in the least bit perturbed that what they are doing is at best pointless, if not wasteful and destructive. It pays not to be a big picture person.

      If you're concerned about working in freedom, check out these people. I happen to be one of them. Work with others to liberate yourself.

    5. Re:But can I get paid? by Toddarooski · · Score: 2

      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.

      --

      "Do you expect me to talk?" "No, Mr. Bond. I expect you to die!"

  3. Ideas by bliss · · Score: 1

    "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.

    --
    The death of one man is a tragedy; the death of a million is a statistic --Joseph Stalin
    1. Re:Ideas by rde · · Score: 1

      "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'.

  4. Just do what you love. . . by werdna · · Score: 2

    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.

  5. Re:Great Article by origin2k · · Score: 1

    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).

  6. 3D Game Source Code by KennyLB · · Score: 1

    For those of you really interested in 3D games such as Quake, you may want to check out id's collection of source code. There you can find the source to Quake, Linux Doom, and Wolfenstein 3D.

    --
    ~Ken
  7. Re:Sweetest spot? by eudas · · Score: 1

    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

    --
    Blessed is he who expects the worst, for he shall not be disappointed.
  8. What book is the short story in? by jeremyphillips · · Score: 1

    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

    --
    Jeremy
    "Opinions are like assholes; everyone's got one..."
  9. Great Article by amnesty · · Score: 4

    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!


    1. Re:Great Article by uzioriluzan · · Score: 1

      > 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... :)

    2. Re:Great Article by konsept · · Score: 1

      >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.

      --
      "if a person with multiple personalities threatens to commit suicide, is it considered a hostage situation?" -someone
    3. Re:Great Article by wildwood · · Score: 1
      go into "a software field with deep structure and long-term challenges...

      For some reason, when I first read that, I mis-read it as a softball field, and got really confused. I mean, structures on a softball field are _dangerous_...

      --
      normal(adj)- people who don't sit on slashdot all day wondering why everyone else isn't building robots [DECS]
  10. Re:Programming and Playability by rattid · · Score: 1

    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.

  11. Re:Sweetest spot? by MarcoAtWork · · Score: 1

    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 will give you at least an idea of the flip side of the coin.

    --
    -- the cake is a lie
  12. Re:Sweetest spot? by sv0f · · Score: 1

    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.

  13. What's wrong with making a fun engine showcase? by Wraithlyn · · Score: 1
    "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.

    --
    "Mind, as manifested by the capacity to make choices, is to some extent present in every electron." -Freeman Dyson
  14. Re:Sweetest spot? by DukeofURL · · Score: 1

    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.

  15. Re:Optimizing Code by sql*kitten · · Score: 2
    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.

  16. Mythical Man-Month by sufehmi · · Score: 1
    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, it'll live forever.

    Brooks and Abrash are my heroes in computer programming.

  17. Re:OK I didn't get it, please explain by patrixx · · Score: 1

    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

  18. Bright Guy, Great Author by Stiletto · · Score: 3

    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.

    1. Re:Bright Guy, Great Author by Anonymous Coward · · Score: 4

      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".

    2. Re:Bright Guy, Great Author by Chris+Johnson · · Score: 2
      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.

    3. Re:Bright Guy, Great Author by Paul+Komarek · · Score: 2

      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

    4. Re:Bright Guy, Great Author by m00t · · Score: 1

      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. :)

    5. Re:Bright Guy, Great Author by geomcbay · · Score: 3
      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).

    6. Re:Bright Guy, Great Author by JWhitlock · · Score: 1

      True, Linux Quake3 will run no faster. But most PC games are geared for the Microsoft platform - now they may be able to be seamlessly ported to the XBox. DirectX has been a very popular interface, such that even cycle-hungry games like Quake have been able to discard the stand-alone OS (remember the days where you needed a boot disk to play the best 20% of PC games?) If Linux hackers could come up with a interface as sucessful as DirectX, then Linux gaming would be in better shape. DirectX is a win, for the user, the game programmers, and, yes, Microsoft.

    7. Re:Bright Guy, Great Author by Chris+Johnson · · Score: 2
      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.

    8. Re:Bright Guy, Great Author by JWhitlock · · Score: 3
      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 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 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.

  19. Abrash Influence by OmegaDan · · Score: 2
    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 ? :)

    1. Re:Abrash Influence by OmegaDan · · Score: 1
      Gimme a few days to find my copy of doom ... I'm fairly ceartin the later editions mentioned him.

      OD

    2. Re:Abrash Influence by The+NT+Christ · · Score: 1
      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.

      --

      I didn't pay for my operating system either

    3. Re:Abrash Influence by OmegaDan · · Score: 1

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

    4. Re:Abrash Influence by The+NT+Christ · · Score: 1

      History lesson: Abrash did not work on DOOM.

      --

      I didn't pay for my operating system either

    5. Re:Abrash Influence by andr0meda · · Score: 1

      Abrash is one of my heroes too.. I bought his Zen of Code Optimalisation, and a whole bunch of (old even) DDJ's after that.

      I know he's right on everything he says in his little "I'm back" article here, but it's nothing I don't know allready.. But I really do hope we can get to see him kicking butt in the algorithmic alley soon again, too :) This is just awesome news in a sense, a bit scary too, but it's gonna be fun I'm sure :) I'm glad he's back

      Now if you'll excuse me.. i got some of that printing to do..

      --
      With great power comes great electricity bills.
    6. Re:Abrash Influence by OmegaDan · · Score: 1

      His name is listed on the credits screen when you exit ...

    7. Re:Abrash Influence by The+NT+Christ · · Score: 1

      Which version?

      --

      I didn't pay for my operating system either

    8. Re:Abrash Influence by catseye_95051 · · Score: 2

      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.

    9. Re:Abrash Influence by Azog · · Score: 2

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


      Torrey Hoffman (Azog)

      --
      Torrey Hoffman (Azog)
      "HTML needs a rant tag" - Alan Cox
  20. Yep, and Quake 1 *ONLY* by James+Foster · · Score: 1

    Its amazing how facts can get so twisted. :P

  21. Sweetest spot? by Metal+Machine+Music · · Score: 3

    > 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.

    1. Re:Sweetest spot? by Slak · · Score: 3

      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".

    2. Re:Sweetest spot? by The+Cookie+Monster · · Score: 1
      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'.
    3. Re:Sweetest spot? by rde · · Score: 2

      *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.

    4. Re:Sweetest spot? by StoryMan · · Score: 2

      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."

    5. Re:Sweetest spot? by dbeast · · Score: 1

      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

    6. Re:Sweetest spot? by scorbett · · Score: 4
      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.


      --

    7. Re:Sweetest spot? by rde · · Score: 4

      ...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.

    8. Re:Sweetest spot? by Llew42 · · Score: 1
      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

      Re-read his article. He's not claiming that programming games is inherently better than any other sort of programming; he's simply stating that, for him, it is what he wants to do, and what he does best. For him, it is the "sweetest spot". (Personally, I have to agree, but that's beside the point.)

      If you program the system that runs a hospital, and you enjoy doing it, good. That may just be your "sweetest spot"--but not everyone's going to want to do so.

      Also, to state that games are a little trivial compared to sending someone to the moon is roughly equivalent to saying that Beethoven is a little trivial compared to Eli Whitney. Art has a very important role in society, and many people feel that games can (and do) approach, at least, the level of art.

      --
      -Llew "I've wrestled with reality for years, and, I'm proud to say, I won" Silverhand
    9. Re:Sweetest spot? by CrazyBob · · Score: 1

      More spiritually fulfilling? Most likely not. But more involved, demanding and challenging--undoubtedly. I'm working on a distrubted medical case management application and I can honestly say that I'd swap it out for a great game graphics programming job in a second.

    10. Re:Sweetest spot? by Eccles · · Score: 2

      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.

      --
      Ooh, a sarcasm detector. Oh, that's a real useful invention.
    11. Re:Sweetest spot? by Ralph+Wiggam · · Score: 2

      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

    12. Re:Sweetest spot? by brsett · · Score: 1

      I think this is a horrible trap for a programmer (or anyone else to fall into). This implies that happiness and fulfillment come from the outside, rather than the inside. I've worked on alot of defense software, that could be considered to have been more of a detriment to society rather than a benefit, but that isn't a healthy way for me to look at it (and it isn't really true, anyway). I take the fulfillment from how interesting the challenges posed in the project are to me, and whether the outcomes of the project (e.g. satisfaction at having managed tremendous complexity) caused me to view the project positively.

      Abrash, qualified his statement, by saying it was true for him, I think you need to do so as well. The idea that your values are adequate for measuring anyone elses fulfillment is dangerous. (If the engineers that built the atomic bomb used someone else's guide to fulfillment we probably wouldn't have nuclear medicine or nuclear power today).

  22. Re:Engineering vs. hacking by Omnifarious · · Score: 1

    I have a spot for those in my source tree. :-)

  23. Game Developer by LightningTH · · Score: 4

    I'm a game developer working on the Open Source Genesis3D 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.

  24. You bastard! by delmoi · · Score: 1

    You slashdotted Penny Arcade!!! Gah!

    --

    ReadThe ReflectionEngine, a cyberpunk style n
  25. Re:OK I didn't get it, please explain by dmorin · · Score: 1

    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.

  26. Optimizing Conway's Life by dmorin · · Score: 5
    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.

    1. Re:Optimizing Conway's Life by redelm · · Score: 1

      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 :)

    2. Re:Optimizing Conway's Life by wiredog · · Score: 1

      Know exactly what you mean, man. Beautiful when the elegance shows itself that way.

    3. Re:Optimizing Conway's Life by kyz · · Score: 2

      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.

      --
      Does my bum look big in this?
    4. Re:Optimizing Conway's Life by dmorin · · Score: 5

      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.

  27. Re:total fluff by Sebastopol · · Score: 2

    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.

    ---

    --
    https://www.accountkiller.com/removal-requested
  28. Engineering vs. hacking by ShadyG · · Score: 5
    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

  29. Abrash sums up the MHz war ... by ErnstKompressor · · Score: 2

    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 ;)

    --
    We apologise for the fault in this post. Those responsible have been sacked. -- Signed RICHARD M. NIXON
    1. Re:Abrash sums up the MHz war ... by The+NT+Christ · · Score: 1
      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 didn't pay for my operating system either

    2. Re:Abrash sums up the MHz war ... by FigWig · · Score: 1

      And you are confirming my belief that most Mac users are arrogant blowhards who never stop whining.

      --
      Scuttlemonkey is a troll
  30. Re:I thought it was supposed to be hideously hard by mizhi · · Score: 3

    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.

    --
    Humorless sig goes here.
  31. java speed by delmoi · · Score: 1

    Of course, java runs about as fast as C++ nowadays...

    --

    ReadThe ReflectionEngine, a cyberpunk style n
  32. Re:Natural Language by BlackStar · · Score: 1
    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?

  33. One tries Blitz Basic xRe:How does one... by Anonymous Coward · · Score: 1

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

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

    This Spam is over...

  34. Re:Problem-centric analysis by netmeister · · Score: 1

    Yeah, but because of the way you solved the problem you now have the gloves for use on other problems - a "reuse" situation.

    --
    Where's the beef?
  35. Re:total fluff by prisoner · · Score: 1

    I don't disagree but regarding your comment on Joe Schmoe, that's true of anything.

  36. Quake 1 Engine by crisco · · Score: 2
    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.

    --

    Bleh!

  37. Re:All nice clitches... by dmorin · · Score: 2
    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. :)

  38. Re:I don't think HL was fully based on Q2. by AFCArchvile · · Score: 2

    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).

    --
    "Ancillary does not mean you get to rule the world." --U.S. Circuit Judge Harry Edwards, speaking to the FCC's lawyer
  39. Why games save lives by tmoertel · · Score: 2
    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.

    1. Re:Why games save lives by m00t · · Score: 1

      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. ;)

    2. Re:Why games save lives by scorbett · · Score: 3
      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.


      --

  40. Video of talk. by geomcbay · · Score: 1
    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.

    1. Re:Video of talk. by cymen · · Score: 1

      My god that video quality is horrible. How did they mess up the sound *so* much? Simply amazing... Sounds like "fly wars" at times plus a bit of odd voice compression. Real Video @ 20.0 Kbps is horrible...

  41. Mozilla an Unnatural act? by Chris+Siegler · · Score: 4

    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.

    1. Re:Mozilla an Unnatural act? by Cederic · · Score: 1


      I disagree. Every boss I've had has said that my greatest strength is that I complete the software I write, and it gets deployed, and goes live.

      I am a merely competent programmer. I am definitely not a great programmer - I like to think that I am good, I can recognise elegance, simplicity and beauty in code, and sometimes I'm lucky enough to write some by accident, but even in the company I work for I can name several people who are better programmers than I am.

      The truly great programmers do far far more than just complete competantly written programs. They inspire, they soar, they leave people like me breathless with their vision and ability, and sometimes they also finish a program.

      ~Cederic

  42. Re:MOD this post UP!!! by SpacePunk · · Score: 1

    Too bad there isn't a 'stupid' mod tag.

  43. Re:total fluff by The+NT+Christ · · Score: 1
    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".

    --

    I didn't pay for my operating system either

  44. Re:Problem-centric analysis by The+NT+Christ · · Score: 1

    Gloves? Tarps? The obvious solution was to get a WalMart employee to carry it to the car for you ;)

    --

    I didn't pay for my operating system either

  45. Re:All nice clitches... by The+NT+Christ · · Score: 1

    If you had Abrash's cushy little jobs you'd probabaly be as happy as he is.

    --

    I didn't pay for my operating system either

  46. Re:The bounding box is the tris. by geomcbay · · Score: 2
    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.

  47. Re:Hmm... by AFCArchvile · · Score: 2

    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!

    --
    "Ancillary does not mean you get to rule the world." --U.S. Circuit Judge Harry Edwards, speaking to the FCC's lawyer
  48. Natural Language by copyconstructor · · Score: 4

    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.

    1. Re:Natural Language by The+NT+Christ · · Score: 2

      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 didn't pay for my operating system either

  49. Re:Hmm... by geomcbay · · Score: 1
    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.

  50. Re:Scientific Programming by GTM · · Score: 1

    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. :)

  51. Optimizing Code by BadBlood · · Score: 2

    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.

    --


    Praying for the end of your wide-awake nightmare.
    1. Re:Optimizing Code by The+NT+Christ · · Score: 1

      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.

      --

      I didn't pay for my operating system either

  52. Level of detail by yerricde · · Score: 3

    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?

    --
    Will I retire or break 10K?
  53. Re:How clean is that? by The+NT+Christ · · Score: 1

    PS2 and Dreamcast developers don't use much Middleware, actually. There's a lot available, but it's selling poorly. And it performs badly compared to a custom solution (well, what did you expect?) A 700MHz X-Box might be able to take the straing of running Direct3D but a sub-300MHz console certainly can't. Wasted cycles are a luxury only PC & X-Box developers have.

    --

    I didn't pay for my operating system either

  54. Re:Problem-centric analysis by ShadyG · · Score: 1
    Gloves? Tarps? The obvious solution was to get a WalMart employee to carry it to the car for you ;)
    Yes, and another one to carry it from my car, up four flights of steps to my apartment.

    -- ShadyG

  55. Bounding boxes and 'tris games by yerricde · · Score: 1

    If I ever get into game programming, my mantra will be this: the bounding box is the tris, the tris is the bounding box.

    But tris games are supposed to do their collisions with rectilinear bounding boxes; that's the shape of the blocks in Tetris pieces. Even in games such as Dr. Mario, pixel-perfect collision detection is overkill, as pieces move in tile-sized units anyway.


    Like Tetris? Like drugs? Ever try combining them?
    --
    Will I retire or break 10K?
  56. Re:Problem-centric analysis by The+NT+Christ · · Score: 1

    You have neighbors don't you? ;) A feigned heart-attack can work wonders in such a situation ;)

    --

    I didn't pay for my operating system either

  57. I'd been wondering where he went. by CrazyBob · · Score: 2

    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.

  58. Programming and Playability by Bonker · · Score: 4

    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.

    --
    The next Slashdot story will be ready soon, but subscribers can beat the rush and slashdot the links early!
    1. Re:Programming and Playability by rattid · · Score: 1

      I agree certainly that a game is nothing without substance and playability. But also realize there is a certain nitch in there for companies that create the games with 'a little less' substance, but with the high tech engine. Half-life probably wouldn't have been as good if valve had to spend time writing it's own engine (and if they hadn't made it as open ended and expandable, maybe we wouldn't have Counter-Strike?).

  59. total fluff by kaisyain · · Score: 2

    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!"

    1. Re:total fluff by MuValas · · Score: 1

      Actually, the article simply paraphrases a talk he gave at Game Developers 2000. The talk was much more in-depth and much more technical. It was one of the more interesting talks last year, although it was more of a "here's my life experience" talk than "here's algorithm X" talk. The reason it is salient is that Abrash has *been* there - Joe Schmoe hasn't. Plus Abrash is an excellent writer, and fun speaker.

      The game of life that is the title of the second page is part of the talk that he gave (but not included in the article) where he speaks on optimizing the Game of Life. He starts out with being able to get ~3 generations a second, and after some interesting ideas, ends up at 200+ generations a second.

      Taken by itself, the article is a tad fluffy, though.

  60. Re:Hmm... by Synoptic · · Score: 2

    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.

  61. Heh. by dR.fuZZo · · Score: 5

    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?

    --
    -- dR.fuZZo
  62. How clean is that? by robbway · · Score: 1
    Article is very good, however I disagree on one area. Michael Abrash wrote:

    If you like it, game programming is about the best software job there is. It touches on practically every area of programming, and it's one of the few places where code can still be written clean instead of patched over or pieced together from canned parts. It's also one of the few places where optimization still really matters.

    This only applies to non-sequel, non-port, non-home console games. Playstation2 and Dreamcast games developers often use middleware to achieve their games. Sequels and ports often involve revitalizing and fixing old code.

    The really good programmers maintain their own custom sets of classes, routines, macros, and code fragments, which is the only way to "keep it clean." In other words, keep your own can of parts.

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

  63. Re:It's simple by jedidiah · · Score: 1

    All the talent in the world won't make up for bad management and counterproductive corporate culture. A little head hunting won't solve any immediate problems. Cutler and NT should be sound proof of that.

    --
    A Pirate and a Puritan look the same on a balance sheet.
  64. Re:I don't think HL was fully based on Q2. by m00t · · Score: 2

    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. :)

  65. Re:Problem-centric analysis by h2odragon · · Score: 1

    Good point, but then when you need the gloves they'll be somewhere else... would that be a library not found error?

  66. Hospital software is crap by bfinuc · · Score: 1
    The goal of most medical software is to help doctors rip off insurance companies, not to save people's lives.

    The software itself is an off the shelf interface stitched together to hide a junkyard of database and reporting software.

    Turnover per package is relatively low because the market is messy and the customers are unimaginative and uncooperative.

    At least games entertain millions of people.

    --
    I bragged about my Karma at a job interview but I didn't get the job.
  67. Moderator? by jeff.paulsen · · Score: 2

    could you give the parent of this post a +1 funny?

    --
    -- Jeff Paulsen
  68. Scientific Programming by smoondog · · Score: 2

    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

  69. Problem-centric analysis by ShadyG · · Score: 4
    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

  70. What he meant by that.. by WuTangClanner · · Score: 1

    What he meant by that is that the consumer hardware availible now far outclasses the complexity of games availible now. 5 years ago this was not the case, and it was very easy for what was considered a well-written program to perform horribly on expensive hardware. Does anyone remember playing Quake2 without a Voodoo? Even with a Voodoo my top of the line machine, which cost more money than the new stuff nowadays, couldn't top more than 60 fps even if I turned off all the juicy stuff. But now Tom's Hardware is assembling PCs that cap off over 150 FPS in todays games.

    So what he was saying is that its much easier for people to buy machines that are powerful enough to run the new games well. 5 Years ago it was nowehere near as easy to get the hardware necessary for such amazing frame-rates.

    :)

  71. Not as much as you will elsewhere... by catseye_95051 · · Score: 2

    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.

  72. Best Job ever?? by jbrians · · Score: 1

    Remember to have fun! It's about the best job around, but like anything else, game programming can turn into a job if you let it. Don't let it. You're one of the luckiest people in the history of the planet, getting incredibly well rewarded for doing something challenging, fun, and just plain cool. Remember that and count your blessings every day. Then get out there and write some great software!

    Well, I'm the first to admit that it would be really cool and I'll be psyched if one of the companies I'm talking to right now hires me when I graduate in June. However, game programmers do get shit on for pay, and get little respect outside of the industry. Small price to pay, but it puts being a basketball player or a rock star high above game programmer on the "coolest jobs ever" list.
    -Brian

    --
    "Faith strikes me as intellectual laziness." -Robert A. Heinlen
  73. Re:How does one become a game programmer? by jbrians · · Score: 1

    Like he said in the article, take a lot of math classes.
    Get a real computer science degree from a reputable university, work hard on the projects you do there that you could show off later, and be prepared to make $15,000/year less than all of the people you graduate with. ;-)
    -Brian

    --
    "Faith strikes me as intellectual laziness." -Robert A. Heinlen
  74. I'm back, too... by uzioriluzan · · Score: 1

    While reading the article, it seems I was just seeing the three last years of my life. I'm an undergraduate student at Brazil and since mid-98 have been doing research in games. On account of a job opportunity I had to stop researching that amazing area for a year during the last year (2000). That way, I spent the last year programming in Java for Web (servlets, Jsp, and so on). Fortunately, the company I work for has just formed a games development group where I am now. So I'm back working and researching the games area which, as the article states, is much more challenging and pleasant. For those who have not read the article yet, no doubt it's worth reading.

  75. I don't think that's what he said... by clary · · Score: 1
    ...to say that games programming somehow transcends other software is wrong.
    I don't think the man was making a statement about the social value of the software he writes. If you read the whole paragraph, you will see he was talking about what work made him the most happy.
    --

    "Rub her feet." -- L.L.

  76. All nice clitches... by Shotgun · · Score: 3

    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.

    --
    Aah, change is good. -- Rafiki
    Yeah, but it ain't easy. -- Simba
  77. OTHERs are trained for that ! by UnknownSoldier · · Score: 1

    > it seemed to neglect a detail that many game developers sadly overlook. A game is *nothing* without playability.

    THAT is the responsbility of the game designers!

    Programmers implement the game rules, they don't create them.