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.

55 of 129 comments (clear)

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

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


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

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

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

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

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

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

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

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


      --

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

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

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

  10. 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 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?
    2. 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.

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

  13. 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
  14. 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.
  15. 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!

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

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


      --

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

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

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

  23. 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.
  24. 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?
  25. 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.

  26. 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!
  27. 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!"

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

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

  31. Moderator? by jeff.paulsen · · Score: 2

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

    --
    -- Jeff Paulsen
  32. 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

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

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

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