Michael Abrash on Games Programming 129
An anonymous reader sent in an awesome article by Michael Abrash (If you don't know, I'm not telling). Tons of great bits in there, advice, anecdotes etc. Definitely worth a read if you are
either a programmer, or a game fan.
Re:Sweetest spot? (Score:3)
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.
But can I get paid? (Score:2)
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!
Ideas (Score:1)
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.
Just do what you love. . . (Score:2)
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
Re:Great Article (Score:1)
3D Game Source Code (Score:1)
Re:Sweetest spot? (Score:1)
eudas
What book is the short story in? (Score:1)
Thanks
Glutious
Great Article (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!
Re:Programming and Playability (Score:1)
Re:Sweetest spot? (Score:1)
don't believe the hype, I had fairly recently a short stint at a games development company (whom I will not name) and nowadays pure coding doesn't seem to be the case anymore.
I should know, we had to use an IMHO sucky gaming engine just because our publisher wanted us to, and we wouldn't have offered a contract if we offered to write our own engine (which IMHO would have been a zillion times better than what we were forced to use).
Nowadays games programming is getting closer and closer to assembly line programming, it's all milestones, milestones, milestones, using pieces that you can buy off the shelf as much as possible to minimize publisher's exposure (your team tanks ? who cares, the publisher still has the license to the engine you are using, while if you were developing from scratch, they wouldn't have anything).
IMHO (again) games programming used to be fun and 'pure', now for many developers it's as rewarding as sucking rocks through a straw, I mean, to get into games programming (I wanted to see it first hand) I had to take a significant pay cut, work nearly twice as many hours, and have far less freedom in my technical decisions than I had at any other company I worked in: after a while I figured it was not for me, and found a much much more rewarding (financially and professionally) job elsewhere.
Before buying in the hype, please do yourself a favour and research how the games industry really is nowadays. While there are some fun software houses to work in, the likelyhood you're going to end up in one of them (especially as your first job) is not that high.
While some of what's posted there is mostly flames etc. reading Fatbabies [fatbabies.com] will give you at least an idea of the flip side of the coin.
Re:Sweetest spot? (Score:1)
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.
What's wrong with making a fun engine showcase? (Score:1)
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.
Re:Sweetest spot? (Score:1)
But I can say that playing games drastically improves hand/eye coordination, and games like Myst (puzzle type games) help improve problem solving.
Re:Optimizing Code (Score:2)
The entire Java industry is based on this assumption. Check back in 5 years or so to see whether it's correct or not.
Mythical Man-Month (Score:1)
Some "old" stuff just won't die [amazon.com], it'll live forever.
Brooks and Abrash are my heroes in computer programming.
Re:OK I didn't get it, please explain (Score:1)
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
Bright Guy, Great Author (Score:3)
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.
Abrash Influence (Score:2)
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 ? :)
Yep, and Quake 1 *ONLY* (Score:1)
Re:But can I get paid? (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.
Sweetest spot? (Score:3)
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.
Re:Engineering vs. hacking (Score:1)
I have a spot for those in my source tree. :-)
Re:Bright Guy, Great Author (Score:4)
As Carmack says, "Check your assumptions".
Game Developer (Score:4)
It has always been my dream to do some type of programming that was constantly a challenge as I tend to become bored very easily. There is always some challenge to game programming as you do your best at something then have to do even better next time around. You are constantly trying to out perform the best out there and constantly pushing the computer to it's limits with the latest games.
It can be a great field to be in but getting in is the difficult part as along the way you are viewed as a game programming wannabe and most people don't even make it over the "write a simple game" hurdle. Even after getting into the area you have to prove your worth against others at or possibly above your level of knowledge. Reading a ton of tutorials doesn't always help as you have to break away from the tutorials sometime and take your own steps out in doing a game or an area of a game. Alot of people fall down at this point too and never get back up because they decide it is too hard and don't really understand what is going on so they continue on the tutorial path or just quit all together. For those that break away from tutorials and understand what is really going on to make the game run can great some good games. From there it is a matter of finding a game company to take you in. Of course you would want to get into a company that is constantly using the latest things and this isn't always easy either.
The road is long but can be very enjoyable for those that have the patience, always want a challenge, and have fun with their job.
You bastard! (Score:1)
Re:OK I didn't get it, please explain (Score:1)
Optimizing Conway's Life (Score:5)
I have no idea if I explained that like I wanted to. But I know what I meant.
Re:Great Article (Score:1)
Re:Sweetest spot? (Score:3)
*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".
Re:total fluff (Score:2)
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.
---
Engineering vs. hacking (Score:5)
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
Abrash sums up the MHz war ... (Score:2)
Re:I thought it was supposed to be hideously hard (Score:3)
java speed (Score:1)
Re:Sweetest spot? (Score:1)
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'.
Re:Natural Language (Score:1)
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?
Re:Abrash Influence (Score:1)
OD
Re:Abrash Influence (Score:1)
That's how I remember it, anyway, and I have done a fair bit of business with the boys at Id.
Re:Abrash Influence (Score:1)
One tries Blitz Basic xRe:How does one... (Score:1)
Head to blitzbasic.com [blitzbasic.com], download the demo and get started :)
3D due out mid-2001, so get learning with Blitz 2D now!
This Spam is over...
Re:Problem-centric analysis (Score:1)
Re:total fluff (Score:1)
Re:Bright Guy, Great Author (Score:2)
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.
Re:Sweetest spot? (Score:2)
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.
Quake 1 Engine (Score:2)
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.
Re:All nice clitches... (Score:2)
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. :)
Re:I don't think HL was fully based on Q2. (Score:2)
Re:Great Article (Score:1)
Re:Ideas (Score:1)
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'.
Re:Bright Guy, Great Author (Score:2)
-Paul Komarek
Why games save lives (Score:2)
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.
Video of talk. (Score:1)
Abrash is a pretty good speaker, and I think the talk comes off a bit better in the video than as an article. The video is linked off of the page the article is now on, but here's the link anyway [mfi.com].
Mozilla an Unnatural act? (Score:4)
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.
Re:Bright Guy, Great Author (Score:1)
Or so I've been told.
Re:MOD this post UP!!! (Score:1)
Re:Abrash Influence (Score:1)
Re:Bright Guy, Great Author (Score:3)
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).
Re:Optimizing Conway's Life (Score:1)
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
Re:total fluff (Score:1)
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".
Re:Problem-centric analysis (Score:1)
Re:Why games save lives (Score:1)
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.
Re:All nice clitches... (Score:1)
Re:Abrash sums up the MHz war ... (Score:1)
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.
Re:But can I get paid? (Score:1)
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.
Re:Sweetest spot? (Score:2)
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."
Re:The bounding box is the tris. (Score:2)
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.
Re:Hmm... (Score:2)
Natural Language (Score:4)
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.
Re:Sweetest spot? (Score:1)
Re:Hmm... (Score:1)
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.
Re:Scientific Programming (Score:1)
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.
Optimizing Code (Score:2)
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.
Re:Optimizing Code (Score:1)
Re:But can I get paid? (Score:1)
As for what skills you will probably need:
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!
Level of detail (Score:3)
Like Tetris? Like drugs? Ever try combining them? [pineight.com]
Re:Why games save lives (Score:3)
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.
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.
--
Re:Natural Language (Score:2)
I'd been wondering where he went. (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.
Programming and Playability (Score:4)
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.
total fluff (Score:2)
Re:Sweetest spot? (Score:4)
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.
--
Re:Sweetest spot? (Score:4)
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.
Re:Hmm... (Score:2)
Heh. (Score:5)
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?
Re:Sweetest spot? (Score:2)
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.
Re:I don't think HL was fully based on Q2. (Score:2)
I could run across the street and ask for all the specifics, but it's raining out and it makes me miserable.
Moderator? (Score:2)
Re:Bright Guy, Great Author (Score:2)
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.
Scientific Programming (Score:2)
-Moondog
Re:Sweetest spot? (Score:2)
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
Re:Optimizing Conway's Life (Score:2)
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.
Problem-centric analysis (Score:4)
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
Not as much as you will elsewhere... (Score:2)
(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.
Re:Abrash Influence (Score:2)
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.
Re:But can I get paid? (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. [slashdot.org]
Re:Abrash Influence (Score:2)
Torrey Hoffman (Azog)
Re:Optimizing Conway's Life (Score:5)
All nice clitches... (Score:3)
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.
Re:Bright Guy, Great Author (Score:3)
Plus, if he can just spend a little time optimizing the DirectX code, then EVERY game benefits. You know that if he finds any new tricks, he'll report on them, and even the free software world will benefit. Check out this link [ddj.com] at Dr. Dobb's journal for a taste of what he is doing at Microsoft, and why it is important.
Like he says in the article, the important thing is to do, not to think, and there's a lot of optimization to do at Microsoft.