DECEMBER 1998

GAME DEVELOPER MAGAZINE

V GAME PLAN

600 Harrison Street, San Francisco, CA 94107 t: 415.905.2200 f: 415.905.4962 w: www.gdmag.com Ditch the Death March Publisher Cynthia A. Blair cblair@mfi.com EDITORIAL Editor-in-Chief t the conclusion of World As Walton explains in his article, Alex Dunne [email protected] War II, Japan was nowhere (like practically every game Managing Editor near the industrial power- development company) experienced Tor D. Berg [email protected] Departments Editor A house that it is today. The intense pressure to complete a number Wesley Hall [email protected] management of Japanese companies of games in time to guarantee their Art Director was almost feudal in nature: plant man- delivery to stores by Christmas. The Laura Pool lpool@mfi.com agers were practically overlords, and burnout and frustration that this used Editor-At-Large Chris Hecker [email protected] workers were viewed as serfs. One of the to cause his teams prompted the com- Contributing Editors people who helped turn Japan around pany to find ways to gain better control Jeff Lander [email protected] in the ‘50s was American management of projects. And while Walton stresses Mel Guymon [email protected] consultant Dr. Edwards Deming. that Kesmai’s developers still encounter Omid Rahmat [email protected] Advisory Board Deming’s lesson to managers in the occasional “crunch period,” adopt- Hal Barwood LucasArts Japan and America was fairly simple. In ing formalized development standards Noah Falstein The Inspiracy a nutshell, he said that managers’ infat- and procedures for their projects has Brian Hook id Software Susan Lee-Merrow Lucas Learning 2 uation with short-term thinking, merit given everyone more confidence in esti- Mark Miller Harmonix systems, quotas, management by objec- mating work duration, resulted in fewer Paul Steed id Software bugs in their games, and made the Dan Teven Teven Consulting tives (MBO), and so on, was all wrong. Rob Wyatt DreamWorks Interactive Instead, he said, special importance process of developing a title more should be placed on the process of pro- rewarding for everyone. Without a ADVERTISING SALES duction, not the end product itself. If doubt, Walton’s article provides the Western Regional Sales Manager Alicia Langer alanger@mfi.com t: 415.905.2156 the production process was good, quali- most detailed accounting of process Eastern Regional Sales Manager ty products would naturally flow from improvement by a game development Kim Love klove@mfi.com t: 415.905.2175 the company. studio that I’ve seen. Sales Associate/Recruitment It worked. Take Toyota, for instance. Ayrien Houchin ahouchin@mfi.com t: 415.905.2788 The company’s initial experience sell- ADVERTISING PRODUCTION ing cars in America was disastrous; the “Sundance” Postscript Vice President Production Andrew A. Mickus Toyota Toyopet was a stark, underpow- Advertising Production Coordinator Dave Perrotti ered vehicle that sold poorly. Later, In the wake of my September editorial Reprints Stella Valdez t: 916.983.6971 armed with production processes based (“Where’s Our Sundance?”), I received MILLER FREEMAN GAME GROUP MARKETING on the work of Deming, Walter quite a number of letters from readers Group Marketing Manager Gabe Zichermann Shewhart, and others, Toyota went about various events that either already MarComm Manager Susan McDonald back to the drawing board (literally). exist, or that are in the planning stages. Marketing Coordinator Izora Garcia de Lillard Using product testing, customer feed- First, Brooke Boynton of P.F. Magic CIRCULATION back, and studying the lessons of the reminded me that New Media maga- Vice President Cirulation Jerry M. Okabe then-successful Volkswagen Beetle, zine’s Invision Awards (http://www. Assistant Circulation Director Mike Poplardo Toyota came up with the Corolla. This invisionawards.com) honor a wide Circulation Manager Stephanie Blake car sold well, and thanks to continued range of multimedia and web products, Circulation Assistant Kausha Jackson-Crain use of process improvement method- including games. Second, it appears that Newsstand Analyst Joyce Gorsuch ologies, Toyota’s engineers were able to Milia Games (http://www.milia.com), INTERNATIONAL LICENSING INFORMATION improve the product each year. the French conference for interactive Robert J. Abramson and Associates Inc. Of course, games are not pieced entertainment, will host a “New Talent President Libby Abramson 720 Post Road, Scarsdale, New York 10583 together on an assembly line. But many Pavilion” at its upcoming event in t: 914.723.4700 f: 914.723.4722 of Deming’s lessons still hold true for February. Finally, the Game Developers e: [email protected] game developers. In this month’s cover Conference (http://www.gdconf.com) is Miller Freeman feature (“Bringing Engineering launching the “GDC Independent A United News & Media publication Discipline to Game Development”, Game Festival” at its show in San Jose, Chairman-Miller Freeman Inc. | Marshall W. Freeman page 37), Kesmai Studios Manager Calif., this March. In the interest of full President/COO | Donald A. Pazour Gordon Walton explains how better disclosure, I must remind everyone that Senior Vice President/CFO | Warren “Andy” Ambrose Senior Vice Presidents | H. Ted Bahr, Darrell Denny development processes helped his com- the GDC and Game Developer magazine Galen A. Poss, Wini D. Ragus, Regina Starr pany, and many of these experiences are owned by the same company. Ridley, Andrew A. Mickus, Jerry M. Okabe jibe with Deming’s lessons. Many of Which, of course, made it very easy for Vice President/SD Show Group | KoAnn Vikören ■ Senior Vice President/Systems and Software you worked your tails off to complete me to twist their arms. Division | Regina Ridley projects in time for Christmas, so you’re probably receptive to better BPA International Membership methods of managing projects. Wasn’t Applied for March 1998 that death march fun?

GAME DEVELOPER DECEMBER 1998 www.gdmag.com SAYS YOU

Solving the Orc Problem score for attacking unit a with unit b Fitness (S, m, n ) given my new unit j depends on what other units are attacking the enemy’s unit i in combi- attacking it (or the configuration of nation with the configuration just read through the October 1998 units as a whole ) then you have to use described by the cells of the previous I issue of Game Developer (all of us an algorithm that’s just a little bit row in turn. So for M(0,1) I would get here at GameFX... err THQ... fight over smarter. The trick here is that if I have the maximum of Fitness (S, m, n) the latest issue of Game Developer every an algorithm, where each time my unit 1 attacks the month), including Swen Vincke’s and enemy’s unit 0, and my unit 0 attacks interesting article, “The Orc Problem.” each of the enemy’s units in turn. I While the article was informative, We’ll let you talk. E-mail us at keep a pointer in cell M(0,1) to the cell there are, in fact, well-known and bet- [email protected]. Or write to Game in column 0 that I used to obtain the ter ways to solve this exact Developer, 600 Harrison Street, San maximum score. Once I have done problem. This is a classic this for column 1, the largest score in resource allocation Francisco, CA 94107. column 1 represents the optimal con- problem that if I figuration given those 2 units. The can be give it an score in each cell M(i,j) represents the solved quick- optimal solution for a given optimal score given my unit j attack- ly and easily set of units and then add one ing the enemy’s unit i, and with all of using a tech- more unit to my team, the my units less than j on the board. I can nique known as algorithm will give me a new repeat the process for each new col- 5 dynamic program- optimal solution. Then, given umn for as many units as I want. Each ming. This algorithm anyN set of units, I just start by cell has a pointer to the cell in the pre- is also sometimes known finding the optimal solution given vious column representing the rest of as Viterbi decoding or Hidden Markov one unit and then I keep adding units the configuration of units. When I get model decoding. These algorithms one by one and finding a new optimal to the last column and have placed all were developed in the 1960s to assign solution, given the old optimal solu- my units, I can get the optimal config- nuclear missiles to targets. tion as input. uration of units by following the back You want to avoid greedy solutions Here’s how to execute that task. pointers from the cell with the best for simple fitness functions if they are First, I make a matrix with enemy score in the last column all the way not the optimal choice. If you have a units indexing the rows, and with my back to the first column. simple fitness function that only takes own units indexing the columns. Then The first column costs n evaluations into account the two units involved, I start with column zero, evaluating of the fitness function. Each subse- (that is, if unit a attacks unit b you get my zero unit against each enemy unit quent column costs n^2 evaluations. one score, and then if you also attack b in turn. Next, I fill in the correspond- For an eight on eight battle, this is 456 with another unit c, the score for ing matrix cell with that score. I might evaluations to get the optimal solution attacking b with c is not affected by evaluate it with Vincke’s fitness func- to the problem. This is far fewer than the fact that it has already been tion (Fitness (S, m, n ) where S is the the 16 million the article suggests. The attacked by a), then the “greedy” solu- layout of the board, n are all of the algorithm does scale roughly as n^3, tion is optimal. That is, get each of enemy units, and m consists of my which can still be prohibitive for large your units to attack the unit that it gets the highest score for attacking. “This is a classic resource allocation problem Because the pairwise evaluations are independent, you need to compare that can be solved quickly and easily using a each of your own units against each enemy unit one time each. If you have technique known as dynamic programming.” n of your own units and m enemy units, this can be calculated in time -Rafael Baptista that scales as m*n. In an eight on eight fight, this is 64 pairwise evaluations. In units, which for column zero is my numbers of units. To handle this, you a battlefield game where the units are single unit zero). The highest score in can use the simple trick of threshold- usually spread out and the scoring the column represents the optimal ing. For each new cell M(i, j), only function takes into account the dis- solution given that single zero unit. It evaluate against the top k scoring con- tance between the units involved, this is also trivially true that the score in figurations in the previous column. method can work pretty well. This is each cell of the column M(0,j) repre- This immediately cuts the algorithm probably less expensive than a single sents the optimal solution given that complexity down to n^2. You can call to Vinke’s fitness function. But the single unit attacking the j enemy unit prune it even further by not evaluating trade-off is that it won’t give you as (because there is only one such config- every cell in the matrix, but say only accurate an answer. uration). For each subsequent column, the cells likely to score highly. You Dynamic programming is the solu- I evaluate a new score for each cell in might evaluate each cell in a given col- tion for the harder fitness functions. If the matrix, where the new score for umn against a single random configu- you have a fitness function where the the cell M(i,j) is the maximum of ration of the previous units, and chose http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER SAYS YOU

only the top l scoring cells to fill in. evaluates the situation in an orderly 40 situation can be transformed into a win This reduces the problem down to a and predictable way that allows you to situation in as little as 700 iterations with- time complexity of n. Glorious linear re-use computation in a way that is out using any heuristic. Together with a time complexity! In a fight with 40 hard to do with stochastic methods. good heuristic, this number can even be units on 40 units and k = 5 and l = 5 it By day, I am the AI programmer for decreased. Of course, the overhead is still would cost 1,000 evaluations of the THQ’s upcoming excellent 3D space higher than that of the Viterbi algorithm, function. The solution is not guaran- shooting game, EXCESSION. Our AI is which is why I’m hitting myself on the head teed to be optimal, but unless the very fast. for not mentioning it. One other advantage inputs are particularly perverse it prob- Rafael Baptista GAs have over traditional methods is that ably will find the optimal answer. GameFX they present several solutions, which can There are further optimizations. via e-mail be significantly different, at a given time. Fitness(S, m, n) is probably expensive. This can give you some measure of ran- Because each cell represents a partial VINCKE RESPONDS. What the Viterbi domness, which can be great when you are configuration of units, in each cell I algorithm essentially does is find a least- dealing with something like map genera- could also store a partial evalua- tion of Fitness(S, m, n) that I use to “Our AI is also very fast. Maybe one day they can help me evaluate the next column faster. With a reasonable function, play with each other.” one could probably get it down to 6 about 1,000 pairwise evaluations of Swen Vincke of Larian Studios to Rafael units and a few table lookups. To go even faster you could decode as Baptista of GameFX described above using a cheap approximation of the fitness function. cost path, and you correctly point out that tion, for instance. All in all, GAs aren’t the You could chose the top q configura- in order for it to do this optimally its com- be all and end all, but they do have signifi- tions from a table evaluated with the plexity qualifies as m times n2, or if m=n, cant advantages, and because of the ease cheap function and then evaluate as n3. Using some heuristic such as select- with which you can adapt them to new those q configurations using your more ing a fixed number of alternatives as you problems, they are definitely worth consid- accurate and more expensive function. do, or if you have access to some knowl- ering when you’re working on a tight Hey, that gets us down to a constant edge, a variable number of alternatives, schedule. number of evaluations of the expensive significantly increases the speed of the Our AI is also very fast. Maybe one day Fitness(S, m, n) function (and a linear algorithm, and indeed in most cases finds they can play with each other. number of partial evaluations of some an optimal to near optimal sequence. You cheaper function). So we might decide could, however, miss the global optimum. to evaluate Fitness(S, m, n)… oh, say But I agree that for this particular problem MacOS and Audio File Formats ten times. This might make it possible and for real-time applications it is definite- to field very large numbers of units. Or ly superior to genetic algorithms, and I you can use all the time you save for should’ve mentioned that in my introduc- I read Chuck Carr’s Postmortem, the real-time generation of fractal trees tion where, as it stands, I might have given “989 Sutdio’s NBA SHOOTOUT 98,” in or some other useless diversion. Why the impression that it didn’t get any better the September 1998 issue of Game does this work? If you think about it, a than n^m. The point of the article, howev- Developer magazine, and I noticed his stochastic algorithm like Vinke’s er, was to introduce the reader to genetic mention of the problem of Mac- spends most of its time evaluating con- algorithms, and to show how they can be intoshes not being able to recognize figurations that are way off. It also re- applied to a large class of problems where .AIF audio files generated on an evaluates very similar configurations the search space is complex and where PC. He mentioned that “Sound Forge over and over again. Dynamic pro- there are many local optimums. You could and other PC audio programs don’t gramming zeroes in on the neighbor- say that the first example, that of the orc embed in their audio files the contex- hood of good solutions right away. problem, was a bit mischosen, given that tual information that the Macintosh Each time you add a unit, it considers there are faster ways of obtaining a good needs to identify these files.” (p. 49). I only configurations that are similar to solution. Still, that, together with the TSP have much experience with manually what it had determined was the opti- example, should have driven home the setting the file creator and type on HFS mal configuration with one unit fewer. point that GAs can be very useful. The fact volumes. Carr didn’t mention the cool Think about what a human would do that GAs spend time evaluating bad con- utility program called File Kit used for when solving the problem manually. figurations shouldn’t be regarded as a exactly this purpose. It allows the user You would assign pieces to enemies weakness, however. It is actually their to set the file type and creator, thus one by one. Once in awhile when great strength because it’s how they over- solving problems such as this. Apple assigning a new piece you might reas- come the local minima problem. You can should have included something like sign one you had assigned before easily modify them not to exploit this by this with their operating system in the because now you have that particular configuring them to use something like first place. enemy covered by a better piece. The weakest chromosome replacement togeth- Andrew Munkres dynamic programming approach also er with fit-fit selection. Using that, the 40- via e-mail

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com New Products: Learning Machine’s Nomad, QSound’s QCreator, and VisKit from Paradigm Entertainment pp. 9

Industry Watch: Fiscal results, pend- ing lawsuits, cooperative business arrangements, and another engine for sale pp. 10

Product Reviews: NuMega’s News from the World of Game Development TrueTime pp. 12

ters to achieve a number of adaptive QCreator will sells for $49.95, and is New Products behaviors. Each character has a built-in available for purchase from the locomotion controller, and the simula- QSound web site and RealNetworks' by Wesley Hall tion includes accurate foot-terrain col- web site at http://www.real.com. lision detection. This allows characters ■ QSound Labs Inc. to walk and run adaptively over Calgary, Alberta, Canada uneven ground (which you’re also free (403) 291-2492 Virtually Human to design, along with custom obstacles http://www.qsound.com and environment objects). 9 LEARNING MACHINES TECHNOLOGY The SDK contains other features GROUP (LMTG) recently released such as real-time learning and adapta- My First Tool Suite Nomad/Virtual Human SDK 1.2, a tion, and the ability to access any nec- physical-simulation–based 3D anima- essary character geometry. The overall PARADIGM ENTERTAINMENT has tion system and database that will gen- effect, LMTG claims, is a novel tech- announced the release of VisKit. This is erate animation sequences for you. nology that “injects personality into a low-budget 3D rendering tool and If you’ve ever tried to incorporate the simulated characters.” A profes- API in C++ for constructing 3D appli- physics into a game engine, you may sional edition of the SDK includes an cations. The kit can be used for games have realized that modeling leg-loco- AI engine for each character class so and other applications including simu- motion is a challenge. LMTG has that new animation behaviors can be lations, visualizations, interactive web attempted to solve some of these diffi- synthesized at run time. As a result, applications, and real-time players. culties with its SDK. Nomad features a the characters appear to learn. Small and fast, Viskit’s minimal run- library of 3D character animations Nomad/Virtual Human SDK 1.2 is time memory footprint and high- based on the simulation of physics. The available for Windows NT, Windows speed unrolled rendering loops help current release includes a quadruped 95/98, and DOS. A single developer's ensure improved real-time 3D applica- class, a hexapod class, a bird class, and license includes technical support and tion performance. Small footprint or a humanoid bipedal class. a free version upgrade for $189. The no, VisKit still has more than 100 But the SDK is more than a simple professional edition of the SDK sells classes and provides all the tools and library; it’s an alternative to keyframed for $2,500. features necessary to develop high-per- animation. You can specify weight, ■ Learning Machines Technology Group formance 3D applications. Features joint elasticity, and other physical Sunnyvale, Calif. include scene management, hierarchi- attributes (including geometrical para- (408) 505-5398 cal state management, extensive vec- meters) to customize the Nomad char- http://www.lmtg.com tor and matrix support, multiple cam- acters. Built-in sensors and actuators era support, particle systems, texture (virtual muscles), allow you to design and image import in most of the pop- feedback controllers for Nomad charac- Easy 3D Audio ular formats, automatic MIP-map gen- eration, and more. QSOUND LABS has just launched Viskit is layered on OpenGL and QCreator, a 3D audio authoring tool DirectSound, and is compatible with for consumers and professionals. accelerated graphics. It sells for $99 Using normal .WAV or .AIFF mono with no additional royalties or licens- sound files, QCreator allows you to ing fees. The system requirements are position sound within a three-dimen- a 166 or greater, Windows sional space. When you open a mono 95/98 or Windows NT 4.0, OpenGL, sound file, QCreator automatically cre- and Microsoft Visual C++ 5.0. An ates an Edit Window to display the con- accelerated 3D graphics adapter is The Nomad/Virtual Human SDK has tents of the file as a waveform graph. A recommended. foot-terrain collision detection so special Pan Tool lets you decide where ■ Paradigm Entertainment Inc. characters can run over uneven the sound will appear in space — and Dallas, Tex. ground. how the sound will move. The result is (972) 960-2301 a customized sound file delivered in 3D. http://www.viskit.com http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER BIT BLASTS

tices.” The Creative complaint centers feature film, Star Trek: Insurrection. The Industry Watch primarily on a comparison chart pre- announcement represents the first pared by Aureal highlighting feature time that Viacom Consumer Products by Alex Dunne differences between their technology has entered into an exclusive umbrella and CL’s SoundBlaster Live! deal with an independent entertain- PARIS-BASED PUBLISHER AMERICA ONLINE signed a multititle ment software publisher. INFOGRAMES reported its results for distribution agreement with online SILICON GRAPHICS took a 10 percent the fiscal year ending June 30, and game developer, VR-1. In the deal, stake in graphics chip maker Real 3D things look much rosier for the compa- VR-1 will be providing AOL with three and said that the two companies would ny this year. Infogrames posted rev- new pay-to-play games in 1999. The undertake cooperative marketing, tech- enue of $271 million, compared to games included in the agreement nology, and business development. $118 million last year, amounting to a include VR-1 CROSSROADS,NOMADS OF Under the terms of the agreement, Real $15.5 million profit. Last year, the KLANTH, and THE S.A.R.A.C. PROJECT. 3D will be a preferred provider for company lost $6 million. The company Each of these games was built around future SGI workstation products. SGI attributed its success to several strong- the VR-1 Conductor technology plat- will assist in the marketing of Real 3D selling titles, including V-RALLY, which form, and each supports hundreds of products such as RealScan 3D, and the sold over two million copies world- players in a single arena. AOL has the two companies will collaborate on wide. Company president and CEO option to license up to four additional future software technologies and initia- Bruno Bonnell said that the company’s VR-1 titles. VR-1 also developed the tives. SGI’s investment is worth 10 MISSION IMPOSSIBLE title, which was first two pay-to-play games for between $20 million and $25 million released in July 1998 for the N64, has Microsoft’s online gaming service (now to the Orlando, Fla., company, accord- reached the million-units–sold mark. called the MSN Gaming Zone) and has ing to industry sources. Intel owns 20 SYSTEMS several international distribution agree- percent of Real 3D, while Lockheed reported financial results for its third ments in place, including one with Martin, which founded Real 3D in quarter, which ended September 30. BT’s WirePlay in the U.K. 1996, owns the remainder. The company’s net revenues were up 34 HERE’S ANOTHER ENGINE for your Separately, SGI and Real 3D agreed percent to $123.2 million, from $92.0 growing list of “technologies for sale.” to end litigation and entered into a million for the third quarter of 1997. 3DO announced plans to license the royalty-free graphics patent cross- The company incurred a net loss for engine for REQUIEM: AVENGING ANGEL, license. The agreement adds to licens- the third quarter of $22.2 million, com- which is slated for release in January ing deals Real 3D already has with pared to a net loss of $2.5 million in 1999. The Requiem Engine, according Lockheed Martin, Intel, and Sega. the third quarter of last year. William to Trip Hawkins, “has a notable pedi- Looks to be an amenable way to end a Schroeder, president and CEO, said that gree.” OK, Trip. Actually, this probably lawsuit, don’t you think? ■ the net loss was partly as a result of isn’t just hot air. The company’s “price protection charges related to our Cyclone Studios division, which is Monster3D II product, whose supply, headed up by General Manager Helmut along with that of other -based Kobler, also developed last year’s graphics subsystems, exceeded demand UPRISING title and does indeed have UPCOMING EVENTS during the third quarter.” good technical chops. We’ll find out AUREAL , which soon enough. builds the Vortex audio chip for ACTIVISION AND VIACOM CONSUMER sound cards (including Diamond’s PRODUCTS (the licensing division of CALENDAR Monster Sound MX300) received a Paramount Pictures) announced a 10- patent for a “Method and Apparatus year alliance that will allow Activision for Efficient Presentation of High- to develop and publish interactive GDC Roadtrip: Baltimore Quality, Three-Dimensional Audio, entertainment titles based on the Star BALTIMORE CONVENTION CENTER Including Ambient Effects.” It was the Trek franchise. Under the terms of the Baltimore, Md. th 19 patent for the company, and it agreement, Activision has obtained December 10 & 11, 1998 has 39 additional audio patent appli- the exclusive worldwide publishing $225 cations in the works. The company’s rights for multiple platforms to all http://www.gdconf.com/1998/ portfolio of interactive audio patents Star Trek properties, subject to the roadtrips are related to all sorts of head-related expiration of existing publishing transfer function (HRTF) technologies, agreements that Viacom Consumer including measurement HRTFs, ren- Products currently maintains with GDC Roadtrip: Boston dering HRTFs, and implementation respect to certain Star Trek properties. HYNES CONVENTION CENTER HRTFs. Creative Labs, however, hasn’t The deal also provides Activision with Boston, Mass. been too thrilled with some of exclusive worldwide rights to any new December 12 & 13, 1998 Aureal’s marketing and advertising television series or motion picture $225 claims, apparently. CL filed a lawsuit based on Star Trek. Activision intends http://www.gdconf.com/1998/ against Aureal claiming “false adver- to release its first Star Trek title based roadtrips tising” and “unfair business prac- on Paramount Pictures’ holiday ’98

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com BIT BLASTS

the “Rebuild with TrueTime” When TrueTime finishes compiling button. Your application your application, you run your instru- recompiles with TrueTime mented application via another instrumentation, links to TrueTime button on the IDE, which TrueTime, then executes. launches the TrueTime monitor. The Then, as your application TrueTime monitor is a status window runs, TrueTime records its that shows the timing information for timing information. When your application. TrueTime continues your application terminates, to monitor your program until it has TrueTime brings up a win- terminated, at which point the initial dow that displays various TrueTime interface comes up (Figure 1). performance statistics for The TrueTime interface is highly FIGURE 1. TrueTime’s initial interface. that profiling session. interactive, and allows you to quickly I began testing TrueTime drill down into your program to find using my favorite example, a the areas that take the most time. The Direct3D Immediate Mode application left-most column shown in Figure 1 is NuMega’s that translates an object to some dis- the Session Window and it simply dis- crete 3D location. Along the way, I plays information about the current TrueTime need to create a transformation matrix, TrueTime session. The interesting 12 which is generally composed of rota- information is contained in the Filter by Ron Fosner tions about the x, y, and z axes, plus a Pane, located in middle column. From translation. This code is part of an the highlighted bar in this column you s Dan Teven mentioned last example that I use in my course on can see that MATRIX.EXE, the test har- december, Game Developer code optimization to illustrate how to ness, takes up over 99 percent of the A magazine has reviewed a slew use the matrix manipulation routines time. Just below that, you can see that of profiling tools recently. This is no provided with Direct3D Immediate “System” takes up the remainder. The accident. We’ve made a very conscien- Mode. Unfortunately, this example cre- item highlighted in the Filter Pane dis- tious effort to cover these types of ates a transformation matrix that is plays relevant data in the right pane, tools for a good reason. While every- composed of a translation and three called the Session Data Pane. By select- one is busy jumping on the 3D hard- rotations in a mathematically ineffi- ing the executable, the Session Data ware acceleration bandwagon, it’s easy cient manner (four matrix multiplies Pane displays timing data for the entire to forget the mantra of the game devel- that are easily simplified), while also program. The other top-level tabs in oper: quick, tight code. Just because being inefficient with temporary stor- the Filter Pane allow you to filter the everybody assumes that game players age. Straight out of the SDK, this code display by various function definitions. have 3D accelerators doesn’t mean that exhibits numerous inefficiencies. In Figure 1, the Session Data Pane we can code like we’re building a word Because I already have an optimized indicates that the function takes up processor. version, I wanted to see how TrueTime the majority of time spent in the pro- TrueTime integrates right into the would profile the original source. gram. The “% in Function” column Visual C++ development environment. I first created a test harness that sim- tells how much time was spent just in This integration, combined with its ply called one particular code segment a particular function. The “% with excellent user interface, makes it easy from the Direct3D application in a Children” column shows how much to profile an application. The downside loop. With this working harness, it was time was spent in a function plus all of is that its suggested retail price is simply a matter of pushing the the other functions that were called slightly higher than that of VTune, but TrueTime button in the IDE to recom- while we were in this function. The you can get a free evaluation copy first pile my application with TrueTime last two columns describe how many from Compuware to determine instrumentation. During this process, times the function was called and the whether it’s worth the investment. the application’s source files get recom- average execution time of the function. THE TRUETIME TRIALS. Installing piled with invisible wrappers around There are many other options that can TrueTime is easy, and once completed, all the function entry and exit points, be displayed in the Session Data Pane, the application adds a special toolbar which puts these into a TrueTime data- including the first, maximum, and to your Visual C++ IDE. With this tool- base. TrueTime can then measure the minimum execution times of the func- bar in place and a project loaded, you time spent in a function, as well as the tion, the average execution time have the option of instrumenting all or time spent in each function that a par- including children, and so on. just part of your application. Profiling ticular function calls — right down to The Session Data Pane illustrates your application is as easy as selecting operating system calls. TrueTime’s excellent user interface. Double-clicking on the MatrixMult func- Ron Fosner works on fast 3D rendering code at Data Visualization, is the author of tion in the Session Data Pane brings OpenGL Programming for Windows 95 and Windows NT from Addison-Wesley, up the Function Details window and has taught course on code tuning at the Game Developer’s Conference and the shown in Figure 2. The two pie chart Win-Dev conferences. sections give details about both the functions that call MatrixMult and func-

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com Excellent Very Good Average Below Average Poor tions that MatrixMult calls itself. As you with the development environment. can see, only the pass1 function calls On the negative side, TrueTime is MatrixMult. More interesting informa- an instrumenting profiler. This means tion can be gleaned by examining the that every function call that you’re child functions that MatrixMult calls. profiling has to have a TrueTime Additional details appear when the wrapper around it before it’s executed. cursor hovers over a particular area. This means your program will typical- For instance, in Figure 2, my cursor is ly run two to three times slower than over the yellow slice of the pie chart the non-instrumented version. and a pop-up informational window Additionally, TrueTime by default has appeared. The green slice indicates won’t measure any threads that are time spent in the function itself, the outside of your process. If you want a other slices indicate time spent in more “system-wide” profile, NuMega other functions called from MatrixMult. has something it calls Quantum Of particular interest are the yellow Technology. Basically, it’s simply a and blue slices, which contain method of including or excluding D3DMatrix::Operator(), and D3DMatrix::Op- time spent in other processes. FIGURE 2. TrueTime’s Function erator()_25f0. The former is the compil- However, this doesn’t extend into sys- Details window. er-generated name for the “( )” opera- tem calls. This means that if you’re 13 tor (the parentheses operator) for the thrashing virtual memory, you won’t D3DMatrix class from the DirectX SDK. see it. But by far I feel the biggest neg- Checker and SoftICE), it may be a bet- The latter name is a bit obscure, but ative is its price: $499 for the stand- ter deal to purchase it within that thankfully a button in the upper left alone version (up from $399 in suite of products if you don’t already corner of the window displays the September 1998, and now more own them. source code of the currently selected expensive than VTune). With the cur- So, how does TrueTime compare to function. Double-clicking on the rent version, it’s impossible to turn VTune? Well, it’s a little easier to use D3DMatrix::Operator()_25f0 line in the profiling on or off — it just runs and the integration with the Visual Function Details window brings up while your application is running. I C++ IDE is excellent. While VTune will D3DMatrix::Operator()_25f0. If we click on pointed out this fact to the folks at force you to profile the entire system, the source button, the Session Data NuMega, and they informed me that TrueTime will profile just your applica- Pane will then display the source for they’re building this feature into the tion. Additionally, TrueTime just pro- D3DMatrix::Operator()_25f0. The left next version. files source code, not the actual assem- columns indicate the count and the Despite some of these problems, I bly-level statements. If you need to execution time percentage for each feel that TrueTime is excellent for any profile either the system or you do line of the program. Unlike Intel’s programmer looking to find out how occasional assembly code optimiza- VTune, which disassembles source code his or her application really spends its tions, then you might want to stick and displays assembly instructions and time. And, given the fact that with VTune. But if you just want to get performance information, TrueTime TrueTime is also bundled with up and running quickly, and you use stops at the source code level. NuMega’s DevPartner Studio (which Visual C++, TrueTime may be the prod- With TrueTime, it’s just as easy to includes utilities such as Bounds- uct for you. ■ profile a retail build as a debug build. If you do, that you’ll find that the oper- ator() measurements go away. However, TrueTime 1.0 for Visual C++: if you’re like me, you spend most of Company: Pros: Cons: your time running the debug build, Compuware (NuMega) 1. TrueTime features an 1. TrueTime only works and it’s easy to get a skewed view of Nashua, N.H. easy-to-use interface for with Microsoft develop- your program’s performance, because (603) 578-8400 viewing timing informa- ment tools. an often called utility class contains a http://www.numega.com tion. 2. It slows down the high overhead in debug mode. Price: 2. It integrates well with- speed of your application Another nice feature of TrueTime is its $499 (DevPartner Studio in Visual C++ while it’s testing it. ability to display the results of more is $1,199). 3. TrueTime makes it 3.It’s slightly (about $70) than one timing session in multiple System Requirements: easy to profile release more expensive than windows simultaneously. Windows 95/98, builds Intel’s VTune. (These Thanks to TrueTime’s timing infor- Windows NT 4. Requires tools are getting a bit mation, you can make modification to Visual C++ 4.2 or higher, pricey.) your code based on timing results, test Visual J++ 6.0 or Visual 4. TrueTime doesn’t drill new these new strategies, and verify Basic 5.0. Requires a down into assembly like their results. These are all features that Pentium processor, 32MB VTune can. should be present in any good profiler. RAM, and approximately But TrueTime make these tasks very 17MB of disk space. easy thanks to its seamless integration http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER by Jeff Lander GRAPHIC CONTENT

Mighty Morphing Mesh Machine

ost game people have played around with those programs that will morph between two graphic images. They allow you to take a picture of your brother and a picture of a freckle-faced baboon, play with the Msliders, and enjoy hours of endless amusement. Now, think about the fun you could ture-happy marketing dudes) are talk- between the vertex positions in the have morphing between a 3D model of ing about when they talk about inter- two objects. For this technique to your brother and the monkey — that polated in-betweens. But what exactly work, the two models you are morph- could make your week. Most 3D ani- is being interpolated? ing between must have identical vertex mation packages will allow you to do counts, and the vertices must corre- this, but what you might really be spond to each other. This means that 15 looking for is a real-time 3D demo fea- LERP = Morph vertex 1 on the first model should end turing your brother in some sort of up in the position of vertex 1 in the failed lab experiment that you could his is an important equation in the second model. The easiest way to make mercilessly blow away. Or something T game programmer’s arsenal. Many sure that the models are created cor- like that… programmers who have been working rectly is to actually create the second To engage in this advanced level of in 3D for some time take this for grant- model by moving the vertices in the fun, you need a method for morphing ed as widely known information. But first model into the shape you want. between two 3D shapes. This tech- judging by the mail I get and the com- That way, the models will interpolate nique is not only amusing, but also ments I see in the public forums, there exactly the way you created them. By quite useful. 3D morphing can help are many individuals who aren’t up-to- now you have the models and want to create organic animation that would speed on how morphing works. The morph between them. The formula for otherwise be difficult to develop. secret to object morphing is that the a LERP between two values is only thing that changes between the two models is the vertex positions in InBetween = Value1 + ((Value2 - Value1) * Morphing and the object (a little white lie — I’ll get to lerpValue); Real-Time 3D Animation the truth later). When you morph Where lerpValue is a float between 0 and 1. between 3D objects, you are doing a nother use for 3D morphing is “linear interpolation,” or LERP, Now, this formula needs to be applied A smoothing between keyframes. In games such as QUAKE 2, you may read that the animation in-betweens are interpolated. I have discussed before how in QUAKE (and many 3D action games) each frame of anima- tion is actually represented by an indi- vidual mesh. By sequencing through those meshes, the illusion of anima- tion is created. However, the original object frames are created at a set , say 10 frames per second (FPS). This means that the smoothest those animations can play back is at that original 10 FPS. If, for example, the FIGURE 1B. The same model, frame engine is actually displaying at 60 FPS, FIGURE 1A. Your model at rest, for two. You’ll get smoother animation each frame of character animation is the first frame of animation. by morphing between frames. held for six frames. That’s quite a wasted opportunity. Smoother anima- tion could be achieved by morphing Morphing between a lounging postion on the beach and a slave position at his desk, from one frame to the next over those Jeff can be found at Darwin 3D working on real-time game technology. Email him at six frames. That is exactly what the [email protected] with suggestions for the next keyframe. “feature hypers” (you know, the fea- http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER GRAPHIC CONTENT

to every parameter that will vary during possible. Multitexture hardware can PHA and D3DTOP_BLENDDIFFUSEALPHA in the morph. For a 3D vertex coordinate, provide a hardware-accelerated method DirectX 6 (See “Multitexturing in those parameters would be the x, y, and for blending between two textures via DirectX 6,” Game Developer, September z values for that point. This is where I methods such as the D3DTOP_BLENDFACTORAL- 1998). With multitexture hardware explain the truth behind that little white lie. There may be more parame- LISTING 1. The morph code. ters than just the coordinates which you wish to interpolate for an individual #define LERP(a,b,c) (a + ((b - a) * c)) vertex. If your game engine supports /////////////////////////////////////////////////////////////////////////////// real-time lighting and your model data // Procedure: morphModel contains vertex-normal information, for // Purpose: Does the Morph for the Model example, you may want to interpolate // Arguments: Pointer to main bone the normal values as well. Also, if your /////////////////////////////////////////////////////////////////////////////// model contains vertex color informa- GLvoid COGLView::morphModel(t_Bone *curBone) { tion, an interesting effect may be creat- /// Local Variables /////////////////////////////////////////////////////////// ed by interpolating the color. int loop,pointloop; What about textures? If your 3D float *dest,*src1,*src2,ratio; model contains texture coordinates, /////////////////////////////////////////////////////////////////////////////// you may want those coordinates to if (curBone->visualCnt > m_curVisual) 16 change over time as well. However, { there are many possible pitfalls associ- src1 = curBone->visuals[0].vertexData; // FRAME 1 ated with morphing textures. Small src2 = curBone->visuals[1].vertexData; // FRAME 2 changes in UV coordinates can cause a dest = curBone->visuals[2].vertexData; // DESTINATION FOR MORPHED FRAME major shift in the appearance of a ratio = m_Slider->GetSetting(); // GET MORPH VALUE (0 - 1) // LOOP THROUGH THE VERTICES model that may not be desired. for (loop = 0; loop < curBone->visuals[0].triCnt * 3; loop++) Likewise, it may be more interesting to { change the texture completely for the // GO THROUGH EACH ELEMENT IN THE VERTEX STRUCTURE second position. This complicates for (pointloop = 0; pointloop < curBone->visuals[0].vSize; pointloop++) things a bit. However, if the UV coordi- { nates stay constant throughout the // THE NEW POSITION IS A LERP BETWEEN THE TWO POINTS morph and only the texture changes, dest[(loop * curBone->visuals[0].vSize) + pointloop] = image processing techniques can help. LERP(src1[(loop * curBone->visuals[0].vSize) + pointloop], By using a 2D dissolve to create a blend- src2[(loop * curBone->visuals[0].vSize) + pointloop],ratio); ed image between both textures, this } } will smoothly change along with the } model. These blended textures could } either be prebuilt as a texture anima- // morphModel tion or actually created on-the-fly, if

TABLE 1. A comparison of different formats.

Format Used Exported Imported Normals Poly Vertex UV Coords Animation Hierarchies AscII Ease of Use By By By Color Color (10 = Easy)

.3DS 3DS R4 1,2,8 1,2,8 X X X X X X 6 (w/ KTX lib) .3DS AscII 3DS R4 1 1 X X X X X X X 6 .DXF Autocad 1,2,3,4,6,7,8 1,3,5,6,7,8 X X X 7 LWOB Lightwave 5 5 X X X 5 .OBJ Wavefront 2,3,6,7,8 2,3,6,7,8 X X X X X 10 Game Exchange Nichimen 7 7 X X X X X X X 9 .HRC Softimage 8 8 X X X X X X 1 MAX 3DS MAX 2 2 X X X X X X 0 (Max only) Maya ASCII Maya 6 6 X X X X X X X 8 VRML VRML 2,7,8 2,7,8 X X X X X X X 6 .X Direct X 2,7,8 2,7,8 X X X X X X 7

Program Names: 1 .3DS R4 2 .3DS MAX 3 Alias 4 Hash 5 Lightwave 6 Maya 7 Nichimen 8 Softimage

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com GRAPHIC CONTENT

becoming more common, this could format contains all the information The next block of information actu- be an area to add value to your hard- that the application requires and is easy ally describes the vertices. Each line ware-accelerated application. to use. The ideal format is also public, starts with a v and is followed by the x, This algorithm is actually very easy meaning that information is publicly y, and z coordinate values. The com- to get up and running. You can see the available describing the format. Code ment at the end actually tells you the code for a 3D morph in Listing 1. One samples are even more desirable. number of vertices. But, that doesn’t easy optimization to make would be to So, which file format is the best one seem to be a standard feature of this precalculate the deltas between each for you? Table 1 (see page 16) contains format, so you shouldn’t count on it. parameter to remove a subtraction a list of several file formats along with The vn block gives the x, y, z, values operation. In the case of an animation some information about them. This is for the normals in the model and the system, predividing the deltas by the by no means comprehensive, but the vt block describes the texture coordi- number of desired in-betweens would list offers a glimpse of what’s out there. nates. The texture coordinates can be turn it into a pure addition operation. Ease-of-use is an opinion gathered from either two coordinates (u and v) or That’s all there is to 3D morphing. my own experience and from dis- three (u, v, and w). For most real-time Given how easy a 3D morph actually is cussing it with other programmers. applications, however, the w value to implement, I wonder why we don’t The key to finding a format to sup- could be ignored. A 3D model may see it more in real-time 3D games. port in a custom tool is to pick a for- have normals or texture coordinates, There are many uses for this technolo- mat that contains all the information or both, or neither, but it obviously gy. Beyond creating in-betweens for that is critical to your application. If 18 character animation, morphing is an your game engine uses vertex coloring, LISTING 2. An OBJ Cube. excellent way to change the shape of make sure the format supports that characters. It can also be used to create feature. It’s also helpful to pick a for- o cube1 facial animation and other special mat that is supported by your or your effects. Hopefully, we will start to see artist’s favorite art tool. There are com- mtllib cube.mtl more in the next generation of real- mercial 3D file converters available, time projects. but they add cost and an additional v -5.000000 -5.000000 -5.000000 step to the production process. Also, v -5.000000 -5.000000 5.000000 using an ASCII format makes checking v -5.000000 5.000000 -5.000000 v -5.000000 5.000000 5.000000 your data and debugging the process Getting Your Model Data v 5.000000 -5.000000 -5.000000 much easier. v 5.000000 -5.000000 5.000000 o, you’re ready to start morphing I have found that one of the easiest v 5.000000 5.000000 -5.000000 S every object you can get in your to use and most widely supported for- v 5.000000 5.000000 5.000000 hands. That brings up an important mats is the Wavefront .OBJ format. It # 8 vertices question. How do you get your hands contains support for UV coordinates as on model data? When it comes to game well as for vertex normals. The format vn -1.000000 0.000000 0.000000 companies with staff artists and tool is so easy that you really don’t even vn 0.000000 0.000000 1.000000 programmers, many rely on high-end need a spec to write a file loader. Listing vn 1.000000 0.000000 0.000000 animation packages with SDKs. These 2 shows a simple cube in .OBJ format. vn 0.000000 0.000000 -1.000000 vn 0.000000 -1.000000 0.000000 toolkits allow the programmers to write Lines that begin with the pound sign # vn 0.000000 1.000000 0.000000 plug-ins that allow them to get to the are comments and can be ignored. The # 6 normals data directly. This is not always possi- initial o cube1 defines the name of the ble. Some programmers do not have the object. That is followed by the mtllib vt 0.000000 0.000000 money, time, or experience to get mod- cube.mtl. This line describes a file that vt 0.000000 1.000000 els this way. The other option is to use contains material information about vt 1.000000 0.000000 a public 3D file format. The ideal file the object. But more on that later. vt 1.000000 1.000000 # 4 texture vertices

usemtl mat1_FACE f 1/2/1 2/4/1 4/3/1 f 1/2/1 4/3/1 3/1/1 f 2/2/2 6/4/2 8/3/2 f 2/2/2 8/3/2 4/1/2 f 6/2/3 5/4/3 7/3/3 f 6/2/3 7/3/3 8/1/3 f 5/2/4 1/4/4 3/3/4 f 5/2/4 3/3/4 7/1/4 f 5/2/5 6/4/5 2/3/5 f 5/2/5 2/3/5 1/1/5 f 3/2/6 4/4/6 8/3/6 f 3/2/6 8/3/6 7/1/6 FIGURE 2A. Your “brother” mapped FIGURE 2B. The original figure mor- # 12 elements onto a 3D model. phed into a baboon.

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com GRAPHIC CONTENT

must have the vertex values. together so the file can contain multi- nates for which I need to allocate The final block in the file begins with ple objects even in a hierarchy. This is space. Then, all the actual coordinate the usemtl mat1_FACE. This says to the definitely handy when working with values are simple to load in. The only loader, from now on all faces defined hierarchical characters. tricky part comes in when I want to should use the mat1_FACE material. This load in the face indices. You can see material is defined in the cube.mtl file. how I approached that in Listing 4. All lines that begin with an f describe a Writing a .OBJ File Loader The point of this loader is not for me face in the model. Each face can be to show highly optimized, well formu- composed of multiple vertices. Each he MFC CString class makes string lated code samples for loading these face is not required to have the same T manipulation much easier than in files. My code here certainly is not fine- number of vertices. However, because it basic C. For custom tools, this means tuned in any sense of the word. The is more efficient for 3D hardware if all loading ASCII file formats is easier than great thing about creating production faces have the same number of vertices, ever. My strategy is to load a line of tools is that, unlike almost all other I make sure this is the case. I could tes- text from the file and then break it up sellate the face to triangles at run time, into a string of words in a CStringArray LISTING 3. MTL file for the Cube. but this is really easy to do in the mod- structure. If you haven’t used the eling program. Therefore, I just make it CString class, it will bring back fond newmtl mat1_FACE a requirement that all models are trian- memories of BASIC string handling. Ka 0.5000 0.5000 0.5000 gulated before exporting. A pop-up box I don’t want to go through the entire Kd 0.7000 0.7000 0.7000 20 in the loader can warn users that a face .OBJ loader here. You can just grab it Ks 1.0000 1.0000 1.0000 is not triangulated. off the web site (http://www. Ns 50.0000 In the face statement each vertex is gdmag.com). However, my strategy for Ni 1.0000 illum 2 defined by three elements separated by loading an .OBJ file is to pass through map_Kd FACE.pic forward slashes that describe the ver- the file once, determining how many tex, texture coordinate, and normal for vertices, normals, and texture coordi- that face. The values are indices into the list of elements already defined. LISTING 4. Handling a face line in an .OBJ. It’s important to notice that these indices are one-based instead of zero- /////////////////////////////////////////////////////////////////////////////// based. In a file that only has vertex // Procedure: HandleFace coordinates (and not normals or tex- // Purpose: Handles the Face Line in an OBJ file. Extracts index info to ture vertices), the vertex index will be // a face Structure followed by two slashes as in f 1// 2// // Arguments: Array of words from the face line, place to put the data 3//. Likewise, if there is a vertex and a // Notes: Not an Official OBJ loader as it doesn't handle more then normal, the format is f 1//1 2//2 3//3 // 3 vertex polygons. This only handles Triangles and so on. Each vertex in the line is /////////////////////////////////////////////////////////////////////////////// separated by a space. void HandleFace(CStringArray *words,t_faceIndex *face) You can see a material file in Listing { 3. The file can describe multiple materi- /// Local Variables /////////////////////////////////////////////////////////// int loop; als. Each one begins with newmtl and the CString temp; name of the material in this case CString vStr,nStr,tStr; // HOLD POINTERS TO ELEMENT POINTERS mat1_FACE. The next lines Ka, Kd, and Ks int nPos,tPos; respectively describe the ambient, dif- /////////////////////////////////////////////////////////////////////////////// fuse, and specular color for the materi- // LOOP THROUGH THE 3 WORDS OF THE FACELIST LINE, WORD 0 HAS 'f' al. The Ns term describes the specular for (loop = 1; loop < 4; loop++) highlight. I have never had a need for { theNi and illum term, though they are temp = words->GetAt(loop); // GRAB THE NEXT WORD there if you want them. Finally, the // FACE DATA IS IN THE FORMAT vertex/texture/normal map_Kd describes the diffuse map applied tPos = temp.Find('/'); // FIND THE '/' SEPARATING VERTEX AND TEXTURE to the object. In other words, this is the vStr = temp.Left(tPos); // GET THE VERTEX NUMBER texture map that should be applied to temp.SetAt(tPos,' '); // CHANGE THE '/' TO A SPACE SO I CAN TRY AGAIN the surface. I use this name as the name nPos = temp.Find('/'); // FIND THE '/' SEPARATING TEXTURE AND NORMAL of the file loaded by the application. I tStr = temp.Mid(tPos + 1, nPos - tPos - 1); // GET THE TEXTURE NUMBER just convert the image to a .TGA or nStr = temp.Right(temp.GetLength() - nPos - 1); // GET THE NORMAL NUMBER .BMP file to make use of existing file face->v[loop - 1] = atoi(vStr); // STORE OFF THE INDEX FOR THE VERTEX loading code. face->t[loop - 1] = atoi(tStr); // STORE OFF THE INDEX FOR THE TEXTURE See there, I said it was an easy format. face->n[loop - 1] = atoi(nStr); // STORE OFF THE INDEX FOR THE NORMAL } Actually there are other blocks that may } be useful in a real-time simulation that ///// HandleFace ////////////////////////////////////////////////////////////// are not in my sample file. The g com- mand allows faces to be grouped

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com coding in the game industry, the focus is not directly on the speed of the rou- tine. It doesn’t have to be very fast. In fact, when working on tools, it is often better to sacrifice speed for clarity. Often, a tool that you create now and will have a long life and pass through many hands after you. This is not usu- ally true of the actual game code (no matter what your producer may want to think) as most core game routines are rewritten for each project. Tools tend to linger. The point of showing these types of file loading routines is to demonstrate how easily it can be done. I talk to pro- grammers who say they understand the algorithms but have no models with which to work. They are not comfort- able writing a 3D Studio MAX plug-in 21 to get models. I hope that this shows that very commonly used 3D file for- mats can be easily integrated into your own production tools. Once you build up a library of routines like this, you can easily get models to work within your game applications. If you create a loader for a commonly used format, there are models everywhere that you can use. For actual production applica- tions, I tend to create custom binary formats because they are compact and exactly tuned to the application. But by loading a general format, you can easily make a file converter. This month, I have provided an appli- cation that allows you to load two .OBJ files that have identical vertex arrange- ments. You then can use the slider to morph between the two. The program can handle objects with and without . Grab it at the Game Developer web site at http://www.- gdmag.com. Special Thanks to Bennie Terry for providing the model, and to Eddie Smith for providing the texture map for the LAG14 character from their real-time action title, ARIES PROJECT. ■ F O R F U R T H E R I N F O You can find a list of 3D file formats and their specs at: http://www.cica.indiana.edu/graph- ics/3D.objects.html

Rule, Keith. 3D Graphics File Formats : A Programmer's Reference. Addison- Wesley, 1996.

Covers the .OBJ, .3DS, and VRML file formats, among others.

http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER ARTIST’S VIEW by Mel Guymon

So, You Want to Make a Console Game?

ou’re not alone. When you compare the $900 million in revenue generated by the PC gaming industry to the $25 billion brought in by the console mar- Y ket, it’s not hard to see why. High volume sell through, a virtual absence of hardware compatibility issues, and a resent story-telling FMVs, and fully reject the product based on it’s failure to 22 thriving rental industry are leading immersive RT3D combat arenas. meet their company standards. more and more PC developers to Production on the title started back in Sound strange? Well, imagine if, release console versions of their most mid-1997, when, after an initial design when the time came to get your alpha popular titles. phase, the art team was assembled and milestone approved for your PC title , This month, we’re going to switch work began on the FMVs and the more that you had to submit a version to Intel gears and examine some of the aspects than 800 interactive backgrounds for or 3Dfx along with the one you send up of developing content for the two con- the game. The engineering team was to your publisher. In essence , that’s sole powerhouses, the Sony PlayStation, assembled some months later, when the what it comes down to. and Nintendo’s N64. With the help of art path and toolset for actually getting DEVELOPMENT STRATEGY. Early on, the two local developers, Crave data into a 3D engine was created. developers at Crave chose the PSX as the Entertainment and Snowblind Studios, THE SONY APPROVAL PROCESS. Every PSX target platform. One of the many rea- we’ll look at the problem from the game that you see on the shelf has sons for going this route was the PSX’s standpoint of “How They Did It” and Sony’s stamp of approval on it. This ability to seamlessly display full-length try to pre-emptively address some of the means it has met the rigorous standards prerendered FMVs, a tool the developers technical dos and don’ts you’re likely to of content and quality that Sony uses to planned to exploit fully as part of the come across. For those console veterans judge games released on it’s platform. story-telling process in the RPG. With out there, consider this a refresher How does this work? Well, first of all, this exceptional functionality came a course and a discussion of what some of there are a limited number of slots given slew of technical challenges, which had your peers in the industry are doing. out each year to developers. Some of the to be addressed before the game went major players, such as Eidos and Square into full production. for example, are allotted slots carte- The most challenging aspect of devel- Sony’s PlayStation blanche, based on past performance. oping on the PSX was the limited But most developers must first go amount of storage space (2MB of RAM) o start off, we’ll look at the aging- through an initial design and planning available to the artists — texture maps, T but-still-popular Sony PlayStation. phase to get Sony to buy-off on their With more than 30 million units on the game concept. During the development worldwide market (as of February 1998), lifecycle, Sony keeps tabs on the prod- the PlayStation user base is staggering. uct’s content and quality, and in most And with games such as FINAL FANTASY cases, has the authority at any time to VII, GRAN TURISMO, and the Resident Evil franchise, the platform shows no SHADOW MADNESS sign of slowing down. To round out the Category: RPG PlayStation perspective, we’ve inter- Format: PlayStation viewed the SHADOW MADNESS team over Developer: Crave Entertainment at Crave Entertainment. Publisher: Crave Entertainment THE GAME. SHADOW MADNESS (due out in Release Date: Q1 1999 FIGURE 1. SHADOW MADNESS. Spring 1999) is Crave’s attempt to break into the lucrative RPG franchise busi- ness. The game play follows the format Mel has worked in the games industry for several years, with past experience perfected by Squaresoft’s FINAL FANTASY at EIDOS and Zombie. Currently, he is working as the art lead on DRAKAN VII with real-time 3D (RT3D) characters (http://www.surreal.com). Mel can be reached via e-mail at [email protected]. exploring static backgrounds, the everp-

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com TECHNICAL TRICKS AND CHALLENGES. Overall, the problem that the artists kept run- ning into was how to efficiently use the 2 MB of RAM they had in their budget. Because the background images couldn’t really be optimized, the bulk of tweaking time was spent on the 3D characters and geometry. The characters in the game were expensive mainly because of the tex- tures and animations associated with them. Consequently, this is where most FIGURE 2. Weeble mode. FIGURE 3. Battle Mode of the effort was put to try to streamline the already expensive process. VERTEX COLORS INSTEAD OF TEXTURES. Vertex color look-up tables, animations, geom- fully interactive 3D environments with colors were used in addition to, and in etry, and static backgrounds all have to higher-resolution character models. place of, textures for each character (for fit in this window of memory. To create Battle mode is closer to what players more on vertex coloring, see “Painting an immersive gaming experience then, have come to expect in RT3D. Here, the With Vertex Colors” Game Developer, the folks at Crave opted for two differ- focus shifts from telling the story to November 1998). Colors were applied 23 ent modes of play. dynamic real-time action. Fully immer- directly in 3D Studio MAX with the ver- Weeble mode (Figure 2), is used by the sive, interactive environments, with an tex coloring tool. Figure 3 shows an player when navigating the environ- active camera that can swivel and pan example of characters in the game that ment. This mode is characterized by low- around the battle arena, characterize this were painted almost entirely using ver- resolution character models animated phase of the game. In battle mode, the tex coloring. on a scrolling or static background. Most characters are higher-resolution, and the .HMD AND KEYFRAME INTERPOLATION. When of the memory is taken up by high-reso- environments are composed mainly of it came to determining a format in lution background images and overlays. textured 3D objects, with only cursory which to store and access the 3D geom- The hurdles in weeble mode dealt background images for environmental etry and animation information, the mainly with cinematic feel and camera texture mapping. Because the characters developers had three options: MIME, control, because this is where most of take up much more screen space in bat- .TOD/.TMD, and the new .HMD for- the non-FMV storytelling takes place. tle mode, they need to have a propor- mat. Each had its respective advantages Each static background, then, became tional amount of complexity associated and disadvantages, but .HMD was the equivalent to a stage on a film set. By with them. Here, the characters have only unproven format because it was taking advantage of overlays for creating roughly twice the number of polygons new and there was relatively little docu- parallax, the team was able to create (300 to 400 polygons each) and a much mentation on it. The one big advantage seemingly 3D environments using only smoother set of animations. (Crave’s that .HMD had was the freedom it pro- static backgrounds. To do this, the team engine took advantage of the new .HMD vided for the programmers to access the incorporated knowledge gained from the format for PSX, which allows real-time keyframe data. This allowed them to film industry — camera control and interpolation between keyframes, giving generate algorithms for real-time inter- field-of-view manipulation became key, a much smoother feel with a lot fewer polation, so that an animation that with each artist responsible for creating stored keyframes.) the correct mood in his or her area. PlayStation Art Path In weeble mode, the characters take Memory Usage (2MB) Prerendered RT3D Characters up a relativley small percentage of the Weeble Mode Battle Mode Backgrounds and Environments viewing area. Consequently, they can be Power- Power- lower-resolution (around 100 to 140 Backgrounds Animator 8.5 Animator 8.5 polygons) and use fewer textures, there- Backgrounds & by allowing more characters on screen. Overlays Textures Photoshop .DXF Format Additionally, their animations can be of 3D Studio MAX 2.0 lower complexity. Finally, the savings in 3D Studio Game Engine texture space, polygon storage, and char- MAX 2.0 acter animation translates directly into Animation .HMD Textures Export Tool additional space for background images .HMD and overlays. Determining the right bal- Export Tool ance of textures, geometry, and anima- Animation RT3D Geometry tions early on proved crucial to complet- RT3D Geometry ing the project in a timely manner. Game Engine Fonts Fonts Battle mode, as illustrated in Figure 3, is used for close encounters with NPCs FIGURE 4. What fits into 2MB ? FIGURE 5. The PlayStation art path. or enemy characters. Battle mode uses http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER ARTIST’S VIEW

classically would have used 30 frames The blinders on (sorry, couldn’t resist that could be created with 7 keyframes. one). As with the PSX, the sheltered N64 Having an engine that provides for real- lthough it arrived relatively late in market promised to be extremely lucra- time interpolation between keyframes A the game, many developers think tive to the developers. The relative means that each animation sequence the polished look and feel of the N64’s dearth of racing games on the N64 was can be made up of very few actual data- technology were worth the wait. an added bonus. The N64’s rendering points, with the engine providing the Boasting a user base of over 7 million features included several that were not smooth transition between keyframes units (as of September 1998), the latest available on PSX, such as perspective and poses. Overall, this meant a much version of Nintendo’s console line has a correction, tri-linear filtering, and Z- smaller allocation of expensive memory lucrative market ready to be exploited buffering, to name a few. And the lack space for any given animation, and a by the savvy developer. To examine the of a need for any cinematics meant larger total number of animations N64 platform development process, there was no real need to go with a CD- allowed for each character. According we’ll look at a game that is just finishing based system. to Crave, the game could not have been production over at Snowblind Studios, Obviously, getting the artists off to finished without using the new .HMD TOP GEAR OVERDRIVE. an early start on a development cycle format, which to date has not been THE GAME. TOP GEAR OVERDRIVE (TGOD) this short was crucial. In order to famil- used on any published title. is Snowblind’s first title, and is based iarize the art team with the limitations TOOLS. Once the technical hurdles were on the Top Gear franchise created by of the system, their strategy, says Raoul addressed, the team had to choose tools. Kemco of Japan. The self-proclaimed Said, a programmer at Snowblind, was 24 Two main goals needed to be achieved: goal at Snowblind was to create a rac- rapid generation of high-quality preren- ing game with a more “arcade-like” dered PowerAnimator content, and feel. The game boasts over 30 tracks, fully-textured and animated RT3D char- myriad driving conditions, and over 20 acters. For this task, the developers cars to choose from, including the new chose PowerAnimator 8.5 and 3D VW Beetle. The fact that the game is Studio MAX 2.0. The proven high-quali- near completion and has only been in ty rendering capabilities of Power- production for about nine months is a Animator were augmented by interfac- testament to the efficiency and techni- ing with Renderman. cal know-how of the six-man develop- Figure 5 shows the art path Crave used ment team working at Snowblind. to create content for their title. Most DEVELOPMENT STRATEGY. With some experi- RT3D modeling was done within 3D ence on the platform prior to starting Studio MAX, with the bulk of cinematics work on TGOD, Snowblind wasn’t FIGURE 6. TGOD for the N64. and static backgrounds done with going into the situation well, er, with NURBS in PowerAnimator 8.5. The developers wrote a plug-in to export geometry, texture information, and ani- mation from 3D Studio MAX to the .HMD format, consequently, all the RT3D data had to pass through MAX. In addition to the off-the-shelf tech- nology, there were several in-house tools developed, including one which allowed the artists to physically place each texture in memory. This allowed for the most efficient use of space when storing differently sized textures with variable bit depths, a process that is hard to automate effectively. At the time of the interview, the product was well on it’s way to comple- tion. SHADOW MADNESS had just reached alpha, and was on track for a Q1 1999 release date.

TOP GEAR OVERDRIVE Category: Format: N64 Developer: Snowblind Studios Publisher: Kemco Release Date: Q4 1998 FIGURE 7. PC-compatible version of TOP GEAR OVERDRIVE.

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com ARTIST’S VIEW

to “… have one programmer jump ble. This, of course, grew easier with background images had to be cut up into ahead on the game framework and car practice, until the artists got to the smaller individual pieces in order to physics code (on OpenGL/PC) while point that they could create a track from meet the size requirements. Figure 9 another programmer brought our N64- start to finish in under three months shows an example of an environment specific code up to speed, while the (for one artist working on one track). map used for one of the sky domes. This third programmer helped out on tools. The second challenge, that of total texture map, a tiling sky piece, had to be The game ran on N64 dev stations from memory storage, was tackled by setting cut up into 36 smaller textures and very early on.” Figure 7 shows the PC a limit on the total number of polygons mapped onto a 170 polygon dome. compatible version of the game. in a track (around 10K polygons, includ- THE INTENSITY ALPHA TEXTURE. IA4 for short, This gave the art team access to the ing physics barriers), thereby setting a the intensity alpha texture is a feature nuances of N64 development prior to limit on the actually size of the geome- found only on the N64 Platform. Used entering full production, which allowed try in memory. Surprisingly, those inno- extensively by the artists at Snowblind, them to streamline their art path to cent little polygons turned out to be the IA4 texture provides a space-effi- what was necessary and efficient. gluttons for space. In addition to the cient way to create texture maps. TECHNOLOGY TRICKS AND CHALLENGES. As with raw geometry, additional data tied into Here’s how it works. You create a tex- the PSX, the development challenges radiosity information (for soft shadows) ture using a grayscale palette, and then were somewhat offset by myriad tech- and visibility set information had to fit choose two bounding colors to use as nical features aimed at making produc- into the same block of memory. Figure 8 your color wash. The bounding colors tion easier. Additionally, the rendering maps out the memory usage. act like a gradient tool, in that they 26 and texturing features found on the Finally, the team needed to take match up to the texture map corre- N64 give the games a softer, more pol- advantage of N64’s ultra-fast texture spondingly to the lightest and darkest ished look. cache. Aside from the 4MB of general areas of the texture. For example, let’s The two biggest potential pitfalls purpose RAM, the N64 comes equipped say I created a grayscale texture map faced by the art team were the total on- with a super-fast texture cache, capable with shades ranging from black to screen polygon count (total rendered of extremely high transfer speeds. The white, and then picked my bounding polygons limited to between 1,500 to downside is that the pipeline is relatively colors to be blue and red. The result 2,500 polygons), and the limitation on small. To use the cache to full capacity, would be a colorized texture map, with memory storage (4MB of general pur- texture maps had to be small; equivalent the black areas receiving a blue tint, pose ram, of which 1.1MB were set aside to 32×32×16-bit, or an equivalent size on the white areas receiving a red tint, and for tracks, textures, and cars). disk (textures could have large dimen- the gray areas receiving a purple tint. The challenge of managing scene sion, with a correspondingly lower pixel You basically create a texture that takes complexity is not unique to consoles, depth, 64×64×4-bit, for example). So, up the space of a grayscale texture, yet but is instead faced by almost all devel- large areas of complex terrain required is fully colored. opers working with RT3D content. The detailed texture work, and the large TEXTURE MIRRORING. The artists at solution was found through the tried- and-true method of iterative testing. Tracks were generated using the custom lofting tool the team developed (dis- cussed hereafter), then tested out with terrain and geometry added. Adjustments were made over the course of testing to get the approximate poly- gon count as close to the target as possi-

Memory Usage (1.1MB)

Car Geometry and Textures }100K

Track Textures Raw Geometry } 1MB Track Visibility Set Geometry Information

Radiosity Data (soft shadows)

FIGURE 8. Memory Usage. FIGURE 9. An environment map used for one of TOP GEAR OVERDRIVE’s sky domes.

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com Snowblind also used the mirrored tex- Other plug-ins included lofting and fun to play. And considering this six- ture, another feature unique to the N64. sculpting tools, a texturing tool for man crew will have created the game This feature allows the artist to flip a dealing with huge numbers of texture from start to finish in just under ten texture along one or both axes of a quad maps on a single mesh (a must for months, their achievement becomes polygon, a method that would other- large, multi-material geometries). even greater. This group will be one to wise require additional tesselation to The folks over at Snowblind may watch in the future. produce the requisite polygon edges at well have a hit on their hands. The the mirror boundaries. game had that clean, polished feeling THE TOOLS. In its most basic form, the characteristic of the N64, and it was Wrap-Up task for the art team boiled down to one thing: create texture-mapped poly- N64 Art Path he hazards and limitations associ- gons. To accomplish this, the group set- Car Modeling Track Modeling T ated with console development tled on 3D Studio MAX 2.0 as its single and Texturing and Texturing pale in comparison to the benefits. The off-the-shelf technology. The open (3D Studio MAX) (3D Studio MAX) stable technology base, though limit- plug-in architecture allowed for rapid ing at first glance, inevitably allows toolset generation, and within only a ASCII Export developers to focus on ways to get the few weeks of going into full production, job done, instead of trying to figure out the engineering team at Snowblind had exactly what their target platform can come up with a suite of plug-ins to aug- ASCII Export Radiosity do. This is a subtle yet critical distinc- ment the already powerful modeling Rendering tion, and is leading more and more 27 tools in 3D Studio MAX. The primary developers down the path of console tool was the track lofting plug-in, Visibility Set development. ■ which allowed the artists to create and Calculation Special Thanks To: test initial track layouts at the rate of Brian Sostrom, Ryan Geithman, Raoul one per day. This rapid turnaround was Said, Ezra Dreisbach, Brian Johnson, crucial to tweaking the playability of Game Engine Game Engine Jason Wiggin, Louise Smith, Annabella the tracks, and the entire process of get- Serra, Kieth Wymetalek, Joseph ting a track into the engine was accom- FIGURE 10. N64 art path. Laurino, and Anna Farr. plished with only a few button clicks.

http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER HARD TARGETS

Trends in the Graphics Board Market

ame developers have been targeted extensively over the past four years by chip makers trying to convince them that their feature set, or partic- ular approach to 3D hardware, is ideally suited to their applications. G Ironically, chip makers rarely ever get to connect with the end user. This is the job of the board maker. board vendor brands of Diamond, have found that they were quite amus- Only in the case of ATI and , Creative Labs, or STB and others. The ing — reviewers desperately tried to where the chip maker and the board reason for this deference to board ven- justify their preferred choices, but there maker are one and the same, is there a dors is distribution and support. was hardly any difference from one direct connection between the technol- Board vendors control the distribu- Voodoo2 board to the next. The 28 ogy at the silicon level and its market- tion channels. This gives them the con- Voodoo2 reduced board vendors to dis- ing to the consumer. Companies such nection to the customer, and invariably, tributors and support staff for what was as Diamond Multimedia, Creative Labs, they have to create a support structure essentially a purely 3Dfx product. and STB Systems are chip agnostic, and to serve that customer. By contrast, chip So, the question arises, how much in this month’s column we’re going to vendors’ customers are their board and value-add do board vendors actually explore primarily the chip-agnostic system OEMs. The value of board ven- provide? Taking a cue from Voodoo2, graphics board industry to determine dors is their experience supporting end it would seem not to be very much, but how these companies will fare in the users, and their realization that there is Voodoo2 was a 3D-only product target- coming year. The 3D graphics hard- more to delivering a graphics product ed at a very specific hardcore gamer ware business is getting merciless. The than producing a working piece of sili- demographic. Go into the realm of 2D, board vendor is on the front line, and con. That something more is software and games aren’t the only problem. is going to feel the pain more acutely drivers. Chip vendors have enough on Every piece of software that runs on a than anyone else in the industry. The their plate dealing with the every rising PC could be a nightmare support prob- consumer, on the other hand, is going complexity of chip design and manufac- lem. Maybe chip makers, who all make to be getting even more 3D power for ture. They may not be as savvy as board 2D/3D chips, could deliver a finished even less money. vendors when it comes to writing soft- board product themselves, but they ware drivers. From the time a finished realize that it might involve supporting chip is ready to go, to the time it is OS/2 or Linux, or someone’s ten-year- Love and Hate Relationships ready to be shipped to a customer may old DOS application. So, although the take weeks or months, depending on board vendor is really a tier of distribu- he relationship between chip- and the quality of the drivers. This lag in tion for the chip vendor, it’s also a T board-makers is one that they both time between when a chip vendor buffer against consumer support. resent. Why it even exists is our first thinks a product is ready to go, and Yet, forces beyond the control of port of call, followed by why both par- when a board vendor thinks it is ready chip and board vendors threaten this ties wish that it didn’t have to exist. to go is one reason why the two entities delicate graphics ecosystem. The Before I go any further, I should proba- don’t always see eye to eye. biggest impact in 1998 on the board bly put a proviso in here about 3Dfx, In addition, chip-agnostic board ven- business was to be the entry of Intel the most visible 3D graphics company dors are usually vying with each other into the market. Intel has managed to in the game industry. 3Dfx is unique in to differentiate products based on the successfully devalue the graphics chip having been successful at building its chipset using software features and dri- business to such an extent that the brand and influencing the end user of ver performance. The exception to the effects are going to be felt in the indus- its products directly through its mar- rule was 3Dfx, which reduced the try for some time to come. John Latta keting efforts. Thus, 3Dfx has achieved board vendors’ value-add by delivering of the market research firm, 4th Wave a unique position in the industry, but I a finished board and driver product (http://www.fourthwave.com), was the see the company’s success in this that didn’t leave much room for differ- first person to publicly decry the pric- regard as an exception rather than the entiation. If you read the round-ups ing policies of Intel with regard to its norm. Companies such as Nvidia, S3, and reviews of 3Dfx boards, you may graphics chip ($7 a chip). and do market their brand, but their influence with end users doesn’t Omid Rahmat works for Doodah Marketing as a copywriter, consultant, tea boy, and rise to same level. As a result, these sole employee. He also writes regularly on the and entertainment chip companies, including 3Dfx, put markets for online and print publications. Contact him at [email protected]. their energies into supporting the

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com by Omid Rahmat

Brave man, Mr. Latta. A devalued still be there, although market drivers parts of the board vendor’s product line. graphics chip market drives prices remain stagnant. So all this competition It used to be that a board vendor could down on all components and board is strictly for games — no other software look forward to selling a mature product products associated with it. As we go needs the power. Having everyone chas- into mid-range and entry-level markets, into 1999, we can expect much more ing the game enthusiast may be good but that opportunity is dwindling. aggressive pricing on board products, for game developers, but it’s not neces- Board vendors make their money from some very shaky board vendor finan- sarily good for an industry that may be creating awareness among consumers of cials, but healthy volumes for the per- crowding too many competitors into cutting-edge products. They make their formance leaders based on the pricing. too small a space. money from selling premium products. It’s good news for the consumer. It’s Figure 1 shows how important these It seems as if a sterling year awaits the good news for Intel, which just wants high-performance parts are to the mar- board business in 1999, but again, it’s a to sell more CPUs. But at what cost to ket. Jon Peddie Associates defines the question of how board vendors will the graphics board industry? category of performance as typically make money if the graphics market is characterized as having either hardware being devalued by the presence of Intel, floating point triangle set-up (such as and by the strength of the sub-$1,000 The Market ATI Rage Pro, Nvidia Riva 128, and so PC. It’s all up to the players. on) and/or high fill-rates (such as 3Dfx he cost for the industry, on the sur- Voodoo Graphics, NEC PowerVR, and T face of it, doesn’t look bad. “The others). The Tiburon, Calif., firm defines The Players 1998 add-in board market is expected mainstream as controllers containing 29 to grow 65 percent over 1997, and then 2D plus minimal 3D capabilities (“free- n Table 1, I have designated Tier 1–3 will slow down to an average growth of D”). Examples include the S3 Virge I board vendors. The classification is 18 percent per year up through the end series and the Trident 3DImage 975. partly based on channels, partly on of 2001,” says Bob MacQuillan, senior Performance parts are the only value exposure to brand name PC OEMs, and research editor at Jon Peddie Associates (http://www.jpa.com). “The overall FIGURE 1. 3D controllers by segment: 1997 to 2000. (Source: Jon Peddie add-in board market will enjoy good Associates) growth. However, the entry/value and mid-range categories in the mainstream 100 segment will be virtually eliminated as the market moves toward sub-$1,000 PCs that utilize embedded designs of 80 graphics controllers and core logic.” Mr. MacQuillan’s comments point out the real effect of Intel’s entry into Mainstream the market in 1998, and its plans to put 60 3D graphics in core logic in 1999, and come out with a lower-cost Intel740 follow-up, too. Competition in the entry-level and mid-range is only for 40 the brave with deep pockets, or a strong constitution. Performance The expansion of the market for 20 higher-performance 3D parts is the bright spot for the graphics board ven- millions of units shipped worldwide dors. I think it might turn out that 1999 brings in enough volume in the perfor- 1997 1998 1999 mance sector to offset the entry-level and mid-range business woes. It may not, however, bring with it a compara- TABLE 1. A list of the most recognized board names by category. ble increase in revenues and profits. The battle between Nvidia, S3, Matrox, ATI, TIER 1 VENDORS TIER 2 VENDORS TIER 3 VENDORS 3Dlabs, and 3Dfx for performance and ATI Technologies California Graphics ASUStek brand leadership is just as likely to drive Creative Labs Canopus Leadtek prices down as anything Intel could, or Diamond Multimedia E4 Jaton would do. Without exception, in 1999 ELSA/Hercules iXMicro Expert Color the chip companies are going to move Intel Number Nine Techworks 0.25 micron chip designs, which means Matrox Radius cheaper and faster designs. Further, the STB Systems VideoLogic multitexture engine is here to stay, so Wicked3D the interest in new 3D technology will http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER HARD TARGETS

petition among chip vendors heats up FIGURE 2. Branded 3D add-in board market by channel. (Source: Jon Peddie in the performance sector, the Tier 3 Associates) vendors will get to compete head to head with Tier 1 and Tier 2 players by getting product before it matures. OEM Unfortunately, the Tier 3 vendors 42% rarely have the resources, or the com- mitment, to raise awareness of their Direct brands, so although they may end up 18% shipping more product than the brand companies, no one outside the indus- Distribution try gets to hear much about it. 40% One mustn’t forget that the PC graphics business is bigger than the sum of these vendors — over 80 mil- lion units in 1999 alone. There’s room for a lot of players, but whether there is value for the players to stay in the busi- ness is debatable. For example, I have 30 partly on volumes. It’s something that vendors may overlook. Wicked3D, the relegated Number Nine to a Tier 2 posi- hasn’t been done for graphics board Metabyte board company, has pio- tion because, despite having some companies, but is done for PC OEMs. It neered stereo graphics by delivering excellent technology, the company has is not a definitive list of the Tier 3 ven- drivers that support the widest ranges failed to deliver a Tier 1 position in any dors, but it does give you the graphics of stereo-enabled games. E4 has exten- of its markets. Number Nine doesn’t board landscape as it is today. I have sive support for DVD, and so forth. It’s sell the cheapest boards, and it certain- given Intel a Tier 1 position, rather tough for the Tier 2 vendors because ly doesn’t make the worst products. reluctantly, but they do have a strong they are at the mercy of allocation by Yet, the company finds it hard to mine brand. Also, I am being generous to the chip vendors, more eager to get its niche of the high-end business desk- ELSA/Hercules because of ELSA’s their three months of shelf space fame top, and it cannot generate the money strengths in Germany. In fact, I believe with Diamond and Creative, or to sup- it needs to move its development in a that in reality there should only be five port STB supplies to Compaq, Dell, and direction that would make it competi- Tier 1 companies: ATI, Creative, Gateway. So, Tier 2 board vendors may tive. VideoLogic may also seem con- Diamond, Matrox, and STB. That’s five innovate and target a game-playing tentious for a Tier 2 position, but the companies serving ten Tier 1 PC OEMs. audience better than the Tier 1 player, company has never done anything of These Tier 1 vendors are under the but they have to battle for channel any significance in the board market, greatest pressure in the coming year. recognition, and they don’t get the and the fact that NEC breathed life They face squeezed margins, compet- best support from the chip vendors into the company through PowerVR is ing product lines from their chip sup- who look to their volume customers. not influencing their board business. pliers (Nvidia’s TNT versus the 3Dfx At the tail end are the Tier 3 vendors, With technology, both these compa- Banshee is one good example), and ris- which happen to be the biggest volume nies are good acquisitions: Number ing costs as they struggle to differenti- takers too. They take mature products, Nine is very close to Silicon Graphics ate their brands. ATI seems to be the they make low-priced solutions, and and, of course, VideoLogic is very close strongest company, having a healthy they can ship hundreds of thousands to NEC and Sega. OEM presence, and some sound design of units a month, in excess of the Tier With such premier names showing wins for its Rage chipset. Creative is by 1 brand names. As a game developer, signs of strain in the board business, it far the best retail company in the Tier 1 you may never have to support a Jaton makes you wonder which is the next arena. However, when it comes to board, for example, but within the brand name to feel the pinch. The branding graphics boards for a games board industry, Jaton and its like play answer may lie in the dynamics of the audience, Diamond has done a very an important role delivering boards to channel. good job in North America. The weak- all those resellers and PC-makers who est brand in the Tier 1 group is STB, don’t want to pay a premium for a which tends to be much more focused brand name, but do want to get their The Graphics Channel on supporting the Tier 1 PC OEMs hands on good graphics boards, or the using its manufacturing skills. products of a recognized chip vendor. f you look at the distribution pie The Tier 2 vendors are, in some The non-branded board vendors supply I chart supplied by Jon Peddie ways, more interesting than the Tier 1 in excess of the branded board vendors Associates (Figure 2), the distribution board vendors. They have to work by a factor of 2:1. It used to be that Tier and OEM channels take an even bite of harder at differentiating their products. 3 vendors were seen as adding little the sales pie, and interestingly enough, Canopus innovates in the hardware value, and in bringing product prices direct sales are showing some strength design by adding features and down. They were the volume supplier as well, specifically as a result of the enhancements that the other board of mature products. However, as com- Web-savvy game enthusiasts. With dis-

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com tribution and OEM channels practical- to make any breakthroughs in retail, chip pricing and support from the ly eating up whatever profit margin and is 80 percent PC OEM business. It semiconductor companies, and that’s potential there is, the only real prof- faces pressure from ATI, Matrox, and where they face the biggest challenge. itable outlets for board vendors are Diamond, but it always has. To get volumes, Tier 2 vendors need direct sales. Yet, the brand name board Jaton, Leadtek, and Expert Color sell OEMs. To get OEMs, they need strong companies are very cautious not to be through distributors serving resellers and retail, or branding, or manufacturing seen in competition with their distribu- systems integrators. You may find the capability. It all costs money. To get tion channels. There’s a little pull and odd low-cost controller from the Tier 3 money in a price-squeezed market, push there. vendor in a retail store, but it won’t be they need volume. It seems that the direct channel may sitting on the shelf at CompUSA or However, I believe that board compa- afford an opportunity for the Tier 2 Electronic Boutique. They could break nies have to change. They need to vendors to establish themselves. Tier 3 out with product, but none of the Tier 3 become leaner, and they need to change vendors are primarily OEM and distrib- vendors are inclined to package their the way they do business to take into ution bound, with little in the way of products for the consumer. account the new business dynamics. retail. Therefore, the channel may have So, the status quo is pretty much set, This may be the best chance for a Tier 2 already decided how the board busi- but there is hope in the Tier 2 section. or Tier 3 vendor to break into the Tier 1 ness shapes up. Companies such as Canopus, category, but it doesn’t look like the big Looking at the channels in more Wicked3D, California Graphics, and E4 five are going anywhere for now, profits detail, we can see some patterns emerg- want to be consumer friendly. They or no profits. In the middle of all of this, ing. Diamond is very strong in the have the hunger, and they have to dif- the consumer is going to get a smorgas- 31 North American retail market, but is ferentiate their products much more bord of very good 3D products, in differ- under increasing pressure from than any Tier 1 or Tier 3 vendor would ent flavors of chips, and from a diverse Creative. ATI and Matrox fare better in have to do. They are relatively free to group of board vendors. Cheap, too. A Europe and international markets than make new channels, or to go into areas 16MB, Banshee board from Creative they do in North America, but in gen- that the big companies are precluded Labs retails for about $99, having gone eral, have strengths in the PC OEM and from, such as having a more aggressive down from $149 in the space of six reseller channels. ATI’s retail presence direct sales strategy. However, Tier 2 weeks, or less. Brutal business, but some- is the stronger of the two. STB has yet vendors need volumes to get better one’s got to do it. ■

http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER 32 BRINGING

ENGINEERING

DISCIPLINE TO

GAME

DEVELOPMENT

BY GORDON WALTON

s the manager of Kesmai Studios, port hundreds to thousands of simultane- I oversee the internal develop- ous players via the major online service A ment division of Kesmai providers (America Online, Compuserve Corporation, the oldest and largest maker and others) and over the Internet (at of massively multiplayer games. The http://www.gamestorm.com). Our games

games we develop (such as AIR WARRIOR, are played much longer than most stand-

MULTIPLAYER BAT- alone boxed games. For example, two of

TLETECH, ALIENS our current games are over ten years old,

ONLINE and and several were released more than five

LEGENDS OF years ago. All of these games have been

KESMAI) updated many times as the underlying sup- computer technology has evolved.

Gordon Walton has been authoring games and managing game development since 1977. He is currently senior vice president of Kesmai Corporation and general manager of Kesmai Studios, the leading developer and distributor of multiplayer online games. He has been a speaker at every CGDC since its inception, is a founder and current officer of the IGDN and speaks at other industry gatherings. He can be reached at [email protected]. ENGINEERING DISCIPLINE

A year ago, we decided to change side of this narrow window, but typi- have significant bugs and require a radically our methods of developing cally this success is limited to about ten patch (or three). Within a viciously games. We were dissatisfied with our highly promoted and anticipated titles. competitive environment, as an indus- maintenance costs, the effort required Odds are that you are not working on try we must find a way to lower some to achieve our desired level of quality, one of these titles. of the risks involved with building and our inability to predict production Almost everyone with experience in game software. schedules. This article is a description game development has had to work on Not all risks are controllable while of what we did to achieve this change, someone’s legacy code. Most experi- developing game software. You can although you should view what you’re enced programmers have had to fix an never be sure if consumers will like about to read as an “after-action incompatibility or bug for a product what you offer (though there are report” — our development processes developed by someone else, or have methodologies for reducing this risk, are continuously evolving to meet our had to start a sequel from a previous too). You never know when Microsoft objectives. product code base. In general, game might change the operating system software isn’t written to be maintain- components. Sometimes, a competitive able. Rather, the primary goal is getting product is unexpectedly introduced, What Is This the code “finished enough” to ship it and you must react to it. Management “Engineering Discipline” Thing? as a commercial product. As such, often will dictate large numbers of many game developers believe that any unexpected changes. re you sick of not being able to documentation and coding standards Given this chaotic environment, it’s 34 A predict when the development of come at the expense of getting the important to acknowledge and manage your game will be complete? Are you game done sooner. This lack of docu- the risks that are under your control. tired of creating bug patches for a game mentation and standards worked for For risks that you don’t control, but are that shipped months ago? Are you hav- most game developers for a time, as within your sphere of influence, you ing trouble adding a feature that the teams used to be relatively small and must make agreements with all parties new vice president of marketing time to market was the most important so that no surprises occur without demanded halfway through develop- issue. But times have changed. renegotiation. This gives you a man- ment? If any of these scenarios sound ageable baseline with which to start, so familiar, let me offer you a way of deal- that you can react with more clarity ing with them. Why Consider An and confidence to the truly uncontrol- Engineering discipline, as I define it, Engineering Discipline? lable risks. is determining and applying processes to the development of game software he main reason that we at Kesmai with the goal of improving the quality, T considered a new way to develop How We Approached an maintainability, extensibility, and software was that the methods com- Engineering Discipline schedule visibility of the software. monly used in the game development Being able to deliver these particular business weren’t working well. Our ecause our company is in a busi- elements consistently in game software products’ life cycles were B ness where products must be is unprecedented, in my experience. longer than those of most maintained for several years, we felt game companies, and we had to make a radical change to our maintenance costs compete successfully. We first exam- What Is the Reality of Current were prohibitive. We ined the various training opportunities Game Software Development? also noticed that most available. We looked at several soft- products in the games ware development methodologies used hile both the team and man- business aren’t by other industries, including the SEI W agement share a desire for the financially suc- Capability Maturity Model (CMM), elements of quality, maintainability, cessful, most ISO 9000, SPICE (Software Process extensibility, and schedule visibility in miss their Improvement Capability and their software products, the primary intended dEtermination), and others. We mission of most game developers is to ship dates, found that all these method- ship a fun game by Christmas. The and ologies contained elements desirable ship dates for most products most useful to our goal of insti- are dictated by the realities of the retail tuting engineering disci- market. With the majority of all soft- pline. They also con- ware sales occurring between the tained elements months of September and January, the that could stifle pressure to ship before Christmas is creativity and incredible. The final ship date for ignored the im- Christmas is about two weeks before portance of hav- Thanksgiving, given the normal retail ing fun software in distribution delays and processes. Some favor of schedule products succeed when shipping out- predictability.

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com Kesmai Studios Programming Standards Table of Contents Version 1.0 (April 23, 1997)

NAMING CONVENTIONS Constant Comment Rules ...... CONSTANTS ...... HEADERS ...... HUNGARIAN NOTATION ...... Template Header File for C ...... Basic Types ...... Template Header File for C++ ...... Modifiers ...... SOURCE FILES ...... Examples ...... Template Source File for C ...... VARIABLES ...... Template Source File for C++ ...... Global Variables ...... CODING RULES Static Variables ...... VARIABLES AND CONSTANTS ...... Local Variables ...... No Magic Numbers ...... C++ Specific Rules ...... Declare Local Variables at Top of Scope ...... 35 TYPES ...... POINTERS ...... Structures ...... Initialization ...... Unions ...... Dynamic Allocation/Deallocation of Memory ...... Other Types ...... FUNCTIONS ...... FUNCTIONS ...... Prototypes ...... Public ...... Return Values ...... Private ...... LIBRARIES ...... FILE LAYOUT AND ORGANIZATION Version Function ...... COPYRIGHT NOTICE ...... Communicating with the End User ...... COMMENTS ...... MISCELLANEOUS ...... Prototype Comment Rules ...... C++ Classes – Use protected: Instead of private: ...... Function Comment Block ...... Switch statements – Always Have a Default Case ...... Variable Comment Rules ...... Division – Don’t Divide by Zero ...... Type Comment Rules ......

FIGURE 1. Kesmai’s programming standards table of contents.

Because no current methodology change in mindset cannot be mandat- games in the future. The products that that we investigated suited our needs ed from management; it must be a our developers will maintain in the completely, we decided to invest in joint effort between developers and future will have a defined coding style training our personnel in the SEI’s management to work. We started our and methods. The table of contents for CMM methodology, with the proviso process of instituting an engineering our programming standards, which that we didn’t want to follow their discipline with three initiatives: pro- illustrates the elements that we developmental model exactly. We sent gramming standards, the peer review believed were important to standard- 80 percent of our development and QA process, and the software process work- ize, are shown in Figure 1. personnel to this training. We also ing group. PEER REVIEW PROCESS. The definition of investigated several project-manage- PROGRAMMING STANDARDS. We quickly the term “peer review” is encapsulated ment training programs. After one devised a good set of programming in this quote from the SEI Capability course given by the Learning Tree standards that the entire development Maturity Model: “The purpose of peer Company, two of our producers came staff could buy into, although there reviews is to remove defects from the back very excited and charged up. They was some debate as to how these stan- software work products early and effi- really liked the particular instructor, so dards would be instituted. These stan- ciently. An important corollary effect is we contracted that instructor to give a dards were created in reaction to the to develop a better understanding of one week class on project management difficulty we experienced in maintain- the software work products and of to our entire development staff. ing our legacy code. While these new defects that might be prevented.” Peer At this point, we had most of our standards didn’t help us maintain our reviews, in this context, have no personnel “speaking the same lan- old code, they made sure we wouldn’t impact on personnel evaluation at all; guage” and interested in improving our perpetuate poor coding practices in our they’re simply a method of process software development methodologies. new games. Thus, our payoff will come improvement — never a methodology This was a key step. This kind of when we hire new people to maintain for placing blame. This peer review http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER ENGINEERING DISCIPLINE

This is a 1,500 word product covering only the following issues:

High Concept: The overall game concept . For further details regarding Game Play, Conflict, and Game Play: The core game mechanics. Multiplayer Aspects, read CONCEPT_GUIDE.DOC. Conflict: What creates the tension that motivates players? Submission “Help Desk” Multiplayer Aspects: What makes this a massively multi- Help is available from the Editorial Committee for all sub- player game? mitters who wish it, prior to their proposal submissions. This Spend your 1500 words however you wish to cover those way, you can get feedback prior to sending it in. If you want four core issues. In many cases, Conflict and Multiplayer someone on the committee to go over your proposal with Aspects will be evident in the description of Game Play. If the you, just send a request via internal e-mail to Jonathan. He game itself is evident, as well as its qualities as a multiplayer will, in turn, match you up with someone suited to the type of game and its ability to motivate folks to play, your proposal game you wish to create. will have met the requirement, and done so in able fashion. Deadline and Delivery All submissions are due by 5:00PM on Friday, ______. 36 FIGURE 2. Concept document guideline.

process only took a few weeks to ham- mer out, and is now embraced by our The Requirements Baseline developers. Reviews go on almost every week in our studio. The primary value of peer reviews is in finding problems he Requirements Baseline (RB) above, the Requirements Baseline contains and potential problems long before is a comprehensive list of specif- the following elements: they would normally be found in the ic requirements that apply to the Overview: A one- or two-page description of testing stage. A less obvious but equally T software project. It draws from the game, sufficient to give the reader a powerful benefit is that all participants documents, correspondence, and interviews sense of its game play and scope. This in the peer review process learn to from all relevant sources to ensure a bal- would be very similar in format to the Initial avoid both common and subtle errors anced depiction of project requirements. Concept Document, except for the omission in their own work. We encountered Essentially, it is a solicitation, then formal- of any features removed through the Initial some resistance to peer reviews, ization, of the requirements of each depart- Concept approval process. because there was concern that man- ment as they relate to your game. Its pur- Key Requirements Summary: A one-page agement would use these reviews to pose is to document all known requirements condensation of the most important rate our developers. Once it was clear in a clear and unambiguous manner, suffi- requirements drawn from the total known that this was not the case though, our cient to be used as the basis for the game set. This is intended to provide a high- developers embraced the process. design process. The RB is the first document level, balanced perspective on the most Our first peer reviews found signifi- in the project life cycle that is owned and important goals to be achieved by the pro- cant problems that had defied other developed by the project team. ject, uncluttered by the detail necessary in debugging methods, and every peer Why do we need it? the departmental breakdowns. review we’ve conducted so far has The RB is an agreement between the pro- Requirements Breakdown: A department- found and corrected problems. As our ject team, management, and other depart- by-department itemization of all known and people gain more experience with peer ments over what constitutes the require- accepted requirements. This should contain reviews, they’re uncovering problems ments that bear upon the task. By documented, institutionalized requirements earlier in the development process — documenting the agreement, all require- as well as project-specific requirements, as bugs might otherwise have taken weeks ments become visible and tangible. By identified and submitted by the depart- of debugging had they still existed mandating approval of the agreement by all ment’s representative. Sources include, but when the game was in beta testing. parties, each becomes responsible for the are not limited to, published documents, e- When used effectively, peer reviews accuracy and completeness of their stated mails, meeting minutes, and phone calls. are a powerful tool to improve both the requirements. Finally, by putting the agree- Change Log: Once the RB has been placed quality and the effectiveness of your ment under revision control, changes can under revision control, any changes to the development staff. The relative cost of be identified and schedule impacts document should be noted in the change finding and correcting errors early in accounted for. log. Each entry should contain (at a mini- the development of a title is incredibly What’s in it? mum) a description, date, and reason for low compared to trying to correct bugs To accomplish the purposes described the change. when you’re about to ship. If you don’t already conduct peer reviews, I recom-

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com Before any real work may begin on a project, some planning is necessary. Once the Requirements This includes some overall idea of Baseline (RB) is created, the scope and duration of the it must be approved by all project. It also includes a first draft involved departments of "The Plan." Requirements before development may Baseline proceed. Phase Inputs Requirements Baseline Institutional No Phase Outputs Requirements Initial Requirements Approved? Yes Sign off? Planning Definition Requirements Yes Baseline Concept Document Yes (normal or No On management Schedule? 37 sponsored

No "The Plan" Here, the RB document is created. New This may involve many iterative Requirements versions of the doument, and will also require meetings with other Kesmai departments to define the requirements of those departments.

Process Feedback Loop Software Process Yes Proposed Changes Lessons Approved? to RB Process Learned

Previous No Requirements Baseline (if any)

Change Rejected

FIGURE 3. Requirements Baseline initiation and revision process. mend starting today. cycle to match its business and market might want much more volume and SOFTWARE PROCESS WORKING GROUP. The requirements. We picked some new detail. A committee made up of mem- Software Process Working Group was projects to test these processes as we bers of the studio approves concepts responsible for creating and delivering created them. I will use a fictional for further development. a number of items, which are consoli- product called BAZOOKA BUNNY to illus- REQUIREMENTS DEFINITION. The require- dated into a document called the trate some of these phases. ments definition phase is embodied by Kesmai Studios Software Process Guide. CONCEPT. We created a document to two documents, the Requirements The Kesmai Studios life cycle has five describe what made up a valid game Baseline and The Plan (see the sidebar, phases: concept for our product life cycle. It’s “The Requirements Baseline”). Our 1. Concept used to select what products are built Requirements Baseline initiation and 2. Requirements Definition in our studio. Because our develop- revision process is shown in Figure 3. 3. Design ment focus is massively multiplayer Notice that there is a defined process 4. Implementation games, this quality is heavily empha- for creating a Requirements Baseline, as 5. Maintenance sized within the concept document well as for modifying the process of This list is just one of many ways to guideline, shown in Figure 2. creating the Requirements Baseline (in define a product life cycle. Your com- For the purposes of our development the event that we decide that the pany may have different phases and life cycle and internal selection process isn’t optimal). All processes terminology. There is no one true way, processes, we wanted our concepts to used must have feedback mechanisms as each company must define its life be very compact; other companies so that they can continuously improve http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER ENGINEERING DISCIPLINE

BAZOOKA BUNNY—SAMPLE REQUIREMENTS Baseline Revision 1.4, September 20, 1997 Prepared by: John Robinson, Will Robinson, Doctor Smith Overview • Requires 100MB hard drive space and at acceptance testing. BAZOOKA BUNNY is multiplayer action least 32MB of RAM. • Need to have FE install at least two days game in which poor, defenseless, and • Uses Creator to produce objects before the scheduled start of acceptance slow-witted computer programmers (the and terrain. testing for every release. players), armed only with a handful of • Uses Visual C/C++ for FE development. • Need to have a beta test host delivered at light, armor-piercing rocket launchers (and • Uses a revision control system. least three days prior to the scheduled a few miniguns) venture forth into the • Host development environment is HP/UX start of acceptance testing for every cruel, harsh meadow to do battle with on HP hardware. release. fiendishly clever rabbits. Terror ensues Creative Services Executive Committee when the players’ repeated saturation fire • Need to negotiate a staged production • The product must run on AOL and into the underbrush fails to produce the schedule for art, sound, and editorial, GameStorm. 38 anticipated scurrying about, and fratricide taking into account the software sched- • The product must be available by Q1, levels begin to reach… (snipped for brevity) ule, the interdependency of each piece, 1999. …and in a furious frenzy smash the albino and the quantity to be produced. queen into red and white pulpy bits with Third-Party Support • Need to be informed of the various tech- • The game should avoid liberal use of the their shovels, thus ending the hideous nologies that will be used within the pro- threat. word “rabbit,” because one of our other ject to ensure that CS personnel are ade- games already supports a familiar theme Summary of Key Requirements quately trained and necessary tools are of blasting rabbits with bazookas. • Supports up to 3,000 players competing available by the work start date. Referring to the critters as “bunnies” or in separate arenas (meadows) of up to Marketing “fuzzies” should deflect from any simi- 100 players each. • Need sample art and sounds for web larity. • Plays on a Windows 95 machine with pages three months prior to scheduled DirectX 5.0 or greater. Community Support release. • Plays on a Pentium 200MHz or better • The game must emit a player scoreboard • Need character class descriptions and with 3D accelerator required. in a negotiated format for display on the updated feature list three months prior • Requires 100MB hard drive space and at Web. to scheduled release. least 32MB of RAM. • The game must support a control query • Need .AVI of game play one month prior • Plays with keyboard only, mouse/key- returning player information in the game to scheduled release. board, and joystick/keyboard. context for display on the Web. • Uses an isometric, third-person view. Product Support • The game must support a “news ticker” • Uses real 3D, not prerendered sprites, • A list of error messages that might be giving descriptions of what’s happening voxels, or raycasting. conveyed to the user in the course of in the game to be displayed in real-time • Uses Visual C/C++ for FE development. game operation and what actions to take on the Web. Requirements Breakdown to alleviate the problem. Need to have a Help Desk way to enter the game when it’s full. Project • A list of error messages that might be • Need to have a way to find out player conveyed to the user in the course of • Supports up to 3,000 players competing info using the player’s in-game handle in separate arenas (meadows) of up to game operation and what actions to take as a key. to alleviate the problem. 100 players each. • Need to be able to eject a player who is • Uses an isometric, third-person view. violating TOS agreement while playing. Publishing • Uses real 3D, not prerendered sprites, Operations/Tools • The project must deliver installation voxels, or raycasting. packages in the format required by the • Plays with keyboard only, mouse/key- • Need to have a list of all game processes, GameStorm client. board, and joystick/keyboard. with sample configuration files, an expla- nation of what they do, and any special Change Log • Each character has 24 distinct anima- 11/3/97: Added rabbit to bunny word tions, 4 unique to each class. requirements they may have. • Need to have detailed installation replacement throughout the design doc- • Each meadow is approximately 10 kilo- umentation at the request of third-party meters square. instructions for the host processes. • Need a coordination meeting to deter- support. Kesmai Studios mine the ARIES implications and feature 11/25/97: Changed number of animations • Plays on a Windows 95 machine with schedule. from 12 to 24 after some hashing out of the initial paper design with the project DirectX 5.0 or greater. Product Acceptance • Plays on a Pentium 200MHz or better team. with 3D accelerator required. • Need a software test plan at least two weeks prior to the scheduled start of

FIGURE 4. Sample Requirements Baseline

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com based on the input from the teams that of the project. Some of these work The technical design subphase is use the process. A simplified example products are deliverables that are given made up of a series of three documents: of a Requirements Baseline for our fic- to people outside of the project team, Requirements Analysis, System tional BAZOOKA BUNNY product is such as the software itself, user manu- Architecture, and Module Specification. shown in Figure 4. al(s), and test plans. Other work prod- Finally, the resource analysis sub- You may have noticed the large ucts are mostly for internal use, such as phase is where The Schedule, the final number of departments that are refer- analysis and design documents, source External Resource Specification, and enced in the Requirements Baseline. code, and build procedures. The Plan the initial Software Test Plan are all Involving so many people at this step document outlines all of the work created. The Software Project Plan is is initially time consuming, but it gets products that will be created and gives simply our schedule for the game’s all the key departments involved and a rough timetable and order of deliv- design and implementation, and it’s a gives them the ability to give ery. The intended target audience for fairly common document to most pro- their input about the prod- each deliverable is also defined. jects. The Schedule is based upon the uct. It also secures their In order to prevent changes from detail provided by the combination of agreement that these are completely derailing a project the Software Design Specification and their requirements for the during development, an effective the External Resource Specification. product. Any future change control plan must be The Software Testing Plan, which is changes result in the cre- established early in the project initially created in this phase, is a ation of a new agreement, and all the cycle. This process is written into The roadmap for our product testing group parties must re-approve the changes. Plan so that change control procedures to use to validate the functionality of 39 While this applies friction to the are established from the very begin- the product. process of making changes to the pro- ning and are used on every baselined IMPLEMENTATION. Once the design phase ject, it does discourage people from work product. is complete and approved, the project suggesting frivolous changes. We define high-level project mile- moves into the implementation phase. Additionally, important changes are stones in The Plan and leave the The implementation phase is divided allowed to move forward with a con- detailed scheduling information in a into the construction subphase and sensus from the key parties involved. separate document. Milestone target the release-and-refine subphase. Most Once these requirements are formal- dates are initially estimated based on of our larger products use a staged ized for the first product, most of the project scope and budget. As the delivery process, so we construct mul- these requirements are reused for fol- development progresses and the sched- tiple stages and then move the final low-on products. ule becomes more accurate, these mile- stage into a release-and-refine sub- The Plan document, alluded to in stone dates are changed within The phase. The Software Testing Plan, Figure 3, outlines the general path Plan. As such, we always keep The Plan which began in the Design phase, is that development will follow and up to date. completed during the construction describes additional elements beyond DESIGN. The design of the product subphase. This is a complete testing the key requirements listed in the flows from the requirements defini- plan for the product describing the Requirements Baseline. It also outlines tion. The design is made up of a series methodology and elements of a proper all project deliverables, such as a ter- of stages that are contained in four test of the product. rain editor, mission editor, manuals, main documents under our definition The majority of the construction and so on. The Plan is a living docu- of this phase (Figure 5). These docu- subphase is spent doing the traditional ment that changes as the product ments are the Software Design Speci- programming, integrating, and testing moves from the requirements phase fication, the Software Project Plan, the of the product’s modules as it moves through the design and implementa- External Resource Specification, and towards completion. In each stage of tion phases. The Plan demonstrates to an initial Software Testing Plan. The the construction subphase, the management that the team knows Software Design Specification, in turn, Software Testing Plan is being incre- what they are doing and how they is composed of three subphases: cre- mentally completed. will go about getting it done. ative design, technical design, and Once a project has reached the Specifically, The Plan includes the fol- resource analysis. alpha release milestone, it moves into lowing items : The creative design subphase is the release-and-refine subphase • The vision and goal of the project made up of a series of four documents, (Figure 6). In this subphase, the focus (approximately one or two para- titled Overview, Thematic Content, is not on developing new features, but graphs). Interface Storyboards and Prototypes, on testing, fixing bugs, and complet- • The list of reference materials. and Game Mechanics. The combina- ing the product for the production • Project organization (management, tion of these documents describes release to players. During the alpha responsibilities, work products, pro- how the game will look, feel, and release stage, it’s inevitable that fea- cess model). play. In addition, the initial External tures will be changed or added, but • Risk management. Resource Specification is created dur- the focus in the release-and-refine • Project plan (deliverables, major mile- ing the creative design phase, which subphase is on stability and fine tun- stones, staffing, and organization). lists all the art, sounds, and other ing. This is the last development Every project develops a large num- externally created elements necessary phase of a project, and it consists of ber of work products during the course for the product. four key stages: http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER ENGINEERING DISCIPLINE

Creative Design is composed of four activities: Overview, Thematic Content, Interface Description, and Game Mechnaics. Each of these progresses more or less in parallel during this phase. NOTE: It is expected that some amount of technical work, such as technology assessments and prototyping, will occur during the Creative Design phase. "Complete" in all NOTE: Its is also expected that the list portion of the ERS will be completed decision boxes indicates during this phase, although the final estimation is not required until the that it is done and has Resource Analysis phase. been reviewed and approved per the Software Process Guide Design Design Phase Inputs Phase Outputs

Software Design "The Plan" Specification Creative 40 Creative Design Accepted? Yes Design Complete? Schedule Yes Yes External Resource Requirements On Specification Baseline Reschedule No Schedule? No Complete?

No Preliminary Other Software Technical Design is composed of four activities. These are: Software Test Design Documents Requirements Analysis, System Overview (Architecture), Module Plan (STP) Identification, and Module Specification. These activities are No performed iteratively throughout the phase.

"The Plan" Software (updated) Process Yes

Technical Technical Design Accepted? Yes Complete? Yes Resource Design Schedule Analysis Previous "The Schedule" Requirements Yes Baseline (if any) On Reschedule No Schedule? No Create "The Schedule," No final ERS, and Yes Preliminary STP. Update Sell Sheet "The Plan" as necessary. Process Feedback Loop

Change Proposed Changes Lessons No Approved? Rejected to Design Process Learned

FIGURE 5. Design process flow.

1. Alpha Release ment. The project has been complet- Problems Faced at Kesmai 2. Closed Beta Release ed, and although work will likely con- 3. Open Beta Release tinue throughout the life of our mas- ack of management buy-in was not 4. Production Release sively multiplayer games, it will be at L a problem we had, but it might be MAINTENANCE. Once a game achieves a maintenance level. Most likely, one that you will encounter. Without good stability and it’s at the gold-mas- maintenance will be handled by dif- the commitment of upper manage- ter stage, it moves out of development ferent personnel than the original ment to instituting engineering disci- and into maintenance and enhance- development team. pline through process improvement,

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com Implementation Implementation Phase Inputs Phase Outputs

Software Design Specification Software (SDS) Using Staged Delivery, In a project using Staged a project is able to Delivery, every stage reassess its progress begins with a "stage plan," after the completion of which details the activities each stage and replan Operations External Resource of that particular stage. as necessary for the Manual(s), Specification remaining stage(s). Support (ERS) Manual(s) Next Stage

Stage WrapUp Stage Planning Technical (Staged (Staged Preliminary Design Delivery Only) Delivery Only) User Manual(s) 41 Software Test Plan (STP) Finished

Implementation Construction Release Project Preparations Conclusion Service Documentation "The Plan" (ReadMe files, etc.) System Testing

Software Each release of the software is a planned (scheduled) event, Test Plan (STP) even if the software is not released to the public at this point. (updated) "The Schedule" The "Release and Refine Phase" details the actual release procedures and requirements.

Once the entire implementation is complete, the project can conclude. Typically, this is when the software would be "The Plan" transitioned into the "Maintenance and Enhancement (updated) Software Process Phase" of the software process.

"The Schedule" Yes (updated) Process Feedback Loop

Change Proposed Changes Lessons No Approved? Rejected to Design Process Learned

FIGURE 6. Implementation flow. it’s almost impossible to accomplish one to use. Common terms meant dif- ment who don’t share our special any real changes. The process of mak- ferent things to different people. This vocabulary, we still find the vocabulary ing significant changes to production problem was primarily a training prob- of disciplined engineering problematic. methods takes the commitment of lem, and sending the majority of our The next large problem that we everyone involved, and if management people to SEI CMM training, combined encountered was the team’s impatience changes directions in mid-stream, all with in-house project management to start working (programming) on a benefits can be lost. Our management training, largely overcame this prob- new project. Planning a new game and our developers devoted the time lem. However, due to the complexity down to the final details before writing and effort that it required. of the processes involved with develop- a line of code (other than necessary Our first significant problem was ing games, and the number of depart- “proof of concept” prototyping) is very coming up with a vocabulary for every- ments involved outside of develop- counterintuitive to most game pro- http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER ENGINEERING DISCIPLINE

grammers. Discipline came into play occur, but because projects are now The combination of completely plan- here, as both management and the less chaotic, dealing with these ning the product prior to implementa- development staff kept focused on the changes is much more manageable. tion, peer reviews of key soft- new processes even when tempted to Getting the project baseline ware modules, and test follow old patterns of development. requirements written down plans created by the team Getting all other departments — and agreed to by all should continue to raise the such as our publishing, product testing, departments was a quality of our software. marketing, and operations depart- major benefit. When Finally, our time-to-market ments — to cooperate with our new requirements change should decrease as our software processes was also a challenge. We (as they often do), it puts development process improves overcame many of these problems by you in a position to document and our teams become accustomed to including these departments in the cre- the change and inform all parties of the new procedures. ation of our processes. A grassroots, the effect it will have on the schedule. It has been exciting to move organization-wide commitment to It allows cost and schedule trade-offs towards building game software under process improvement really made a dif- to be done rationally and reduces our new model. Our new procedures ference for us in this area, but there are needless feature creep. Thinking about allow our developers to be more effec- always holdouts who prefer the tradi- and documenting these requirements tive in a normal workday, and tional methods despite potential bene- has headed off innumerable future although the occasional crunch still fits. You need to have the key people in problems. occurs, we no longer face grueling, 42 the departments you work with educat- Having a full design, a technical continuous 16-hour days during a pro- ed and on-board with your planned design, prototyping technology, and ject death march. We have already improvements. solid estimates of programming tasks at seen a difference in our shop, with The sheer amount of paperwork and our disposal allows us to plan the cre- people rising to new levels of contri- process involved is daunting, particu- ation of the art, sound, and editorial bution and productivity simply larly for groups used to a seat-of-the- resources better. This has helped because the environment allows it. pants development process. I’m sure reduce the false starts and rework of The standard sweatshop atmosphere many people reading this article won- these elements, in comparison to previ- of game development only allowed der how any “real” work gets done ous projects. the “coding cowboys” to be heroes. with all the paperwork involved. We Management has a much higher Now, we have teams entirely staffed discovered that all this paperwork confidence in the schedules of the with heroes, doing great work without inevitably gets done, either by a prede- products, and a much better idea of having to resort to heroics. Being fined plan or as an emergency later in where the product is relative to the involved with fostering this move to the project. In our experience, most projected completion date. The actual engineering discipline is the most sig- slippage in schedules is driven by ele- schedule exists only after the technical nificant effort that I’ve been involved ments that weren’t explicitly defined at design is completed and approved. We with in my 20 years of creating games. the beginning of a project. Our process only use broad ranges of time prior to I believe it has the potential to take improvement effort simply acknowl- the completion of this phase, which much of the chaos and uncertainty edged all the known requirements at requires a high degree of trust between out of development and let us focus the beginning of a project rather than management and development teams. on creating great game play in our in the midst of development when it future titles. ■ adds to both schedule and cost. Future Expectations F O R F U R T H E R I N F O • Bennatan, E.M. On Time, Within Benefits Accrued to Date e expect that as our personnel Budget: Software Project Management gain more familiarity with the W Practices and Techniques, 2nd ed. (John he biggest benefit that we’ve real- processes, we will see further improve- Wiley & Sons, 1995.) ized so far has been improved ments in productivity. We also believe T • Caputo, Kim. CMM Implementation morale. Our development staff is that we’ll reap benefits in our mainte- Guide: Choreographing Software excited to be involved in a process nance efforts once our products move Process Improvement. (Addison that is progressive and has the oppor- to that stage. Our standards will dra- Wesley, 1998.) tunity to take our group to a high matically reduce the time that it takes • McConnell, Steve. Rapid level of effectiveness. There has been to train new programmers to Development: Taming Wild Software unanimous participation in the cre- maintain legacy products. Schedules. (Microsoft Press, 1996.) ation of and compliance with the The time that it takes to find • Yourdon, Edward. Death March: The new processes. The bugs and make additions to Complete Software Developer’s Guide process changes are these legacy games will be sig- to Surviving “Mission Impossible” showing results, and nificantly reduced. As we move Projects. (PTR Prentice Hall, 1997). developers feel more our current set of products into pro- • The Software Engineering Institute’s in control of the pro- duction, we expect the quantity and web site (http://www.sei.cmu.edu) ject. Mid-stream severity of found bugs to be much changes in projects still lower than was previously the case.

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com RAPID DEVELOPMENT

arlier this year, a small hunting simula-

tion called DEER HUNTER shocked the

industry by rocketing to the top of the

sales charts for three months. Presently,

it’s still selling well and shows every

indication of continued good sales.

While most hardcore game players stick up their noses at 46 such value-priced games, the truth is that there’s still a huge untapped market of computer users who do little with their EEPCs but write letters, send e-mail, and play solitaire. Death rays and world conquest hold very little interest for them, and they’re still waiting for a game they’ll enjoy playing. Although I’m not inclined to debate the merits of games such as DEER HUNTER, let me at least point out a few facts DEER HUNTER regarding the game that might help to tip the balance of opinion in its favor. • DEER HUNTER was the first game to attempt seriously to simulate the strategies involved in deer hunting. If you’re Thee-Moh snidely thinking that there is no strategy to swigging down a beer and storming through the woods after a buck while blasting away with your shotgun, then you have no real knowledge of hunting on which to base a valid opinion. Deelome Before I sound too sanctimonious, I should point out that before I worked on DEER HUNTER, I had little knowledge of hunting myself, and shared many of the same prejudices. • DEER HUNTER is a value-priced game. It costs only $20 and Ccle includes $20 worth of value. Many people tend to compare this product against games costing two to three times as much, with budgets often 10 times or more what we had by James Boer to work with. DEER HUNTER’s total development cost was around $75,000. Remember to compare apples to apples. • DEER HUNTER was targeted specifically at non-enthusiast game players. This meant that both controls and game play were kept as simple as possible. This wasn’t only expedient; it was a requirement determined at the outset of the project. • DEER HUNTER was developed from the ground up by three programmers (one was a college intern) and a part-time artist in less than three months. It’s this last point that I really want to focus on, because it is one of the more interesting aspects of the game, the

James Boer is a programmer, game designer, and musician. During the development of DEER HUNTER, ROCKY MOUNTAIN TROPHY HUNTER, and PRO BASS FISHING, he acted as designer, programmer, art coordinator, sound designer, and voice-talent. He currently resides in Seattle, Wash., and is working at WizBang Software Productions. He can be reached at [email protected].

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com remarkable sales notwithstanding. How the game sold after which it does not pay to skimp on design is interface design. it shipped was a shock to everyone, including us, but the Over the course of three projects, I’ve learned that time development cycle was something that was controllable. spent carefully mocking up all the game screens helps At this point you may be saying to yourself, “So what if a tremendously as a reference for both the programmers and small game such as this was written quickly? The product the artists during all phases of development. I’m working on is much more complex, has many more fea- Note that I’m not talking about a complete graphical mock- tures, yada, yada.” up. I’m referring to a functional mock-up. I use CorelDraw to This could very well be true. However, many of the lessons roughly position all elements on the various screens. I print 47 learned in a compact development cycle can be applied to each screen on a separate page. I label all buttons and explain any sort of game development project. I’ve had the opportu- their functions. I make no attempt to create an aesthetically nity to analyze and fine-tune our development process pleasing screen. The artist’s job is to arrange and beautify the through five games in one year. Even if a project is expected various controls except where noted on the document. to require a year and a half to complete, the same strategies A solid interface design not only helps to solidify the flow can be applied to individual milestones within the project, of the game, it also frees those responsible for its implemen- or even to project components over a much longer period. tation to begin coding and illustrating while the finer points The techniques don’t necessarily have to be used to speed up of game play continue to be debated. As the game evolves, development, either. They can just as well be used to get this document is updated to reflect the latest changes. more from your existing timelines. In this article, I outline some of the salient aspects of our development cycle. Some of the points are undoubtedly Lesson 2: Don’t Be Afraid to common sense, but all too often common sense gets ignored Design Dynamically and in Parallel in the face of tradition or other external pressures. Other points, however, fly in the face of conventional design he original idea for DEER HUNTER was actually simpler approaches. While it’s true that not every project could or T than what ended up on store shelves. I joined Sunstorm should attempt to utilize some of these principles, the fact in May of 1997 with a rough idea of what I’d be working on, remains that, using these techniques, Sunstorm rapidly pro- but no real knowledge of hunting. My first assignment was duced hit after hit in quick succession. to design a deer hunting game. You might imagine how thrilled I was at the prospect of designing a game based on a “sport” that consists mostly of sitting and walking around in Lesson 1: Don’t Over-Design the woods for hours on end, waiting for a passive animal to show up so you can shoot it. t’s better to keep the game plan simple and understand- The initial game idea wasn’t much more than many of the I able. You don’t necessarily have to code the entire game other hunting titles seen previously — that is, blasting a deer on paper. I’ve found that the most important aspect of the when it happened to meander across your path. As develop- initial design lies in clearly delegating responsibilities for the ment progressed and I became more knowledgeable of the project components. Instead of delving into the inner work- intricacies of hunting and stalking deer, I realized that we ings of how individual components are going to work, focus could, with a slight change of focus, turn the game from an on how the major components are going to work together. arcade gallery into a simulation with the addition of an over- Again, these don’t necessarily have to be completely set in head map view and a dynamic scene generator. The biggest stone. Rather, let the programmers who are dealing with reason for DEER HUNTER’s success was that we were the first those components work with each other to figure out how company to make a serious attempt at creating a realistic sim- their components should communicate. Because they are ulation. Our dynamic development process allowed us to shift the only ones the problem affects, it makes sense that they focus enough in mid-development to capture this market. should facilitate the solution, both in design and in code. As Although some projects have failed due to the lack of a long as their solution is solid and well documented, there’s strong design, we found that taking a flexible approach to no reason to involve other members of the team in the deci- game design worked in our case, and it might be worth con- sion process. Planning by committee in cases such as this is sidering on your next project. I’m not advocating that you both unnecessary and inefficient. turn your 3D shooter into a real-time strategy game halfway There’s one caveat to this technique. One instance in through development. Rather, try prioritizing design elements http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER RAPID DEVELOPMENT

else in the way of high-level coding. FIGURE 1. DEER HUNTER’s task schedule. Much of the game design was still in flux when Mike and Nate were develop- Ready to begin AI Coding ing the DirectDraw libraries, resource builder, and basic program framework. None of this concerned us, however, as we knew what was required of those Mike Create Framework Resource Builder Interface Implementation Weapons components regardless of game design. This freed me to continue tweaking the Jim Game Design/Game Layout AI Research Map Editor Deer AI Programming design and continue research even while other team members were busy Nate DirectDraw Libraries/Interface Libraries Overhead Map View coding. Note that when I was finally ready to begin coding the deer AI, the elements for allowing me to visualize by their expected completion date and the more interesting effects in the game the deer on screen were nearly in place. finishing designing these elements first. is the zoom lens on the rifle scope and For instance, if the user interface is binoculars. Although the design of this rather straightforward but the game effect was originally intended to be a Lesson 4: Code play still needs some work, let a pro- simple pixel doubling, I realized that we Around Scheduling Delays 48 grammer and an artist start moving could make the effect much more con- forward on this aspect of the project vincing if we could preserve the sprites’ n some instances, scheduling cannot while others hammer out the details of highest level of detail by using a tech- I be fudged enough to minimize game play. This is an example of nique we hadn’t thought of earlier. By dependencies and still give enough time designing in parallel with the project. focusing on the goal instead of the for everyone to complete their tasks. Or, Because the components have a logical process or the details, those of us work- there may not be enough alternate work separation from other aspects of the ing on the project could enhance the with which to fill up that person’s design, this process makes perfect sense game significantly while still maintain- schedule. In this case, the best thing to and avoids down time. ing the original schedule. do is simply to code around the prob- Likewise, in-house development lem. This was somewhat of a problem in tools can often be started long before DEER HUNTER’s development. other portions of a game are complet- Lesson 3: Smart Scheduling I was responsible for the deer’s AI ed. It may even be a requirement. (For and behavior. A problem arose when more on this point, see Game brought up the issue of scheduling the map view took slightly longer than Developer’s October 1998 Postmortem I when discussing parallel design, but anticipated to get functional (with as of Monolith’s SHOGO to see what can it warrants more attention. Intelligent tight a schedule as we had, even a week happen if custom tools aren’t given scheduling means planning to com- could make a huge difference). enough attention early in the develop- plete components so that you minimize Without a graphical view into the ment process.) If design issues are still your reliance upon incomplete code; deer’s world, it was difficult for me to up in the air, make sure the tool pro- this was one aspect of our development maintain my schedule. grammer makes allowances for addi- process that allowed us to get DEER In future projects, I would learn from tional functionality that might be HUNTER out the door fairly rapidly. this mistake and create a separate appli- added. The time wasted in having to For instance, Figure 1 shows the task cation exclusively for creating and test- change a file format is more than made schedule from early in the DEER HUNTER ing animal movement and reactions. up for by the fact that the programmer project. Mike Root, our project leader The next generation of hunting games didn’t have to wait another month for and lead programmer, was responsible were expected to have more advanced the design specifications to be finished. for creating and maintaining the gener- behavior, so I needed far more time to Dynamic design — altering the al framework of the game, as well as program the AI in our later projects. I design during development — might other items such as creating the used a third-party , Fast- also bear consideration. Again, use weapons and building the sound graph for Windows, to create this test some common sense — I’m not talking libraries. He also built a resource editor bed, because it had native support for a about changing the entire course of a that helped us manage all the game art- flexible floating-point coordinate sys- project. We found that it doesn’t pay to work. Nate Terpstra, our trusty intern, tem. The animals all used floating-point try to anticipate every problem that worked on the DirectDraw graphics vectors for movement in a realistically may come up during the course of libraries and user interface controls. My scaled world, so this worked well for me. development. Instead, we set goals to responsibilities included game design, Your particular choice of libraries and attain and expected both the artists and artificial intelligence and deer behavior, tools doesn’t really matter, as long as programmers to be creative enough to map creation, and scene generation. you maintain a clear separation reach those goals on their own. Many You can see in Figure 1 how both my between the test bed and the game code times during the course of a project, we game design and AI research were that you’re writing. This distinction thought of a better way to achieve the scheduled for a time when it would also has another positive side effect: it goal that we’d set out to reach. One of have been difficult for me to do much forces programmers to maintain a clean

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com and intuitive programming interface to The easiest solution is to involve the careful programming, and hard work. the code modules that they’re writing, designers, artists, and programmers in The question of code reusability and because the code must be moved from the task of creating milestones. Because robustness might come up, and it is the test bed to the main project. At they’re the ones doing the work, they indeed a valid point. Minimizing some point, the actual project may should have a more instinctive feel for design time doesn’t necessarily mean become incompatible with the test bed how to balance out the workload sacrificing these elements. I would offer due to increasing complexities in the among equally separated project mile- proof of this by mentioning that the game itself. Don’t try to maintain the stones. This also helps to clarify every same basic code set was used to create two separate projects unless you’re individual’s responsibilities right from two derivative products, a big-game absolutely forced to do so. Simply move the beginning. hunting simulation and a duck/goose the code to the main project and con- I’ve seen examples of both approach- hunting game. The success of DEER tinue working there. Keep in mind that es. When management alone tries to HUNTER was completely unexpected, the test bed is simply a means to an dictate the milestones, the results are yet we were able to use the existing end, and once its usefulness has ceased, often a huge, unbalanced mix of goals, code as an engine with which to create it should be discarded. Don’t make it which fall mostly into the “too easy” these other games, both of which made too pretty by wasting time on irrelevant or “nearly impossible to achieve” cate- substantial improvements to the origi- features. Quick and dirty is the key. gories. When someone who appreciates nal game. DEER HUNTER has now even the technical aspects of the design is been ported to the Macintosh. There’s involved, the balance between mile- no question that the code was well- Lesson 5: Create stones tends to be much more realistic. designed and quite robust. Individual 49 Meaningful Milestones You’ll notice that all of these sugges- programmers sticking to time-honored tions relate to design or other similar object-oriented programming tech- t’s too easy for those who can’t see aspects of the project. Truth be known, niques achieved the robustness of the I under the hood of a project to want that was really the only remarkable code, not a fancy design document. visual milestones. Oftentimes, howev- aspect of DEER HUNTER’s development Remember that design time is essen- er, when a game looks only half done, cycle. The other parts were pretty tially overhead. The faster you can get the work is actually 90 percent com- plain: solid object-oriented design prin- your team up and working, the more plete, or vice versa. It’s important for ciples (or solid structured programming time they’ll have to do what’s really project managers to understand this. techniques for you C programmers), important: produce the game. ■

http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER SOUND FILTERING A Iodcio o Sod Fileig by Jonathan Blow

e’re going to talk about the basics of

sound filtering — playing with the var- 50 ious frequencies that compose a sound

effect — in real time. In the process, we’ll

take a small step into the world of digital sig-

nal processing (DSP). DSP is a topic that intimi-

dates a lot of people. University courses to believe that these products will through a solid barrier — very different in DSP come with thick textbooks, and make your game stunningly realistic; than the same event unfolding beside manyWW programmers have heard of this the fact is that, though currently avail- you in the open air. thing called the “Fourier Transform” able spatialization is a welcome feature, Some game-oriented 3D sound sys- that consumes terrifying amounts of it’s only one of many steps that you tems, such as QSound or Aureal’s A3D, CPU time. Recently, I was shocked to must take to achieve realistic sound. contain some features for distance learn just how simple the concepts Sound reverberates in closed spaces. attenuation, reverberation, and the underlying DSP are, and how sophisti- In wide-open spaces, sound loses ener- like; but those features usually aren’t cated effects are easily done using small gy as it travels; high frequencies fall very sophisticated, nor do they give amounts of CPU time. away faster than low frequencies, the developer enough control. Because changing the character of the sound. I’ve never heard a sound API that let In fact, this change is affected by the me say, “This cannon blast is happen- Motivation weather conditions between the source ing on the other side of an echoey and the listener. When a sound ravine, and it’s passing through a goal of most (if not all) game bounces off a sheer rock face, different damp fog bank on the way here, and A developers is to use interactive, frequencies are deflected in different the weather is very windy, and by the realistic sounds in their titles. Many ways. When you’re strutting down a way I’m listening to the sound under- game programmers are familiar with bilinearly-filtered hallway cradling water,” I believe that more game devel- the concept of “spatialization,” which your BFG-31337, and you see a nice opers should learn to do this stuff is the practice of manipulating sounds scripted sequence of a monster disem- themselves. (Some of the very latest to fool listeners into thinking those boweling a scientist on the other side games do use sophisticated filtering sounds are coming from somewhere of a thick polymer window, the crack- effects. UNREAL uses a filter to create a other than the speakers. Vendors of ing-bone effects should sound as reverberation effect inside caves, and spatialization products would like you though they’re vibrating their way HALF-LIFE uses a filter to simulate sonic resonance when the player is crawling And when we were all fallen to the earth, I heard a voice speaking unto me, and say- through air ducts.) ing in the Hebrew tongue, [email protected], why persecutest thou me? It is hard In this article, we’ll cover the basic for thee to kick against the pricks. ideas behind achieving environmental effects through the manipulation of

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com frequencies within a sound. This tutori- al will be easier if we first accept a cou- FIGURE 1. A. Sine wave y=sin(t). B. A sine wave with amplitude 2: y=2sin(t). C. A ple of ideas about sine waves, without sine wave with a period of half of wave A.: y=sin(2t). D. When the two purple proof. These ideas aren’t too hard to waves combine, destructive interference produces the green wave. swallow; ample references to explain them are given at the end of the article. A.

Sine Wave Review B.

ecause we’re going to talk about B sine waves, let’s review some of C. their properties. Sine waves are little curved beasties made by the equation f(t) = sin(t). The argument t is given in D. radians; sine waves repeat themselves every 2π radians. We say that this 2π radians is the wave’s period of repeti- tion, and we may think of period in FIGURE 2. We represent a continuous sound wave with an array of samples. the temporal sense: it is the amount of 51 time the wave takes to repeat itself. The sine function can produce values from –1 to 1, so we say that the wave has an amplitude of 1 (Figure 1A). To amplify a wave, we multiply it by a constant A, so the equation becomes f(t) = A sin(t). If A is 2, then every point on the wave becomes twice as far away from the 0 line, and now the wave Sound Wave Review produce a new wave of the same fre- ranges from –2 to 2 (Figure 1B). To shift quency. These facts give us the ability a sine wave to the side by an amount x, hese days, we usually represent to look at sound in an enlightening we add x to the time parameter: f(t) = A T sounds as arrays of signed 16-bit new way. sin(t + x). We can change the frequency integers. Each number in the array rep- Suppose we want to mix two sounds of the sine wave by accelerating the resents a sample of a sound wave at an together by adding them; the sounds flow of time as the sine function sees it; instant in time (Figure 2). The sound are represented by functions f(t) and to do this we multiply t by a constant: card converts our samples back into a g(t), and we want to add them to pro- f(t) = A sin(kt + x) (Figure 1C). When we continuous waveform so that they can duce a new sound h(t): h(t) = f(t) + g(t). add sine waves together, the positive be played. We will call this waveform The old way of thinking about this is and negative values can cancel each — which is essentially just a function that, for each t, we evaluate f(t) and other out, just like any other function that varies over time — a signal. g(t), add those together, and the result (Figure 1D). The second remarkable fact we’ll is the value of h at t. According to the The first remarkable fact that we’ll take on faith is that every signal (over a DSP way of thinking, we take all the accept on faith is this: whenever we finite interval) can be represented as a sine waves that make up f, and all add two sine waves of the same fre- sum of sine waves of differing frequen- those that make up g, then we add quency, the result is a sine wave of that cies. This brilliant realization is called them all together to get h. frequency. This is easy to see if the the Fourier Theorem, named after Jean What happens if we add a sound f(t) waves are not shifted: A sin(kt) + B Baptiste Joseph Fourier, who came up to itself? f(t) consists of a bunch of sine α sin(kt) = (A + B) sin(kt), a wave with with the idea early in the nineteenth waves, An sin(knt + n). Working in the amplitude (A + B). However, the sum is century. (There is nothing too magical DSP way, we add all these sine waves to still a sine wave even when the source about sine waves that gives them this duplicates of themselves, then put waves are shifted: A sin(kt + α) + B sin capability; the study of wavelets is all them back together to get the result. β γ γ (kt + ) = C sin(kt + ) for some C and . about how to decompose signals into f(t) + f(t) equals, for each n, An sin(knt + α α α Sine waves of differing frequencies, varying wave shapes.) n) + An sin(knt + n) = 2 An sin(knt + n). however, do not sum to produce a sim- Every sine wave has twice the ampli- ple sine wave. A sin(k1t) + B sin(k2t) = tude as before. When we put the waves Something_More_Complex(t) in gener- What This Means together, it should come as no surprise al. But this is a good thing, because that the result has twice the magnitude sine waves themselves don’t make for ow we are armed with two impor- of the original f(t) at every point. f(t) + very interesting sounds. It is by throw- N tant facts: all sounds are composi- f(t) = 2f(t), after all. We’ve made the ing them together and making a mess tions of sine waves, and two sine waves sound louder. The DSP way of thinking that we develop true character. of the same frequency, added together, about sounds hasn’t bought us any- http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER SOUND FILTERING

It turns out that if d is the width of FIGURE 3. A. A sine wave, added to a shifted version of itself, where the shift is one sample, the highest frequency con- small relative to the period of the wave. The wave mostly reinforces itself. B. A tained in the input sound has period sine wave with a shorter period, shifted by the same amount. It ends up destruc- 2d (so says the Nyquist Theorem, tively interfering with itself, producing zero. which tells us how much signal infor- d mation can be stored in a series of sam- ples); this is precisely the frequency A. that is completely eliminated by the fil- tering operation. A graph of frequency attenuation is given in Figure 4. If we take an array of integer sound B. samples, shift it by one sample, and add it to itself, we are performing a low-pass filter of the sound. If we’re representing a sound with 16-bit inte- FIGURE 4. A graph of the frequency response of the low-pass filter in Listing 1. gers, we want to add the samples Frequencies are along the x axis; the y axis shows the scale by which each fre- using a larger number representation quency’s amplitude will be multiplied. (say, 32-bit integers), then divide them by 2 to ensure that they don’t 52 overflow when we pack them back into 16 bits (an issue familiar to any- one who’s ever mixed sound). Listing 2.0 1 shows code for the low-pass filter that we’ve just described. With a simple reversal, we can use this same method to preserve high fre- amplitude quencies and eliminate low frequen- scaled by cies, a process called high-pass filter- ing. Rather than adding f(t) to itself, what if we subtract it from itself? That is, h(t) = f(t) – f(t + d). This equation is the same as h(t) = f(t) + (-f(t + d)); we 0.0 are negating one of the functions before we add. This has the effect of 0frequency max flipping one of the sine waves about the axis f(t) = 0. Now, the low frequen- cies, because they are hardly shifted at thing extra yet — but that was just a These cases represent two extremes. all, negate to cancel themselves out; way of getting used to this way of The lower the frequency of the wave the high frequencies negate to rein- thinking and convincing ourselves that (the longer its period), the better it force themselves (Figure 5). it produces consistent results. will survive the summation process, You can imagine that, by specifying Now, here’s a revealing thought approaching the ideal of doubling its a d that is wider than one sample, one experiment: what happens when we original value. The higher the fre- could mute frequencies in the mid- add the sound f to itself, but before quency (the shorter the period, down range. For example, if d is three sam- adding, we shift one version of f by a to 2d), the better it will be eliminated ples wide, we cancel all waves with small amount d? That is, if h(t) = f(t) + by the offset. periods of six samples. But a d of this f(t + d), what does h(t) look like? Let’s look at the individual sine LISTING 1. A subroutine that applies a simple low-pass filter to some samples. waves in Figure 3. If d is very small compared to the period of a sine wave void lowpass_filter(short *samples, int nsamples) { A sin(kt), then the wave isn’t displaced static long last_sample = 0; much with respect to itself. So when we add A sin(kt) + A sin(kt + d), the int i; result is very close to 2 A sin(kt), as in for (i = 0; i < nsamples; i++) { our last example (Figure 3A). long current_sample = samples[i]; But what happens when d is longer long result = (current_sample + last_sample) / 2; than the small displacement we just last_sample = current_sample; discussed; say, half a period long? We samples[i] = result; see the result in Figure 3B: A sin(kt) and } A sin(kt + d) cancel each other out, pro- } ducing zero.

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com value will also filter waves with a peri- od of two samples (because those FIGURE 5. A. We perform the kinds of summations that took place in Figure 4, waves are shifted by 1.5 times their but first we negate the orange waves. The dashed light blue curves represent the period, which is the same as shifting position of the waves before negation. Now, the low frequencies, as in A, are them by .5 times their period). This killed; the high frequencies, as in B, are doubled. behavior would seem to place some d heavy restrictions on the frequencies we’d be able to filter. It turns out, a. though, that by doing some geometry in the complex plane, we can obtain good control of our frequency response curve, including frequencies that can- b. not be represented by integer multiples of d. See the References section for more information about this. This type of filter is called a feedforward filter amplitude. But now, to output the serve to reduce its amplitude rather because, in producing output, it only next sample, our feedback loop shifts than increase it. uses past values of its input. that result wave again and adds it back We have to be careful with this kind to the original. Now, the result is even of situation. Figure 6B shows what hap- greater in amplitude — though pens when we feed back a wave with a 53 Resonance and Feedback because it’s shifted further, it doesn’t delay time that is a multiple of its peri- reinforce itself quite so strongly. After od. The amplitude of the wave climbs nyone who’s been to an early-90s enough repetitions, the wave will toward infinity, which leads to total A grunge concert knows what feed- become out of phase with the original chaos. For this reason, we must multi- back is. This goateed guy holds his gui- version of itself, and the feedback will ply feedback signals by a constant of tar too close to the loudspeakers. The guitar pickups (essentially little micro- FIGURE 6. A. The effect of feedback on a wave where d is misaligned with the phones) catch the loud noise coming wave’s period. As we add it to shifted versions of itself, the result will wax and out of the speaker and transmit that wane in amplitude, never growing beyond a certain point. B. If d is aligned with noise back to the speaker, which tries the wave’s period, the wave will continue to grow with each round of feedback. to make it even louder. Soon, the audio system overloads and we’re left with an angry screech. d We can apply this same idea to our A. audio filter, but in a more restrained 1 step and generally soothing way. What hap- pens if we generate our sound h(t) by combining f(t) with previous values of the output, h(t)? For example, h(t) = f(t) 2 steps + h(t – d)? For simplicity’s sake, we’ll measure t in samples, and d will be 1 sample: h(t) = f(t) + h(t – 1). We can evaluate the first few terms 3 steps directly: h(0) = f(0) + h(-1). We’ll assume that all negative values of h are zero, so h(0) = f(0). That’s simple enough. Also, h(1) = f(1) + h(0) = f(1) + 4 steps f(0). So at the second sample, we’re adding f to an offset version of itself, just as before. Now, h(2) = f(2) + h(1) = d d f(2) + f(1) + f(0). As we repeat this B. process, we see that the pattern con- 1 step + tinues forever. We’re adding together versions of f that are shifted by succes- d d d sive amounts. 2 steps + + What does this process do? Figure 6 shows the result for waves whose peri- d d d d ods are much longer than two sam- 3 steps + ++ ples. As we saw before, adding the wave to a shifted version of itself will cause the wave nearly to double in http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER SOUND FILTERING

FIGURE 7. The frequency response from Listing 2. Now You Try It e’ve seen some low-level ways W to manipulate the frequency content of sound. We haven’t said 37.28 much about how to put sounds togeth- er, though. If an explosion happens inside a sealed vault, you probably want to low-pass filter that sound for listeners on the outside; but exactly amplitude what frequency response to use, and scaled by how to make a filter to give you that response, could be the subject of an entire book. We’ve tried to present sound filtering in an introductory way that is different 0.0 from the approach taken by most text- 0frequency max books. That way, upon further reading, you’ll be exposed to ideas from a differ- 54 ent direction, which can provide fresh insight. We certainly have not been magnitude less than 1, to damp them. floating-point math as well. rigorous here. In fact, we’ve tried to use Thus, h(t) = f(t) + kh(t – 1), -1 < k < 1. Generally, we’ll convert our 16-bit as few mathematical ideas as possible; Then the feedback filter is stable. source samples to floating point and some of the References present filters Listing 2 shows code for a simple operate on the floating-point samples. in an elegant way that requires more feedback filter. The frequency response For cases in which we’re algorithmi- background. In any case, further read- of this filter is shown in Figure 7. Note cally generating a sound, instead of ing is required to accomplish a sophis- the relative sharpness of the peak — reading that sound from a file, our ticated understanding of filters. ■ feedback filters allow us to alter frequen- original samples will probably be in cy response more dramatically than the floating point. R E F E R E N C E S feedforward filters we talked about earli- Interestingly enough, new instruc- • Everybody in the world should read A er. Note also that it amplifies some fre- tion sets such as AMD’s 3DNow and Digital Signal Processing Primer, with quencies by large amounts. To keep our Intel’s new Katmai instructions con- Applications to Digital Audio and number representation from overflow- tain stuff that’s great for processing Computer Music (Addison-Wesley, 1996) ing, we compute the maximum amplifi- sound in floating point. Unfor- by Ken Steiglitz. Starting with some sim- cation when we build the filter; later, as tunately, almost every sound API (3D ple mathematical exposition, it charges we output samples from the filter, we or not) wants samples fed to it as inte- straight through DSP theory in the most divide them by that factor to normalize gers. Therefore, we must convert our accessible way I’ve seen to date. the sound, thus preventing overflow. floats back to integers, consuming a • After that, read section 14.10 of As Figure 7 shows, feedback allows us little extra CPU time and reducing Computer Graphics: Principles and to pick out certain frequencies and accuracy. These extra calculations are Practice (Addison-Wesley, 1990) by amplify them much more than others. especially irritating because the sound Foley, van Dam, et al. This section of the It is said that the filter resonates at library usually will convert the sam- book talks about signal processing with those frequencies. Interestingly, this is ples right back to floating point (for respect to graphics, and provides some the same effect that occurs with sounds example, to scale the volume of the good visualizations of what it means to made in enclosed spaces. They resonate sounds so that they can be mixed into filter a complex signal. according to the shape and dimensions a single channel). Let me offer this • The Science of Sound (Addison- of the cavity, whether it’s a yawning plea to the makers of sound APIs: give Wesley, 1990) by Thomas D. Rossing is cave or a Stradivarius violin. Many us an interface that takes samples in a great book that discusses all aspects physics books describe the reflection of floating point! of sound emission and reflection, with a waves between two surfaces, and in The example code that accompanies focus on musical instruments and the such descriptions, one can easily see this article will demonstrate the effects human voice. the mathematical equivalence. discussed here, along with some oth- • Principles of Digital Audio, 3rd ed., ers, such as pitch shifting and rever- (McGraw-Hill, 1995) by Ken C. Pohlmann, beration. (Reverberation works just contains some good chapters about the Implementation like the filtering examples we’ve dis- Nyquist Theorem, signal-to-noise ratios, cussed already; the main difference is and signal dithering (a topic that will be n our feedback filter, we ended up that the filter delay d is much longer, of interest to those who wish to generate multiplying samples by floating- to the point where the delay is audi- I sounds algorithmically). point values to damp them. For most ble.) The code is available on the Game feedforward filters, we want to use Developer web site.

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com POSTMORTEM

Goldee DEAD RECKONING

by Luke Ahearn

EAD RECKONING is Goldtree’s latest title and is a new 58 chapter in first-person vehicle-based games. As a

player in the, game you’ve been abducted by

the Master Race to engage in gladiatorial com-

bat against the best warriors of every know alien

race in the universe. If you loose, Earth and all of DDmankind is destroyed. Before you begin, you choose your wingmen from among many characters — each with

his or her own personality; personality

traits include loyalty, obedience, aggres-

siveness, and more. And you choose your

ship. Each has varying rates of firepower,

shield strength, and speed. Most important

Luke Ahearn has been Lead Designer and Producer at Goldtree for five titles, including DEAD RECKONING. He is currently developing Goldtree’s next title. Before games, Luke wrote novels, worked in the film indus- try, and did every dreadfully boring, menial job you can think of while going through college. He can be reached at [email protected].

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com are the special weapons; chameleon powers, mines, traitor bombs, holographic decoys, and the Death Blossom are a few. Combat takes place in huge cylindrical arenas, each varied in environment. There are arctic wastelands, the tombs of Egyptian kings, and asteroid belts. You can fight in a lake of lava or the innards of a giant creature. Goldtree wanted to take players off of the floor in QUAKE and out of the confining tun- nels of DESCENT. You are in arenas where you have room to maneuver, but the firefights are quick and intense. The game demands more than simple twitch reflexes. You must select the right ships for you and your wingmen, give your wingmen orders, and monitor your resources. You must tag pylons to increase your weapon’s strength, hover over the energy field to recharge your shields, and above all, kill your enemy. DEAD RECKONING’s development team — Goldtree: (from left As the game’s designer and producer, I will focus this to right, top row) Luke Ahearn, Designer/Producer; Anthony Postmortem on DEAD RECKONING’s design. In some ways, Thibault, Lead Programmer; Nicholas Marks, Art Director; DEAD RECKONING is a remake of our previous title (bottom row) John McCawley, AI Programmer; Michael CYLINDRIX; in other ways, the two games are worlds apart. Freimanis, Menu Programmer; Josh Eustis, Musical Director CYLINDRIX was greatly admired by many game players and and Engineer; (not shown) Ted Baldwin, cut scene anima- received great exposure online for its game play. But it tion; TJ Bordelon, consulting programmer; Dan Farrell, 59 lacked certain mass-market features such as textures and Menu Prototype. RA Studios: (from left to right, back row) solid net play, and we were plagued by many problems Richard Laquale, Brian Kennedy, Daniel Venditelli, (front while trying to publish CYLINDRIX. row) Stephen Capasso, Matthew Zanni. Rosetta: (not After we finished CYLINDRIX, Goldtree was ready to pro- shown) Scott K. Warren. duce the A+ title that we knew we were capable of produc- ing. We were discussing what that title would be when Piranha Interactive expressed interest in a sequel to tool only, so new object shapes must be created in an appli- CYLINDRIX. Eventually, Goldtree and Piranha decided that we cation such as 3D Studio MAX and then imported into the shouldn’t make a sequel to a game that the world-at-large level. The editor allows users to manipulate all of the game- hadn’t heard of, so we made DEAD RECKONING a game of its play properties of an entity, such as the recharge rates of an own. We felt this decision was legitimate, as the differences energy field, the explosion file that’s played when a certain between the two games are vast in most areas. entity is destroyed, and the start points for players. The completion date for DEAD RECKONING was pushed off The usability improvements to the editor included single- for almost a year, but the big delay was primarily due to the level undo; keyboard shortcuts for commonly used opera- fact that Piranha believed that DEAD RECKONING would be an tions; arrow-key nudges for fine motion; browse buttons A+ title and didn’t want to squander its resources on a half- everywhere a filename must be specified; and consistent dia- baked launch. The company saw opportunities to improve log naming, layout, and keyboard operation. vastly the game’s value in the marketplace. Piranha seemed immune to the popular attitude that a publisher can dump DEAD RECKONING anything into a box and then rely on sales and marketing to Goldtree Game Developers make the game successful. Developers see things from the Metairie, La. opposite point of view. A great game will sell by word of (504) 837-0080 mouth as the demo works its way rapidly across the Internet. http://www.goldtree.com Piranha’s long-term thinking and support allowed Team Size: Eight in-house. RA Studios completed the game and Goldtree to redevelop some critical areas of DEAD demo, adding support for many features and fixing bugs. RECKONING, including support for online gaming services, Rosetta updated the level editor for users in the contest. Microsoft’s force-feedback joystick, and the ability to sup- Release Date: September 1998 port user-created levels. Supporting custom levels included a Title Budget: $350,000 (ballpark) great deal of reworking of the game code and the level editor Time in development: 24 months that we used during development. For the level editor, we Intended game platform: Windows 95/98 with DirectX 5 (will hired Rosetta Game Development. run solid under DirectX 6). We are in the process of recompil- The level editor was never intended to be used by the end ing for DirectX 6 and expect a significant improvement in per- user, and as a result was undocumented and pretty hard to formance. use. While I was writing the user manual for the level editor, Critical hardware: A network of eight Pentium 200s that Rosetta started improving the editor itself. With very little allowed the rapid compiling and testing of the game. Audio time to work on the editor, they couldn’t make it perfect, setup with several large drives, CardD and digital daughter but were able to fix some bugs, make usability improve- card, DAT recorder, ROM burner, and a ton of really cool musi- ments, and add significant functionality. cal stuff the musician brought in. The level editor has an object-oriented design based on Critical software: Direct X 5.2a, Photoshop 4, trueSpace 2, 3D “entity” classes for each kind of game object, and it shares Studio MAX, Sound Forge, Cakewalk, Visual C++. these classes with the game itself. The editor is a placement http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER POSTMORTEM

In its review of DEAD RECKONING, the Adrenalin Vault compared the game’s cast of characters to the bar scene in .

Some of the primary new features all the entities in the level. Users can fil- game needed to be ready to go gold that Rosetta implemented were the ter the list by entity type and can select within two months, so the program- Turret Property Sheet, the Find Object any listed entity for editing. The most mers at RA needed to get acquainted dialog, the Level Summary dialog, and interesting feature of this dialog is the with the code very quickly. We tasked the ability to automatically import Look At Object button, which reposi- them, primarily, with getting a better assets. Turrets are the most complicated tions the camera to bring the selected frame rate out of the engine, which entity in the game, yet our original edi- entity into view. Heuristics are used to was running at about 9-15 FPS on a 60 tor provided no support for altering pick a suitable camera pose and distance Pentium 200 MMX. Better, in this case, their properties, which were specified by from the object, with the camera com- meant 200 percent better, so trying to an external text file. We had Rosetta add ing in closer for smaller objects. find the culprit for this performance a fancy tabbed dialog so all properties Unfortunately, we didn’t have time for problem was paramount. Because the could be seen, edited, and checked for Rosetta to make these heuristics fool- engine was already complete, as was validity within the editor. The Find proof, so it’s possible that the looked-at most of the game around it, it proved Object dialog displays a scrolling list of object will be obscured by something in difficult for them to fix the speed issue the camera’s way. In practice, I’ve found without breaking the game. However, this to be rare. The Level Summary dia- in the end, with tweaks to the collision log not only lists statistics about the routines and some rendering routines, objects in the level, but also offers a RA achieved a comfortable 30 FPS. Verify button, which checks whether every asset mentioned by the level has actually been imported into the level. Design, Design, Design While Piranha was investing the additional time and resources in the ooking back over the last two marketing of DEAD RECKONING, bring- L years, I can say that for all of the ing on Epicentric to help, they also challenges that besieged us during the cosponsored a level-design contest. development of DEAD RECKONING, good This contest was the reason we rebuilt up-front design is what guaranteed the the level editor. Piranha also retained delivery of a high-quality finished some serious marketing talent internal- product. I believe that in a game com- ly to help push DEAD RECKONING. pany, design issues are the most impor- And, of course, Goldtree took this tant aspects of a project, even above opportunity to optimize the code and business issues. Although written 15 fix many bugs. For this effort, we years ago, The Art of Computer Game brought in RA Studios. By the time RA Design by Chris Crawford still holds Studios received the code for DEAD some great advice and observation RECKONING, the game was almost com- about game design. He says, “There is plete. Once again, time was short; the no easy way to produce good computer

The original storyboard and the ren- dered version of the final victory cut scene.

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com A rogue’s gallery of characters from DEAD RECKONING. games. You must start with a good helps a great deal when detailing your rounded, and not just fast. We felt that game designer, an individual with game on paper. I find that most of what enough people had become so well artistic flair and a feel for people.” I I do is reading and writing. Writing acclimated to 3D games such as QUAKE believe the best approach to designing skills are used in business reports, game or DESCENT, that they were ready for a game consists of working in the fol- treatments, product submissions, something harder. No cheat codes or lowing three areas. anonymous flames… the list is endless. camping, but not just toe-to-toe com- Obviously your primary area of Finally, I turn to traditional project bat either. Slower players on the con- absorption should be in gaming, espe- management a great deal for the tools trols should still be able to defeat frag- 61 cially within your genre (first-person, that are critical in developing any seri- masters by being more strategic and strategy, and so on). This effort should ous undertaking. You simply must managing their wingmen, weapons, include not only playing games, but take the time to develop the work and overall battle plans better. reading all the magazines, surfing the breakdown structure, master schedule, Originally, we had no intention of Net and browsing through news project budget, and other necessary allowing difficulty levels to exist other groups. From a design standpoint, I documents in order to maintain con- than nightmare, and we even made the find that it’s easy to lose touch with trol of your development. As W. enemy AI better than your computer what a good game is by simply taking Edwards Deming points out, “Fire pre- teammates later in the game. After your eye off of the moving target (the vention is far better than fire fight- some initial play-testing by the pub- game market as a whole) for even a ing.” And there is no better way to lisher and reviewers, we realized that brief period of time. instill the publisher with the confi- this intense gauntlet actually made I also find it very helpful to read dence that you understand the job some people really tense; we made books, watch movies, and pursue other that must be done and can do it. some concessions (although they were creative fields. There’s much to learn The initial stages of open discussions few). We allowed an automatic save from how a movie is scripted and story- on DEAD RECKONING went well. We had game option that starts you at the boarded that applies to game develop- time to think long and hard about beginning of the level where you died. ment. Understanding how a novel or what we liked and didn’t like about We also toned down the AI a little. short story is written and constructed CYLINDRIX and what we would do dif- Games are supposed to be fun. (and what actually makes a good story) ferently in the design and development On the other hand, as game enthusi- of our next title. Like most developers, asts, our proficiency in games was we wanted to improve on the concept deceiving to us and caused a bit of and technology we understood best, design drift. After countless hours of and not start from ground zero again. QUAKE, DUKE NUKEM, DESCENT, We decided to stick with the approach WARCRAFT, and all the other really that we developed for CYLINDRIX: a great games out there, we got really hardcore game that required that play- good. We felt as though we had a han- ers be seriously good at gaming, well dle on the design issues early on that could prevent last minute work,

A concept sketch of our original menu idea. After mocking it up we deter- mined that it was too unwieldy and We built the menu as a 3D model in inflexible. The time was not wasted. 3D Studio MAX. The background for the main menu.

http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER POSTMORTEM

uniqueness and familiarity. Piranha lis- doesn’t need to be as tapped into the tened, bought into it, and backed us all market and core audience as we do. the way. We have to anticipate the desires of a The “different but same” problem (as group of people (game players) that first brought to the American con- will invest heavily in upgrades and sciousness by the Karate Kid) is similar new technology when it arrives and to that which faces writers. Aristotle change the game development land- defined the major plot situations that scape dramatically in a short time. exist in drama and as far as I know, no In defense of the suits, you do have one has added to them. But think of all to make games to sell them. During the unique and great literature (not to DEAD RECKONING’s development, we mention films, radio, computer games) erred on the side of too much play rework, and confusion. But we also got that has sprung up since the classical while trying to keep stress levels down. so good at gaming that we lost touch Greek period. Our genres are defined I feel that the title still benefited more with our audience. So we had to tone for the near future, and it is our job to than if we had taken the opposite the game down a bit. be creative, unique, resourceful. approach. We were aware of what play- In addition to all the game play Design work is not all talking and ers wanted and could more easily guess issues, we tackled several important sketching. We actually made proto- at what they would want in the future. technical decisions early on in the types and designed as much as possible 3D HARDWARE SUPPORT. If there was 62 design process. We choose to support using various software tools. Even with 2. ever one thing I knew for sure, it DirectX and Windows 95 because it limited time and budgets, we used flow was that 3D hardware would take off. I looked as though the industry was charts, storyboards, and fleshed out the knew that just like the sound card, 3D moving that way, and we liked the idea look and feel of the menus and game acceleration would become a standard, of not having to write for specific hard- flow as much as possible. We made a something that you just had to have if ware. One of our frustrations during prototype of the entire menu system in a game was to even make it. the development of CYLINDRIX was that Director and saved a great deal of work Unfortunately, I didn’t buy stock — a great deal of our programming time in the end, having been able to try out but I knew. We decided to support soft- was spent writing for hardware and not several versions of the menu first. We ware rendering as well, because we for the game. We took one look at 3D also became aware of how much illus- thought the game would be out a little hardware performance and knew we tration, fiction, and graphics had to earlier and we wanted to reach the had to support it. done before we began working in other largest possible user base. Had we not Another benefit to having your game areas. DirectX allowed us to work in supported 3D hardware, especially after designed early and in terms a publisher retained mode, which isn’t good the delay in completion, we would will understand is that it gives you a enough for a real-time 3D game, but have been sunk or delayed even fur- firm footing when approaching and did enable rapid prototyping. ther. DEAD was designed to run well on dealing with a publisher. While we any 3D card, and run extraordinarily positioned DEAD RECKONING as a game well on a 3Dfx-based card. DEAD uses enthusiasts’ game, we also had that What Went Right MMX as well. “first-person, 3D, textured polygon, CHOOSING THE RIGHT PEOPLE TO WORK hardware-accelerated, multiplayer, PLAYING GAMES AS MUCH AS POSSIBLE 3. WITH. Finding the right publisher is super dooper thingy” buzzword stuff 1. AND BEING SERIOUSLY TAPPED INTO THE something I spent a lot of time on as going for us. Initially, an unnamed GAME MARKET. Of course, this fact is obvi- well. I ended up with Piranha individual at Piranha was pushing us to ous to developers and need not be Interactive and have not regretted it for make the game “like DESCENT” (he mentioned to a true game enthusiast. one second. I specifically targeted a doesn’t work there anymore), which But for all you suits out there, you have mid-sized publisher with the main pur- would have doomed DEAD RECKONING to play games to make them. You have pose of protecting the game itself. I to “me too” status. I was prepared with to go on the newsgroups, read the mag- wasn’t ready to tangle with the monster a well thought out game design that azines, and surf the Net incessantly. companies, although as a matter of addressed our publisher’s desire for I’ve actually heard that some compa- education, I approached and spoke nies (game companies) have instituted with many. I ended up with a handful a “no games” policy. What is the world of smaller but promising publishers. coming to? The benefits for a freshman developer Without a deep and intimate are more attention and collaboration — knowledge of games and the market- your design ideas are treated more seri- place, we cannot design good games. ously. With a larger publisher, you run And, in actuality, we aren’t designing the risk of getting lost in the shuffle games for today, but for the market- and being told, “Do it this way, or else.” place two years in the future. We all In the process of educating myself know how rapidly this market as a developer over the past several changes. In other areas, even in other years, I read a lot, spoke to everyone I areas of application development, one could, and attended all the major con-

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com could never complete. We started by listing what we all felt we could do well and what we felt we couldn’t do well. For example, we con- cluded that implementing really good character animation would be more work than we could handle, and I believe we were right. We focused on the physics and behavior of the ships. We wanted time to make each arena The more human-like characters unique, even down to the sounds and (“Panther” is on the right) were cre- projectiles of the turrets and obstacles ated from photographs. In addition to ventions (, CGDC, Comdex, and so in each game level. Photoshop work, you can see where on). I heard all the horror stories We also went from trying to create the artist used Goo to reshape the about developer-publisher relation- character art in 3D Studio MAX and by head for a more feline appearance. ships and have a few of my own. I’ve hand illustration to photographing come to see how many of these situa- models and photo-manipulating them tions crop up, and rarely is it blatant with Power Goo, Photoshop, and a little with talent trying to perfect some malevolence on either party’s part. 3D augmentation. This turned out to be aspect of their craft. Do you stop their Mostly, I fear it’s the vast difference a better route all around. It was cheaper, creative process to make the milestone, 63 between how a guy in a suit thinks quicker, and much nicer looking. knowing that you may impact the qual- and how the developer thinks. There ity of the game, lower morale, and/or is much room for misunderstanding. cause the passionate individual uncon- And when putting together the team What Went Wrong sciously to adopt a new lower standard? for DEAD RECKONING, I looked for pas- Sometimes, decisions were made by sion and attitude. There is nothing DESIGN DRIFT. Design drift can be individuals that affected the rest of the more valuable. Attitude is what keeps a 1. very subtle or blatant. It can be development and these decisions were person working through such a long individuals tearing out on their own and trying project as a computer game paths during development or an when there seems to be no end in sight. unconscious drift by the whole team, Passion is what makes one’s work stand much like the example that I gave ear- out. We had plenty of passion and atti- lier: we became too good at our own tude in all our team members. I’m still game and made it a bit too hard. We amazed that we did what we did with had to redo many aspects of the levels, so few people and so few resources. AI, and game play. DIRECTX. This decision was made Be mindful of design drift. Publishers 4. early on mostly because it are more likely to be too rigid when seemed as though it would cut out a allotting more time or money for a good portion of work for us, and it did. neat feature, but developers tend to It allowed us to focus a great deal more want to make the perfect game and go of our energies on the game. The overboard. In the case of DEAD DirectX beta team was responsive and RECKONING the publisher wanted more helpful. DirectPlay was particularly time and money spent on the title and helpful, as was Direct3D Retained supported Goldtree’s decision to make Mode for creating the level editor. We a major shove at redeveloping portions actually looked at other APIs, but not of the game at the end — giving us for long. We felt that DirectX would more time, money, and support to become the standard and be the best- make DEAD RECKONING a better game. supported API. I likened this decision But this was a conscious decision by to choosing the operating system for both parties and not a drift. your game. You’re going to want the Drifting is when you’re unwittingly largest market possible. off course. One thing that’s useful is to WORKING WITHIN OUR LIMITS WHILE SET- keep the vision in the hands of the pro- 5. TING HIGH GOALS. This is good design ducer, project manger, or one person practice, especially for a small team. designated to filter all changes through Working within one’s limits is a con- the entire team. scious, not constrictive, process. We faced many drifts that were usu- Designing a really great game means ally the result of talented and perfec- The concept sketch and an in-game leaving out features that you simply tionist individuals trying to make the screen shot of the Energy Square in cannot accomplish. It prevents you game as good as possible. It’s a hard the Sentry arena. from setting out on a journey you judgment call to make when dealing http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER POSTMORTEM

The armor for the Biomechanoid character was built in 3D The DEAD RECKONING level editor. Studio MAX. The artist took a snapshot of the finished model, which was then composited with the rest of the char- 64 acter’s image using Photoshop. overcome will take A BETTER LEVEL EDITOR. We should several extra weeks 3. have spent a lot more time at a minimum. designing and developing the level edi- not communicated to the rest of the Any aspect that’s overlooked, tor up front. I think we all felt pres- team. For instance, the decision to take whether out of ignorance or inexperi- sured and excited to dive into the game the animated sequences down from ence, will cause a drift. This is the rea- and simply forged ahead. I’m sure the 640×480 to 320×200 upset the anima- son for proper planning and continued editor was low on the programmers’ tor. His work was deteriorated and he monitoring of the project. priority list at the beginning of devel- wasn’t told that he didn’t need to ren- MORE INPUT EARLIER IN THE DEVELOP- opment as they were faced with a der scenes out in 640×480. This wasted 2. MENT OF THE GAME. I’m not just talk- mountain of problems to solve for the his time. ing about compatibility testing and game itself: physics, AI, networking, We also faced some small drifts that input from the publisher. I wish we learning new technologies, and playing were caused by the relative meanings had had more comprehensive testing DIABLO until sunrise. of plain old words in the English lan- and feedback from game players Since the level editor was never guage. A programmer may say “large throughout the entire development of intended for use beyond the comple- file” meaning a 100K and the artist the game. I think many of the best tion of the game, this list of priorities may think 100MB. ideas for a game, indeed what makes a wasn’t something that felt wrong at Also, 3D game modelers are often game a success, are the users’ exten- the time. But we should have anticipat- different animals than the commercial sions of that game; MODs, add-on lev- ed this discrepancy. A better level edi- 3D modeler. A game modeler knows els, and so on. We should have tor would have made it easier on the what low polygon count means and is planned the level design contest earli- artist and easier for others to work on adept at building objects face by face. A er, anticipated add-on levels earlier in level-design–related tasks. The level commercial or animation-grade model- the coding and started work on the editor was difficult and ended up being er often builds everything using multi- level editor and its documentation reworked and overhauled for the level ple primitives and very few texture much sooner. design contest. Had we made the level maps. Usually, after explaining that the I believe this would have also helped editor easier to use up front, I’m sure gorgeous 30,000-face demon has to be us more accurately anticipate what the the game would have had more and optimized to, say, three hundred faces market would want and deliver it, or at better levels. in order to run in the game, the learn- least be prepared to explain why IMPROPER CODE VERIFICATION, PROGRAM ing curve that the latter modeler has to weren’t able to deliver it. 4. DOCUMENTATION, AND ARCHIVED ASSETS.

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com Never put all your eggs in one basket, As developers, many of us may feel always verify code independently, keep we lack the acumen needed to deal redundant back-ups, and document with publishers, employees, and other everything. At least one other third- business situations, apart from the party programmer should be familiar technical and creative. Many years with your code for numerous reasons, ago, I attempted to balance this (per- and all creative assets should be ceived) weakness of mine and hired a archived — and not just the final ver- consultant. There were bad decisions sions of the files. A flattened Photo- set in motion during the very begin- shop image is impossible to manipu- ning of CYLINDRIX that affected the late, undocumented code is hard to development of DEAD RECKONING work with, and applications with no many years later. This was due mainly file sizes, standards, or parameters are to the restricted cash flow caused by far off base, we obviously didn’t get a almost useless. When any member of the debt incurred during the develop- deal. Finally, I went solo and turned the team moves on or dies, their work ment of CYLINDRIX. my efforts to trying to find a publisher will be hard to alter or modify if disor- In hindsight, I realize that all I for CYLINDRIX at reasonable terms and ganized, undocumented, and improp- lacked at the time was the self-confi- cut my losses. By this time, CYLINDRIX erly backed up. dence to handle these decisions and was very dated and all the ads that had During DEAD RECKONING’s develop- situations that initially frightened me. run turned off potential publishers. ment, I laid out the schedule for back- When all this well-meaning advice was They wanted to launch it themselves 65 ing up and archiving assets, but never being enacted, I was deeply conflicted. and didn’t want to try to compete with enforced it. When the time came to My instincts screamed that things all the marketing and publicity already retrieve and utilize these assets, they weren’t right, but I didn’t follow my generated. The publisher I finally went weren’t easy for me to use. In the end, I conscience. Of course, when all the with turned around and sublicensed had to spend more time digging bad effects of those decisions started the game into obscurity. through files with which I should have surfacing towards the end of develop- But CYLINDRIX was not a failure, already been familiar. ment, I was forced to handle ten times because it didn’t end there. We took all For me personally, the most frustrat- what I would have had before hiring that we learned and used it to create ing instance of this was having to go the professional. DEAD RECKONING. The fact that back and work with flattened, low-reso- The problem is that most business- CYLINDRIX was a great game and was lution images. I waited until too late to men don’t understand the computer well-known for that period of time also try to get these files, as I assumed they games marketplace, and fewer under- allowed us to get the publishing deal were being saved. During development, stand the game developer. Having a with Piranha. the artist created Photoshop files of the “suit” show up in my office and do the characters in the game; some of these back-slapping, hand-shaking, and images were as large as 25MB. As he other customary behaviors that seem In the End… needed more hard-drive space, he delet- so insincere (to most people) served ed these large images. It was months only to make the team very uncom- uring the development of DEAD before the publisher began requesting fortable. I found out later it made D RECKONING, I’ve had some lofty these images for the ads, boxes, and them all downright suspicious and I highs and dismal lows, and the design other layouts. Needless to say, I felt don’t blame them. document kept me focused. Drift got foolish for not having them available. I was also advised to maintain a bad for awhile; then I dusted off the The level editor was also totally “proper” office with a receptionist and design document and got back on undocumented. When we decided to several management functions. They track. And despite the effectiveness of host the level design contest, we had to were expensive and unneeded in a the design document, there are a thou- document the level editor — thorough- game development environment, and sand things I’m doing differently this ly. With all that was happening in the overkill that only served to sap devel- time around. It is most exhilarating to last few months of development, this opment resources. What is defined as a see a vision fulfilled and know the next was a great burden. proper office in one profession is all one will be even grander. ■ MISUSED “PROFESSIONALS.” wrong in another. 5. Technically, this “wrong” hap- The end of my consultant phase was pened during the development of when I was pushed to self-publish CYLINDRIX, but the effect was so pro- CYLINDRIX. This desire was based on found that it had a direct impact on the greed factor and not the facts. To DEAD RECKONING. Also, during the make a long story short, six figures of development of DEAD RECKONING, I was advertising alone will not get your able to fix the mistakes made during game anywhere near a retail shelf. You CYLINDRIX (not that I didn’t make all need a publisher. new mistakes during DEAD). But But when I did decide to get a pub- because couldn’t fix this problem, I lisher, we overestimated drastically the have to mention it here. title’s worth. Because the price was so http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER SOAPBOX by Terry Bratcher The Game Developer’s Resource Center

have been tortured for the last seven years by a harebrained idea that just won’t go away. The gaming community needs a Developer’s Resource Center — a per- manent location where new technologies can be explored and developers can Iaccess all kinds of services. It should be open to everyone, administered by a neutral party, such as the Computer Game Developer’s Association 72 (CGDA), and be supported by the community as a whole. About nine years ago, I got involved as a playtester at a then-small developer startup, Lucasfilm Games. We had what every developer dreams of: a famous benefactor with unimag- inable financial resources, two of the best licensing properties in history, and an interest in making the absolute best games. We had five testers with good access to the appropriate equip- ment needed for good compatibility. Hardware companies started contacting us. It began with Creative Labs. They were trying to establish a new standard for audio called Soundblaster. They sent their reps in to teach our programmers how to use their API, and gave us hardware and as much technical support as they could. Soundblaster was an improvement over existing technology, moderately easy to use, and made our products better, so we used it. The same thing happened for any number of products and initia- tives over the next two years. Technology changes started coming at a faster rate and the test group grew in response. By 1991, the test group had grown to 35, and a full-blown com- patibility lab was in the works. We were Lucasfilm and the world of new technology beat a path to our door. But this wasn’t the case for everyone. I had been to a couple of Computer Game Developer’s Conferences by this time, and had seen what a struggle it was for smaller developers to keep up with the latest technologies and APIs. This seemed to be diametrically opposed to the the- ory that to grow an industry or promote a better technology, input from as many sources as possible was best. The word would spread faster if there was a centralized point of contact for people interested in using a given technology. The game industry would grow faster if some of the advantages that Lucasfilm had were made available to everyone. The rich Continued on page 71. Illustration by Pamela Hobbs In the last six years, Terry Bratcher has directed technical out- reach groups that helped bring 3D graphics, MPEG and DVD video, positional audio, and online technologies to the com- puter game industry. He is currently Director of developer ser- vices at Business Development International, and is serving on the Board of Directors of the CGDA. Your comments are welcome at [email protected].

GAME DEVELOPER DECEMBER 1998 http://www.gdmag.com SOAPBOX

Continued from page 72. CGDA’s Board of Directors sees the cre- ing sessions with anyone interested in networking environment that the ation of a center of this kind as a signifi- advancing technology. Would I donate CGDC offered only came once a year. cant benefit to all its members. A cen- hardware? You bet your life! And I’m That wasn’t enough. I became con- tralized database of available talent, willing to bet that other people in the vinced that for the benefit of the game equipment, and actual workspace pro- game community feel the same way community as a whole, we needed a vided at discounted rates to CGDA that I do. In fact, I know they do. Developer’s Resource Center. Members could stimulate the produc- The Center will be a unique entity, The heart of the Developer’s Resource tion of new games. Freelancers could and I’ve seen support from businesses Center is a Hardware Compatibility Lab. support themselves more easily on a and organizations across the industry. It is also the heart of the funding plan. project basis — an incubator, if you will, The Developer’s Resource Center will Unlike small developers, hardware com- panies have money to spend. More than The heart of the Developer’s Resource Center one-hundred fifty hardware companies, peripheral manufacturers, and tool is a Hardware Compatibility Lab. It is also the developers spend between $250,000 and $3,000,000 each, annually, in an effort heart of the funding plan. to get their products in front of game developers. In doing so, they manage to run by our own community. not pose a competitive threat to any lab, effectively supply less than half of all Until recently, there have been a scant business, or event currently in exis- developers. The test labs at Electronic few places where people interested in tence. Hardware labs, for example, are 71 Arts, Activision, Lucas, GT Interactive, learning about our industry could take willing to test for you, for a fee. Several Interplay, Hasbro, and Cendant, among classes. Schools such as Full Sail in have volunteered to act as extensions of others, are inundated with every new Florida have begun to offer classes in all the Center in exchange for access to technology. So much so, that much of aspects of game design, production, mar- more cutting-edge hardware. I have spo- this new technology never finds its way keting, and so on. The Developer’s ken to members of both Microsoft and into use unless someone from OEM Resource Center could provide experi- Intel’s ISV teams, and they support the sales proposes a bundle deal. The small- enced teachers with a location for their idea as well. Intel currently sponsors to-midsize shop has one-tenth the classes as well. As for the location itself, such a center for the Film Industry. attention and no way to afford enough traditionally the San Francisco Bay Area The Developer’s Resource Center is different hardware to do a proper com- has been the focus of both hardware and also no competition for Plugfest or patibility test. software development in the game Meltdown events. (The Center could act In the last seven years, the business industry. This makes it a natural location as a permanent home for both events.) environment has changed as radically as choice. It has been suggested that a local These events happen on given dates, the technologies. Developers have fallen university might be willing to host the and are restricted to those who can victim to the instability of the fiscal Center. I might add that if successful, afford the time and money to attend environment as well as the lack of a sta- plans are in place to locate two smaller then. The Center is intended for those ble development platform. Consoles, centers in the U.S. within three years, whose schedules or budgets don’t corre- sub-$1,000 PCs, location-based enter- and two more internationally within spond with a given event. Furthermore, tainment projects, the Internet, and set- five. In the meantime, there are plans to the Center takes nothing away from the top boxes using a variety of new tech- create a Developer’s Roadshow to help number one event for everyone in the nologies, not to mention new and in bring the benefits of The Center to the development community, the Game some cases proprietary operating sys- community in general. The Center can Developer’s Conference. The tems, promise to expand the market for provide outsiders quick interaction with Conference lasts just four or five days, our products. We are experiencing an top developers. Our industry needs to whereas the Center is a year round unprecedented consolidation on the develop a positive business model; stim- home for anything that anyone wants publishing side. There are hundreds of ulate the development of stable, usable to expose to the community, that when developers out there with great games technology; and grow quickly to meet utilized, gives back to the community that never see the light of day because the demands of the future. immediately. The Game Developer’s they lack access to an artist, a musician, Over the last seven years, I have spo- Conference has expressed interest in programming support, an experienced ken about and gotten ideas from a num- helping with the project. Several pub- game designer, a test group, or in some ber of people regarding the Developer’s lishers have asked about Sponsorship. cases, a publisher. Resource Center. I’ve run ISV programs The idea is just to do a better job, Community support has to be key for for more than five years. I would instant- more efficiently, for everyone. The the Center, for purposes of funding, ly give one tenth of my budget to have a CGDA is currently forming an advisory compatability, and developer outreach. place where my hardware was properly board to help with planning for the The CGDA is the non-profit, neutral displayed — where I could, by appoint- Center. Volunteers are needed. The final entity that is necessary to the success of ment, help developers test their own step is to open the idea up to the reader- the endeavor, to bring all the widely dis- products for compatibility and answer ship of this publication for criticism, persed elements together. No other programming questions face-to-face, and hopefully, support. If you are inter- organization has done more for the ben- where I could have space for ested in contributing, please contact me efit of the game community. The Developer’s Conferences or brainstorm- at [email protected]. ■ http://www.gdmag.com DECEMBER 1998 GAME DEVELOPER