Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Standard view
Full view
of .
Look up keyword
Like this
0 of .
Results for:
No results containing your search query
P. 1
Mike Abrash GDC Speech Transcript

Mike Abrash GDC Speech Transcript

Ratings: (0)|Views: 61 |Likes:
Published by Evil-Soft.com
Mike Abrash : GDC 2000 speech
"It's Great to be Back!
Fast Code, Game Programming, , and Other Thoughts from 20 (Minus Two) Years in the Trenches"
Mike Abrash : GDC 2000 speech
"It's Great to be Back!
Fast Code, Game Programming, , and Other Thoughts from 20 (Minus Two) Years in the Trenches"

More info:

Published by: Evil-Soft.com on Jul 09, 2013
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
See more
See less


Mike Abrash : GDC 2000 speech"It's Great to be Back!Fast Code, Game Programming, and Other Thoughts from 20 (Minus Two) Years in the Trenches" ______________________________________________________________________________________ 
- (Outside the game industry) I thought there were truly deep technical challenges... I was chasing illusions.- Game Programming is about the best software job there is.- Game Programming is one of the last few places where code can be written clean, not patched over legacy code orpieced together from canned parts.- Game Programming is one of the last places where performance matters.- Game Programming is more challenging than just apps because you must address functionality
performance.- Games require great code but before that it requires a great design.- First you have to build a mental model and then implement it cleanly and efficiently.- That doesn't mean you'll get it right the first time. In fact, you probably won't
!- Premature optimization
the root of all evil.- Optimize at a high-level or design-level and work your way down.- Don't jump on the first thing (idea) you think of. Think about the alternatives, build that model carefully, then be readyand willing to change the model constantly as you learn more or even to throw it away.- Think of your design as a jumping off point for a better one.- What matters more? Knowing
to optimize or knowing
to optimize. The answer is what.- If you don't find out where performance bottlenecks are, you're guessing!- When you make changes, measure the real-world effect.- It's often uncomfortable, but in the long-run, it makes more sense to deal with reality.- C++ and Java are great, but they tend to hide details.- This is an illustration of how optimization usually goes : You find a really bad spot, you squash it down, and in the processyou come to understand the problem better and you can move on to more global optimizations because you have yourhead wrapped around the problem.- Rarely will you get more than 2X performance by doing
in assembly.- Good ideas are key, but they're really a dime a dozen.- I'd say everyone in this room is a smart person. Some are smarter than others, but that's not really the difference. Thereal difference is hard work. Hard work to try out the ideas in the real world. Hard work to give you the deep knowledgethat positions you to have more good ideas. And, most of all, hard work produces something useful, because having theidea or doing some prototype code doesn't really change anything. The key here is to do great software that peopleactually use!- As one case-in-point, many people thought Doom was a work of technical genius that appeared out of thin air, and it mayhave been genius, but that was about the 10th 3D engine John had written and he had spent years getting to that point.- In fact, people lust after the fame and Ferraris and all but very few people are willing to invest the years of 70-80 hourweeks that went into John's success.- And John always says "If you're willing to spend a year focusing on this and nothing else and driving yourself as hard asyou can, you can get to the leading edge of this industry".- But it really takes the work. There's no substitute. So, the key is to learn by doing and finishing.- Don't overestimate the value of deductive thinking of just sitting there and solving it in your head. Get in there and getyour hands dirty.Even the best people in this industry take time to figure out these problems. These are complex issues that really need tobe worked through and learned about. So, your job is to keep working through them instead of falling in the trap of justthinking about them.- So, remember, there's an endless supply of good ideas. The limiting factor is the time and the will to try them out.- Another useful principle is to check your assumptions- Better yet, assume nothing.- Question the assumptions and, when you've found you're wrong, just laugh and be glad you learned something when youfind you can do something better.- Humility helps.- Always be ready and willing to learn from others, because it's hard to learn everything on your own.- No matter how smart you are in any given area, there's always someone you can learn from.- Other people have been thinking about it (a subject) other ways sometimes for a lot longer.- Reinvention is
the mother of great software.- There are very few brand-new ideas around.- Why not stand on the shoulders of giants?
- There are a lot of people working on these problems and some of them do it for a living.- Learn math.- Do what you love. Good things will come of it.- Stretch until it hurts. Be flexible. Don't get too attached to your design. Be willing to listen to new ideas and admit youwere wrong and change your mind.- Be open to change or watch it run you over and leave you behind.- The world constantly changes...- Most of what I knew 10 years ago is obsolete.- This industry has a fast-moving sweet-spot and unless you move with it, you'll be left behind.- As you work longer you'll acquire more preconceptions and knowledge that's not up-to-date and you will need toconsciously make an effort to sweep out that trash and learn new things.- The only thing between you and great software are the limits you unconsciously set.- Once you believe something's possible, you will find a way to solve it.- There's only one obstacle and that's your mind.- You already have the capability to do great things. Actually doing them is just a matter of attitude.- The most important thing isn't what you study or how hard you work, although those certainly matter, but rather how youthink about your work; whether you're limiting yourself with your assumptions or letting yourself push into unexploredterritory.- Innovation is hard because you're wrapped up in doubt.- Your job is to ship great programs, not to get things right with a capital R. Besides, Right is an elusive target.- There ain't no such thing as the fastest code.- Turn your right brain loose. No great idea came from straight-forward linear thinking.- You have to keep in mind much of what you try will fail. It's the only way you'll learn and make progress. Otherwise you'llstay in this little corner of things you know.- Almost all programming can be viewed as an exercise in caching.- Whatever design you have is just a jumping off point for something better.- Resist the temptation to look for "the answer".- Try to change the rules so you can succeed rather than being mediocre under the current constraints.- Don't get comfortable. Aspire to excellence. Fight that comfortable satisfied feeling about your code.- Constantly say "How can I improve this?" instead of saying "Hey, isn't this great?"- Fight code entropy. Be willing to throw away code.- Simplify. Simplification is a wonderful guideline for writing great software. If your code is getting complicated, it's time totake a step back and get a new perspective.- Always try to do better with less in a different way.- Remember to have fun. This is about the coolest job around, but like anything else, game programming can turn into a job if you let it. Don't let it!
Gamasutra - Features - It's Great to be Back! Fast Code, Game Program...http://www.gamasutra.com/view/feature/3108/its_great_to_be_back_fast...1 of 35/17/2010 7:33 PM
It's Great to be Back! Fast Code, Game Programming, and Other Thoughts from 20(Minus 2) Years in the Trenches
By Robert Huebner
Editor's note: This paper was originally published in the2000 Game Developer's Conference proceedings.
To the Moon and Back…
A few years ago, after
shipped, I decided it was time to move on from games. Although working on
was agreat experience, it felt like doing another game would be much the same, but far less interesting the second time around.What I needed, I thought, was a software field with deep structure and long-term challenges-something more significant,difficult, and ultimately rewarding. So I figured it was the right time to switch over to work on natural language, which fitthat description perfectly.I figured wrong. By way of explanation, two stories and a conclusion:Story the first: After a couple of years of natural language work, I thought about moving to the Games group at Microsoft,and went to talk with the folks over there. While I was talking to Andy Glaister, my future manager in Games, he askedme, "How old is your daughter now?" When I told him she was 13, he said, "Really? I always think of her as being three orfour." This was interesting, considering he had never met her, and had only met me a few days before-but he had readabout her in the articles I had written in
Dr. Dobb's
and elsewhere over the preceding decade or so. It was a usefulreminder of how long I had been working on and writing about performance and graphics, and how that had always stayedchallenging and interesting even as computers and software changed drastically through the years.Story the second: While I was working on natural language, I read Mihaly Csikszentmihalyi's book
, about what sort of work people are happiest doing. It turns out there's a sweet spot, where the work is challenging and stimulating butplausibly doable, and where success happens often enough to form a positive feedback loop. As I read this, I realized thatit was basically a description of successful game development. True, games have short development cycles, and progress ismade incrementally-but at least progress is made, while the short cycles mean that success in the form of shipping occursoften, and positive feedback in the form of seeing cool stuff on the screen happens pretty much nonstop. And for all theincremental nature of game advancement, in many ways games are pushing the envelope harder than almost any otherkind of software-what else does a consumer need a 700 MHz machine with a high-end 3D accelerator for? Plus gamescover a huge range of technologies-graphics, physics, modeling, scripting, AI, networking, databases-more than any otherkind of software I can think of. What I finally realized was that, for me at least, game programming is the sweetest spot inall of software development.In Robert A. Heinlein's story "It's Great To Be Back," a couple leaves the Moon, after working there for years and hating it:hating the lack of fresh air, the lack of weather, the lack of cozy old houses, the lack of normal people-basically, hatingeverything. They make no bones about their feelings, and when they get to Earth, they just keep saying, "It's great to beback!"-although sometimes it seems a little forced.Gradually, the truth seeps in. Weather is often unpleasant. Germs are everywhere. Fresh air results in allergies. The oldhouse they buy is falling apart. Worst of all, the people are rude and stupid, where the Loonies had been hand-picked forskills and compatiblity. Before the year is over, they realize they had been living in paradise and ask for their old jobs back,and before they know it, they're heading back to the Moon, saying "It'll be great to be back!"-and this time, it fits.There's lots of interesting stuff to think about and work on in natural language, or in any of dozens of other types of software, for that matter, and there are lots of other worthwhile pursuits that have nothing to do with software-but interms of rewarding challenge, stimulation, and flat-out excitement, having made the round trip and returned, all I can sayis:It's great to be back!
Optimizing the Game of Life
Like most of you, I suspect, I just plain like writing software-I did it for fun before I did it for a living-and one of the best

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->