OCTOBER 1999

GAME DEVELOPER MAGAZINE ON THE FRONT LINE OF GAME INNOVATION GAME PLAN DEVELOPER

600 Harrison Street, San Francisco, CA 94107 t: 415.905.2200 f: 415.905.2228 w: www.gdmag.com Graphics Fly... Publisher Cynthia A. Blair cblair@mfi.com EDITORIAL Will Developers Fry? Editorial Director Alex Dunne [email protected] Managing Editor his heard at a Siggraph panel: pricing” — $5,000 or less per product, Kimberley Van Hooser [email protected] “Consumer graphics cards in no royalties). These will be inexpensive Departments Editor two years will be more power- tools that even junior developers can Jennifer Olsen [email protected] ful than any graphics card learn in a few weeks, and which can be Art Director T Laura Pool lpool@mfi.com available today at any price.” That’s integrated into a game quickly. Where Editor-At-Large quite a bold prediction, but I agree. will we get these dream tools? That Chris Hecker [email protected] Graphics hardware has entered a phe- brings me to my second point. Contributing Editors nomenal technological growth spurt, At Siggraph, it was evident that the Jeff Lander [email protected] Paul Steed [email protected] thanks in part to the demands of graphics research community desires Omid Rahmat [email protected] today’s games. The latest crop of con- closer ties to the game development Advisory Board sumer 3D chips, such as Nvidia’s industry. The problem is, researchers Hal Barwood LucasArts GeForce 256 (formerly known as NV10), don’t know how to build those relation- Noah Falstein The Inspiracy Brian Hook Verant Interactive 4 boasts features that were found exclu- ships with us, how to identify what Susan Lee-Merrow Lucas Learning sively on high-end workstation cards aspects of their research we might find Mark Miller Harmonix Dan Teven Teven Consulting only a year ago. Consequently, the line useful, and how to craft licensing Rob Wyatt DreamWorks Interactive dividing “consumer” and “workstation” schemes we’d find attractive. So in order class cards gets fuzzier each passing day. for our commercial interests to be ADVERTISING SALES The scary aspect to the aforemen- served, it looks like it’s up to us to build Western Regional Sales Manager Jennifer Orvik e: jorvik@mfi.com t: 415.905.2156 tioned prediction is that, if it pans out, those relationships. How many people Eastern Regional Sales Manager/Recruitment we’ve got a lot of work ahead of us if we on your team regularly investigate tech- Ayrien Houchin e: ahouchin@mfi.com t: 415.905.2788 hope to maximize the capabilities of nologies that are still in the labs? It International Sales Representative that hardware. Or, to put it another might be worth your while to pick up Breakout Marketing e: [email protected] t: +49 431 801703 f:+49 431 801797 way, where are those hundreds of mil- the Siggraph proceedings each year, see ADVERTISING PRODUCTION lions of triangles being drawn on screen what’s been presented, and make licens- Senior Vice President/Production Andrew A. Mickus each second going to come from? It’s ing offers to the appropriate researchers Advertising Production Coordinator Dave Perrotti apparent that game developers are when bits of technology look useful. Reprints Stella Valdez t: 916.983.6971 increasingly playing catch-up with Bridging the gap between the public MILLER FREEMAN GAME GROUP MARKETING hardware. Without changing the way and private sector could give developers Marketing Director Gabe Zichermann things currently work, we risk widening access to reasonably priced, highly spe- MarCom Manager Susan McDonald the gap between what hardware (both cialized software tools for maximizing Junior MarCom Project Manager Beena Jacob PC and console) supports and what the horsepower of graphics hardware. CIRCULATION games actually deliver. To narrow that Finally, we can’t be afraid to take risks Vice President/Circulation Jerry M. Okabe gap, several things need to happen. with technology. Gambling on the Assistant Circulation Director Sara DeCarlo First, we need more specialized tools. capabilities of future graphics hardware Circulation Manager Stephanie Blake Many SDKs currently categorized as seems to be one of the safest decisions Assistant Circulation Manager Craig Diamantine “middleware,” such as physics and 3D you can make today. In this month’s Circulation Assistant Kausha Jackson-Crain animation engines, are often expensive Postmortem of , for instance, Newsstand Analyst Joyce Gorsuch to license and don’t appear to integrate Jason Leighton and Craig Derrick dis- INTERNATIONAL LICENSING INFORMATION easily into already-underway projects. cuss the reluctance they felt when early Robert J. Abramson and Associates Inc. Perhaps this will change over time as in the project they decided to build a t: 914.723.4700 f: 914.723.4722 more commercial SDKs hit the market, graphics engine that required 3D hard- e: [email protected] causing prices to fall and developers to ware acceleration. Of course, any AAA become better acquainted with using game aiming for the high end of the comprehensive off-the-shelf libraries market today takes 3D acceleration for CEO/Miller Freeman Global Tony Tillin for adding complex functionality into granted, but surely there are technolo- Chairman/Miller Freeman Inc. Marshall W. Freeman President & CEO Donald A. Pazour games. But the types of products that I gies today which look just as risky as CFO Ed Pinedo think will make the most impact on hardware-accelerated 3D did in back Executive Vice Presidents Darrell Denny, Galen A. game development will be highly 1996. With better tools and market fore- Poss, Regina Starr Ridley Sr. Vice Presidents Annie Feldman, Howard I. Hauben, focused — those that sacrifice broad sight, the likelihood of a long death Wini D. Ragus, John Pearson, Andrew A. Mickus feature sets in favor of super-specific march to get your game out will be Sr. Vice President/Development Solutions Group KoAnn functionality (for example, a tracking reduced substantially. ■ Vikören Group President/Division SF1 Regina Ridley camera system for TOMB RAIDER clones, or a flexible terrain editor/generator) and reduced price (what I call “Smacker

GAME DEVELOPER OCTOBER 1999 www.gdmag.com SAYS YOU

Playing the Political Game August 1999). Languages are not creat- do not believe there to be a necessity ed by committee, they are formed out here as of yet. Art evolves in canvas, not of necessity. The movie term “zoom-in in conference rooms. eading Herr Kreimeier’s chilling dolly-back” was not created because a Adam Heine R vision of game censorship in bunch of directors decided that they via e-mail Germany (“Killing Games: Violence vs. needed to create terms for all the dif- Censorship,” Soapbox, August 1999) ferent shots they did. More likely than AUTHOR DOUG CHURCH RESPONDS: has forced me to briefly divert my atten- not, some director said “O.K., in this “Lexicon” is Game Developer’s word, “Jar- tion from developing games to worrying scene I want the camera to zoom in gon” is your word. “Tools” was my word. about the future of the game industry. while we move the dolly away from The underlying tool idea and specific The thought that in a few years I might the scene,” and when they shot the tools discussed in the article have evolved not be able to develop or play games scene he probably said, “O.K., now through use. During development of where things “blow up good” is not one zoom in and move the dolly back!” UNDERWORLD 1 and 2, we talked about our that I am happy about. I have no prob- and of course the goal to “immerse” the player. On lem with rating systems, but the sup- phrase got shorter 1, we discussed pression and confiscation of games and eventually more seriously what tools we based on their content reminds me too caught on We’ll lend you an ear. E-mail us at had to work with. As I stated much of book burning. with other [email protected]. Or write to in my talk on Intention at When I’ve taken time to consider the directors — Game Developer, 600 Harrison Street, the 1997 CGDC, SHOCK had issue (rarely), I’ve always thought of the this is how San Francisco, CA 94107. no conversation mode 7 “anti-violence in videogames” politi- language devel- because we felt that UW con- cians as grand-standers using their ops. The reason versations had little player inten- nutty ideas to win votes from Ma and there are so many tion, especially compared to the 3D Pa Bible Belt. I always figured they’d terms for world. This isn’t a judgement of conversa- have zero chance of actually getting things in the techni- tion, but rather a statement about what anything passed. However, knowing cal side of games is tools fit our game design vision. Tools are what has been done in Germany because they are used to shape games. We continue to try and seeing the rise to dominance needed. It and understand the tools we use and how of mass media publishers who is formed they work. would probably just roll over along with As I see it, “usage” has been happening and accept any such changes, I the technology for years, the GDC talks and this article are now believe that I should because it necessar- “exposure,” and we’ll see if the tools idea involve myself in this issue. ily cannot be described catches on. Step 2, right? I didn’t sit around Unfortunately, like most of myk col- in any other way. in a conference room trying to figure out a leagues, I have only a very small Not only can we not create a topic for a Game Developer article. I’m a amount of time to devote to a crusade. lexicon via committee, I also believe game designer trying to share ideas several My game’s got to ship by Christmas, that it is not necessary. Any designer teams have actually used in attempting to right? I vaguely remember a game lobby who’s worth what he’s paid will be implement a game play vision. group that was formed a few years ago able to sit down, play a game, and I strongly disagree that design is a myste- to combat this type of censorship, and I then tell you why he’s still playing it rious, unanalyzable “art.” Of course vision plan to get involved in such a group. 20 hours later. If you can’t figure out and aesthetics are involved, but they are I’d like to thank Game Developer and what makes a game fun or addicting part of technology or books, too. Stating Bernd Kreimeier for bringing the possi- then you are probably doomed to design is not rationally understandable, ble outcome of goofy anti-videogame making boring games unless you just unlike those other “simple” things, feels legislation to my attention. They’ll get lucky. I don’t think this industry is lazy to me. As a game designer, I should take away my fighting games when run by a bunch of lucky designers — I learn to design games, right? they pry the game-pad from my cold think most of us know what we are Some people have interpreted my advo- dead hands. doing. Design does not evolve in the cacy of identification, analysis, and under- Lee Waggoner, President/CEO same way as technology because it is standing of design tools as an attack on Wrecking Ball Software Inc. abstract; it is an art. Technology designers. That was not my point. Nor was I via e-mail evolves as fast as we can push it, but saying people who don’t use big words are you cannot push art. It will evolve at losers, pedantic analysis is game design, or its own pace and all attempts to push that tools encapsulate all. Certainly, you can it ahead of its time will most likely dismiss design analysis as pointless or Get out of the Conference Room end in failure. attack it as wrong. However, I believe the Designing games is an art, and art tools idea and the process of developing it cannot be defined so easily by a few jar- has helped us focus game play and better don’t agree with Doug Church’s gon-like terms — that is for technology achieve our vision in titles I worked on. Iproposal that our industry needs a and other less abstract concepts. You Therefore, refinement of that understanding lexicon in order for design to go for- cannot force jargon into existence — it will continue to bring benefit. That is the ward (“Formal Abstract Design Tools,” is formed out of necessity, and I for one spirit in which the article was written. http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER New Products: Alias|Wavefront and Newtek vie for the adoration of game developers with new offerings, and Global Majic debuts 3DLinx. p. 9

Industry Watch: Non-sightings at Siggraph, the latest from the online piracy battlefront, and Stolar says sayonara to Sega. p. 10

Product Review: Jonathan Blow takes NDL’s NetImmerse engine for a spin and weighs in on the big build-or- News from the World of Game Development buy question. p. 12

the Maya API offers access to Maya’s etry into a single object, aiding in the New Products internal data structures for creating management of complex hierarchies. custom translators and plug-ins. Also notable are the new rendering by Jennifer Olsen Maya Builder will be available for technologies offered (including souped- IRIX and Windows NT, and is expected up Hypervoxels) and a new hybrid to have a retail price of $2,995. It will Inverse/Forward Kinematics engine. In If You Build It, Will They Come? be included in the upcoming release of addition, Newtek has overhauled its Maya 2.5 later this fall. curve editor, offering multiple-tangent ALIAS|WAVEFRONT is still busy wooing ■ Alias|Wavefront types such as Bézier and Hermite curves, game developers, and their latest sere- Toronto, Ontario, Canada which it hopes will improve control of 9 nade is in the form of Maya Builder, (416) 362-9181 motion curves, resulting in better real- designed to streamline design for http://www.aliaswavefront.com ism in character animations. game designers and 3D programmers, Lightwave 6 runs on Macintosh, while allowing easy integration with Alpha, IRIX, and Windows NT systems, other Maya features they’re already Riding the Next Big ‘Wave and carries a suggested retail price of using. $2,495. Registered 5.6 users can Builder includes features from NEWTEK unveiled Lightwave 6, the upgrade for $495. Maya’s suite of polygonal tools, next generation of its modeling and ■ Newtek including Artisan, prelighting, UV animation software, at Siggraph this San Antonio, Tex. editing, and nonlinear deformers. Its past August. Newtek claims this partic- (210) 370-8000 basic animation capabilities, which ular release is their most significant http://www.newtek.com can animate objects such as draw- upgrade of the past ten years. No bridges or cranes, support Maya’s stan- longer content with red-headed- dard keyframe-style tools and IK stepchild status among character ani- Not Your Father’s 3D API solvers (with source code, so program- mation systems, the new Lightwave mers can deploy behaviors easily on offers several enhancements tailored GLOBAL MAJIC SOFTWARE recently their end platforms). Maya’s Embed- specifically to game developers. launched 3DLinx, a new 3D develop- ded Language (MEL) lets programmers Version 6 introduces a family of char- ment environment for Windows incor- customize Builder with level editing acter animation tools called Intelligenti- porating a variety of languages, includ- tools specific to their engines, while ties, which consist of Skelegons, Endo- ing Visual Basic, Delphi, C++ Builder, morphs, and and others. Multi-meshes. Skele- Traditional 3D can have long gons are polygons learning curves, depending on the skills that appear like reg- and experience of the programmers ular 3D bones, so using them. Global Majic has attempted that any changes to simplify many complex tasks such as made to the charac- scene graph management, view culling, ter automatically and collision detection, to offer 3D pro- update the skeleton gramming to a wider audience. as well. Endomorphs The Standard Edition of 3DLinx, are designed to help priced at $895, is geared toward quick with complex mor- creation of 3D applications, while the phing tasks (such as Professional Edition, for $2,495, facial animation), includes additional loaders for import- allowing changes of ing different file formats. An SDK will expression, mood, or also be available for third-party develop- actions by training a ment of custom features and add-ons. single model. Multi- ■ Global Majic Software Maya Builder will be one of the new features of Maya 2.5, meshes, as the name Huntsville, Ala. offering new tools specifically for level design. implies, embed mul- (256) 922-0222 tiple layers of geom- http://www.3dlinx.com http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER BIT BLASTS - INDUSTRY WATCH

States. The IDSA alleges that the Industry Watch defendants posted pre-production copies of PC and videogames on the by Alex Dunne Internet. Named as defendants were and Dan Huebner the leaders of the Class, Paradigm, and Razor 1911 hacking groups, oper- NOT SEEN ON THE SCENE. At Siggraph, ating in San Francisco, Dallas, Austin, the usual suspects such as SGI, Dis- Minneapolis, the Philadelphia area, creet, Alias|Wavefront, and others had and the Champaign, Illinois, area. large booths on the floor, but two Acclaim, Accolade/Infogrames, companies were conspicuously absent Bethesda Softworks, Interplay, Lucas- from the exhibition: Microsoft and If titles such as READY 2 RUMBLE are a Arts, and 3DO are also plaintiffs in Apple. Rumor has it that Apple won’t hit overseas, Midway won’t have to the case. The lawsuit charges that the attend tradeshows where it can’t have share the prize money with anyone. defendants engaged in copyright and the largest booth, so perhaps its excuse trademark piracy, racketeering (includ- was that it couldn’t compete with ing mail fraud, wire fraud, and inter- SGI’s dueling 60×60-foot booths at the and profits from such worldwide sales, state transportation of stolen proper- show entrance. But what was Micro- which wasn’t the case under its previ- ty), counterfeiting, and unfair soft’s excuse? Microsoft Research, ous agreement with GT. Under the competition. The IDSA gathered evi- 10 which employs some of the most terms of the terminated distribution dence in the case by monitoring the respected graphics experts in the arrangement with GT Interactive, groups for several months, tracking industry (Glassner, Blinn, Hoppe, Midway did not participate in the rev- their private chat sessions and mes- Whitted, and on and on), had a num- enue and profits generated by sales of sage postings. It’s the first case ever ber of people speaking at the confer- its home videogames in international filed against actual named members of ence, but one wonders why the biggest territories until certain nonrefundable any piracy group. ■ event of the year advances were recouped by GT wasn’t on the company’s radar. Interactive.

STOLAR AND SEGA PART WAYS. Bernie ESRB O.K.’S PERMISSION SLIPS. Some UPCOMING EVENTS has left the house. The question is, game web sites now have something in why? As the president and COO of common with elementary school field Sega of America, Bernie Stolar was trips: parental permission slips. The instrumental in shaping the Dream- Entertainment Software Ratings Board CALENDAR cast launch, but Sega hasn’t revealed granted its first certification in a pro- any details about the split. As you gram that requires children under the might imagine, age of 13 to have a “permission slip” Digital Video Conference and Expo morale around signed by their parents before they will SOA wasn’t terri- be allowed to participate in any web- LONG BEACH CONVENTION CENTER bly high when it based activities. Electronic Arts is the Long Beach, Calif. was announced, first company to implement the sys- October 19–22, 1999 but it’s hoped that tem, called ESRB Privacy Online. Cost: variable Toshiro Kesuka — Youths aged 13 to 17 registering at an http://www.dvexpo.com Stolar’s replace- Electronic Arts site will have a notice ment as vice- of their registration mailed to a parent, chairman and who then has the option of removing Game Developers Conference Bernie Stolar COO — will keep their child’s name. Those younger than 1999 RoadTrips helped shape the ship afloat 13 will be directed to print a permis- the U.S. Dream- through this criti- sion slip to be signed by a parent and OGDEN ECCLES CONFERENCE cast launch. cal time for the returned to EA. The program is not CENTER company. designed to protect children from Salt Lake City, Utah objectionable content online, but November 1, 1999 VOULEZ VOUS MIDWAY GAMES? Mid- rather is geared towards regulating the way regained the rights to distribute collection, use, and safeguarding of THOMPSON CONFERENCE CENTER its games in international markets customer information. AT THE UNIVERSITY OF TEXAS after reaching a settlement with GT Austin, Tex. Interactive. Midway, which had filed a TAKING ON VIRTUAL SWASHBUCKLERS. November 3, 1999 securities lawsuit against GT Interac- The Interactive Digital Software tive, must pay GT an undisclosed Association (IDSA), along with six Cost: $120 ea. (discounts available) sum, and will distribute its games member companies, filed a lawsuit in http://roadtrips.gdconf.com internationally from now on. Midway Northern California against six online can now directly realize the revenues pirates located within the United

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com BIT BLASTS - PRODUCT REVIEW

from a given URL), but this is nowhere game. For example, the NetImmerse near its central point. terrain module does not provide NetImmerse provides components smoothly interpolating terrain vertices that include the following technical (you see “popping” effects) and is not features: structured for landscapes that have • A terrain rendering system with very high texture densities. It is also view-dependent detail reduction, not very memory efficient compared to based on Peter Lindstrom’s algo- what you could create if you knew rithm from the 1996 Siggraph pro- exactly what terrain size and resolution ceedings. (This algorithm has been you wanted and implemented the popular with game developers cre- Lindstrom algorithm by hand. So if ating their own terrain systems.) you are developing a game to compete • View-independent detail reduction with STARSIEGE , and you want for triangle meshes. This appears your terrain to be superior, you’re very similar to Hugues Hoppe’s pro- going to have to write your own. gressive mesh algorithm, which is Similar statements can be made NDL’s included with DirectX. I find that about every component of NetImmerse. NetImmerse’s version is nicer and Though the collision detection systems NetImmerse 2.3 easier to use. are quite intelligently coded with a lot 12 • A portal system, for culling hidden of care given to speeding up the special by Jonathan Blow geometry in indoor environments. cases between different types of primi- • A collision detection system that tives, they don’t report accurate enough etImmerse is a software devel- uses trees of oriented bounding collision points or times to be used for opment kit for 3D graphics boxes (the OBB-Tree algorithm “real” physical simulation. The portal N and animation. It is a scene developed by Gottschalk) and some system doesn’t perform optimally for graph API, meaning that objects in other simple bounding primitives some geometry types, which may be your 3D world are stored in a hierarchi- such as spheres, extruded spheres, the ones you want to use in your game. cal tree. The graphics engine then ren- and extruded ellipses. And so on. ders your scene by traversing the tree. • A system for dynamic tessellation of These observations can’t really be You make things happen in the curved objects built from Bézier taken as criticisms of NetImmerse, world by tweaking the attributes of patches. however. These are the same problems objects in the tree. If you transform an • A shape animation system that that come up any time you use a gen- object (rotate it, move it, or scale it), includes morphing, skinning, gen- eralized system to perform a specific all of its children (nodes below that eral path control, and particle sys- task. Because the system is attempting object in the tree) will be transformed tem support. to solve a harder problem than what as well. To make an object move • A multitexturing texture system you’re using it for, it will not be as effi- through space, you can either modify with a cache manager. cient as something that is tailored to its position manually from frame to • A 3D sound API that uses Aureal your specific needs. frame, or you can attach animation Semiconductor’s A3D 2.0 as its NetImmerse is designed for modular- curves to its attributes; the object will back end. ity. So if you need a terrain system that follow the path of motion described by • A rendering manager that can use is more memory-efficient and that the curves. Glide, , or OpenGL as its smoothly interpolates vertices, you can The nodes in the tree can be simple back end. write it yourself and stick it into the geometry objects such as textured tri- QUALITY OF TECHNOLOGIES. So Net- scene graph, and it will work. But if angle meshes; they can be more com- Immerse provides all these features. you’re pushing the cutting edge of per- plex geometry objects, like curved But how good are they, actually? The formance, there’s a limit to how effec- objects made from Bézier patches or answer is, pretty darn good for a gener- tive this will be; at some point you height-mapped landscapes; or, they alized API. have to re-architect the can be completely new objects that The source code for the NetImmerse around your core features, and this you define yourself. internals is clean. Each of the modules would require throwing away most of NetImmerse’s name can be mislead- is a competent implementation of the the structure that NetImmerse gives ing; it sounds as if it’s a networking targeted technology, written to be as you, or using it in an ancillary way. API, but it’s not. There are a few fea- generally useful as possible while still ASSET CREATION. NetImmerse does not tures of NetImmerse that can be used being efficient and easy to modify. provide a content creation tool for 3D in conjunction with networking (such However, none of the modules is as geometry and animation; the paradigm as the ability to asynchronously load good as what you’d get if you told an is that you should use the commercial geometry and animations into a run- experienced 3D programmer to create authoring tool that works best for you, ning scene, or fetching an image file that functionality for one specific then export the data for use with NetImmerse. NetImmerse provides Jonathan Blow is the guy who receives e-mail sent to [email protected]. exporters for 3D Studio Max 2.x, Softimage 3.8, Multigen Creator, and

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com BIT BLASTS - PRODUCT REVIEW

Motion Factory’s Motivate. the tutorial, that’s NetImmerse can load textures from O.K. too. The sample .TGA or .BMP files and from files con- source code is clean sisting directly of RGB 3-byte values or and easy to read on RGBA 4-byte values. It can also parse its own. There is not a textures out of its own file format, .NIF. trace of platform-spe- The NetImmerse file format is a pack- cific code in the sam- age format that can contain any of the ples, which is nice for NetImmerse data types; you get one of two reasons. First, it these when you export a scene, or shows that the under- when you use API calls to save a scene lying architecture is that you have created in memory. clean and complete, DOCUMENTATION AND SAMPLE CODE. The without falling back system is fully documented and the on Windows for some documents are provided in two file functionality or allow- formats: .PDF and Word 97 .DOC. The ing Windows data FIGURE 1. This shows NetImmerse’s continuous LOD documentation is of high quality; in structures to infiltrate demo. As you move the dinosaur into the distance, its fact, it’s the best documentation I the API calls. Second, count decreases. Popping is scarcely visible. have ever seen for a game-related SDK, it makes the code 14 by a wide margin. The first piece of pleasant and easy to documentation is a 26-page program- understand (because it’s not filled with However, what you get with, say, the ming manual that provides an the nasty type definitions and unread- QUAKE 3 engine, is an already-assembled overview of the entire system; after able naming conventions common in game that you can modify until it reading it, anyone who has ever used Microsoft APIs). becomes what you want. If the original a scene graph API will be able to sit The rest of the documentation game is technologically similar to the down and begin coding. Anyone who describes NetImmerse’s major techno- game you want to develop, then you has not will want to proceed to the logical components (the portal sys- won’t need to spend too much engi- next piece of documentation, the tem, detail reduction system, and so neering effort to get your game into a tutorial, which is a walkthrough of on). These files use diagrams to basic running state. Instead, you can every sample program provided with describe the operation of each compo- spend all your effort on refining your the SDK. nent; they also give guidelines on the game, which hopefully means it is of There are 15 different sample pro- optimal, proper, and improper uses of higher quality in the end. NetImmerse grams, and the documentation does a each component. provides a lot of features, but it is not a terrific job of explaining them. Think HOW IT STACKS UP AGAINST COMPETITION. game or a game engine. You will still of a good programming book that you Anyone who is considering licensing a need to do a lot of work to put the would buy for $70 in a bookstore, toolkit like NetImmerse will, naturally, pieces together in the right way, and to wherein the author creates programs consider other options as well. Of provide the pieces of core functionality and guides you through their logic one course one can license a tool that com- needed to make your game run. section at a time. That’s what you get petes with NetImmerse and provides A second alternative might be to use in the tutorial (all 116 pages of it). functionality in roughly the same Fahrenheit, the codename for the If you’re in a rush and want to skip arena; since this is not a review of the upcoming version of Direct3D, which whole marketplace, reportedly will contain its own scene we won’t touch on graph API. (Fahrenheit specifications are those here. However, not yet available for public perusal.) The we will discuss two structure of Fahrenheit should be simi- important alterna- lar to NetImmerse in many ways, and tives, in terms of Fahrenheit will most likely be free for their scale of func- general use, as with previous versions of tionality, to put Direct3D. So why would you opt to use NetImmerse into per- NetImmerse, which will cost you? First, spective. Direct3D has a history of not living up First, you might opt to its promises, so expect Fahrenheit to to license the engine disappoint and/or annoy programmers from an existing 3D for a while after its initial release. Also, game that you like, it is quite unlikely that Fahrenheit will such as UNREAL or be ported to any non-Windows operat- QUAKE 3. On the ing systems, so if your game relies on it, FIGURE 2. NetImmerse offers projected shadow targets, minus side, this you will be tied to Windows. And you shown, as well as regular ground-plane projection, in option will cost you a can bet that you won’t get Fahrenheit which case the shadow would disappear under the wall. lot more than a tool source code, so NetImmerse will be easi- like NetImmerse. er to adapt to fit your needs. Finally, the

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com Excellent Very Good Average Below Average Poor authors of NetImmerse seem to be more in touch with the needs of game pro- NetImmerse 2.3: grammers than the designers of Numerical Design Ltd. Pros: Cons: Fahrenheit. Unfortunately, space is not Chapel Hill, N.C. 1. Provides components 1. Suffers the usual prob- available for a full discussion of this. (919) 929-2917 that are relevant to mod- lems of a generalized Simply stated, all of NetImmerse’s fea- http://www.ndl.com ern games. API — it’s generalized. tures can save game developers signifi- System Requirements: cant amounts of engineering time, 2. Source code is clean and 2. Pricing is out of range For development envi- accessible. for hobbyists. while Fahrenheit’s features seem to have ronment: 200MHz PC, been motivated by a checklist of buzz- 32MB RAM, 150MB disk 3. Runs at a reasonable 3. In some cases, an engine words. It is likely that game developers space, Windows 95/98/ speed. from a completed game will ignore many of Fahrenheit’s fea- 2000/NT, DirectX 6.1 or may be a more effective starting point. tures, seeing them as ill-fitting or irrele- OpenGL 1.1. vant. But a price tag of “free” goes a Supported Platforms: long way, so we can be sure that Windows currently; Fahrenheit will be used. MacOS and Playstation 2 LICENSING TERMS. NetImmerse can be versions are pending. modularly licensed. The most basic licensing of the SDK, for use on a sin- games on store shelves that could have have time to optimize their hand- 15 gle game project, costs $50,000. The been developed more quickly, for less coded system to be as fast as it could. portal, terrain, and mesh detail reduc- money, and been less buggy in the end, In the end, the game player needs a tion systems cost extra, at $10,000 if tools like NetImmerse had been used. very fast computer to play the game, each. The MacOS version of the SDK The truth is that the vast majority of not because the game has a very (which NDL plans to make available in modern 3D games do not push the sophisticated graphics engine, but fall 1999) also costs $10,000. This is a limits of the computer’s graphics capa- because that engine is not sophisticat- royalty-free, no-strings-attached licens- bilities, even when the game develop- ed enough. Thus one of the major rea- ing agreement. For double these prices, ers begin the project with the intent of sons behind the “build” decision — to you can license NetImmerse for an doing just that. The developers find have a hand-tuned system that is supe- unlimited number of games to be that the project was much more diffi- rior to what everyone else has — developed at one site. cult than they expected, and despite becomes self-defeating, and “buy” The import/export tools are available the schedule overruns they still don’t would have been a better choice. ■ in binary form free of charge. The source code can be licensed for $20,000 per tool. Extended maintenance and support licenses are also available. BUILD OR BUY? It would cost many times NetImmerse’s price tag to develop the in-house equivalent of NetImmerse’s code base, and it would also take a lot of time (measured in years). So in terms of cost and time-to-market savings, licensing NetImmerse makes sense, if your goals are compatible with the usage of a general-purpose API. We’re all familiar with the schedule bloat and general increase of project failure that has developed since games went 3D. From that standpoint, licens- ing NetImmerse provides a certain amount of security. You know that you have in your hand algorithms that solve a certain set of problems, so a fair degree of the technological risk factor is eliminated from the develop- ment process. Unfortunately, when faced with the choice of “build or buy?” game devel- opment teams have chosen “build” more often than they should, resulting in schedule overruns and canceled games. I have seen many popular http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER by Jeff Lander GRAPHIC CONTENT

Over My Dead, Polygonal Body

mazing things have been created with computer graphics over the past several years. Visual effects companies are poised to tackle one of the most difficult challenges in computer-generated (CG) imaging: creating A a realistic CG human character. However, in my opinion, it hasn’t hap- pened yet, no matter how many times I think most people would be glad to again and we are starting to see this see -like organic aliens and robotic continue to provide a living for their become a reality. 17 bipeds trotting all over the screen. family even after they have gone from One consumer graphics chip com- The trouble is, humans are tough to this life. I just think technology has pany, Nvidia, has publicly committed simulate, regardless of how long we forced us to reexamine that particular to delivery of hardware transforma- take to create the image. It may be ultimatum. Perhaps it is time for tion and lighting with their next gen- obvious, but the difficulty lies in the something like, “Over my dead body eration of graphics chips. There are fact that we are all very familiar with and virtually extinct telepresence.” rumblings that others are likely to how humans look. We see them all the Kind of loses that Wild West charm, deliver on this promise as well. In fact, time. In the morning, I see something doesn’t it? Microsoft is so certain that hardware resembling a human in the mirror T&L will be a reality in the consumer while I shave. Living as I do along the hardware market, they have included coast, I often see more of the human Bringing Them Back in Real Time support for it in the next version of form than is probably healthy both for the DirectX game programming API, my ego and my digestion. In everyday oncerns over these kinds of legal DirectX 7. Game developers who are life, we see all varieties of people per- C dilemmas are not going to stop scheduling projects for release in the forming every imaginable action. Each me from doing my job, however. As a next production cycle need to consid- of us is an expert in determining the creator of real-time 3D graphics, I not er how their projects will handle hard- believability of a CG human form. If only face the hurdles which confront ware T&L. the skin looks wrong or the motion my visual effects comrades, but I also looks stiff or the lip-synch is off, each need to make these realistic characters of us screams, “Fake!” move fast. Fortunately, in this task, How Do We Deal with HW T&L? But these technical and artistic technology is on my side. problems are solvable. The brilliant Realistic characters require lots of ortunately, the driver writers will artists and technicians charged with polygons to make them look realistic. F do most of the work for us. Games making us believe will make sure that Lots of polygons mean lots of vertices using the transformation and lighting it happens. I have thought a bit about being transformed by an overwhelmed pipeline in OpenGL will take immedi- the problems this will present, howev- CPU. At Siggraph 1998, I began to see ate advantage of the hardware if it’s er. I think about John Wayne. What if, the emergence of transformation available. Now, with the introduction while he was alive, he was asked to do acceleration in the consumer graphics of DirectX 7, games supporting this API a commercial for beer? Perhaps his hardware space (see “Taking a Break will also transparently benefit from the answer would have been, “Over my for Siggraph,” Graphic Content, new hardware. By using the built-in dead body!” That used to mean some- October 1998). At that time, I thought transformation pipeline in either API, thing, that there was no way you it wouldn’t be long before we would games will get faster. would ever get me to do something. A be able to take advantage of hardware This will naturally enable games to bit of stock video footage and some acceleration for transformation and increase polygon counts without sacri- clever video processing tricks and lighting (HW T&L) in our games. ficing performance. It also means that voilà — John Wayne’s dead body sell- Well, Siggraph has come and gone the load on the CPU will decrease, ing beer. Now don’t get me wrong. I see When not being frightened by the idea of virtual versions of himself, Jeff creates 3D nothing wrong with a family member graphics for Darwin 3D. Let him know he is just being paranoid by e-mailing him at licensing the likeness of a relative for [email protected]. commercial or charitable purposes. I http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER GRAPHIC CONTENT

FIGURE 1A. Modeling organic objects is a challenge for 3D FIGURE 1B. Skeletal deformation systems offer both flexi- programmers dealing with hardware T&L. bility and good looks. 18 allowing more processor time for game play features, such as Since we the graphics programmers can gain this benefit artificial intelligence and game physics. And, as to be expect- without doing any real work, hardware T&L doesn’t seem to ed, creating content that performs well on a variety of user affect us much. The programmer will need to conform to a system configurations will be more important than ever. standard pipeline. For the transformation, this doesn’t seem to be a big deal. Most 3D programmers are com- LISTING 1. Code for the World->RestBone matrix. fortable with matrix manipulation of vertices. The problem is pretty well solved and the only GLvoid COGLView::GetBaseSkeletonMat(t_Bone *rootBone) issue of trust revolves around the quality of the { driver implementation. Once the hardware is /// Local Variables /////////////////////////////////////////////////////////// doing the work, the driver issue largely goes int loop; away. Most will gladly accept this pathway to t_Bone *curBone; hardware nirvana. tMatrix tempMatrix; Lighting, however, is a much more con- /////////////////////////////////////////////////////////////////////////////// tentious issue. No one I have talked to is satis- curBone = rootBone->children; fied with the lighting model provided by the for (loop = 0; loop < rootBone->childCnt; loop++) OpenGL and DirectX libraries. This issue doesn’t { bug me that much. I don’t know anyone who is glPushMatrix(); ready to give up lighting tricks such as shadow maps and texture-mapped lighting for simplistic glTranslatef(curBone->b_trans.x, curBone->b_trans.y, curBone->b_trans.z); Gouraud lighting. While we do need a hardware solution for realistic lighting, this is not it. I // Set observer’s orientation and position advise continued reliance on those lighting glRotatef(curBone->b_rot.z, 0.0f, 0.0f, 1.0f); tricks. However, as a supplement to pre-comput- glRotatef(curBone->b_rot.y, 0.0f, 1.0f, 0.0f); ed lighting for dynamic changes or shadow glRotatef(curBone->b_rot.x, 1.0f, 0.0f, 0.0f); computation, a few hardware point and spot lights couldn’t hurt, particularly if they’re fast. I // Grab the Matrix that is built up to this point can think of a lot of things that a few lights glGetFloatv(GL_MODELVIEW_MATRIX,tempMatrix.m); could be used for. // Invert this matrix to get the Base->World matrix No, simple transformation and lighting is not InvertMatrix(tempMatrix.m,curBone->baseToWorldMat.m); the problem with hardware T&L. We run into the real trouble when we consider what it means // Recursive call if the bone has children for modeling organic objects. if (curBone->childCnt > 0) GetBaseSkeletonMat(curBone); T&L for Non-Rigid Bodies glPopMatrix(); ardware transformation is ideally suited to curBone++; Hthe display of rigid objects. You first set up } the transformation matrix and then submit an } object to be drawn. With hardware, it will be costly to obtain the results of the transformation

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com GRAPHIC CONTENT

before the object is drawn. This means everything needs to this virtually the same way. I go through the hierarchy and be set up beforehand. create a matrix for each bone that will take a vertex from the That’s fine for most objects and environments. However, origin and move it to the bone position in that animation characters do not look their best when composed of rigid frame. For this World->Bone matrix, I don’t need to invert it. objects. As I have explored in a previous article (“Skin I now have everything I need to take a rest vertex and Them Bones,” Graphic Content, May 1998), creating a move it to the final position. The procedure is as follows: character from a single mesh and then deforming it via a worldVertex = baseModelVertex * restBoneToWorldMat skeletal system provides a better solution. By using skeletal deformedVertex = worldVertex * worldToBoneMat deformation, you maintain the good looks of a seamless There is an easy optimization step, though. Because two mesh and the animation flexibility of a hierarchical char- matrices can be multiplied together to create a matrix that is acter system. a sum of both transformations, I can create one matrix that Unfortunately, this system requires manipulation of ver- will do everything: tex coordinates. Let me review how a skeletal deformation combinedMatrix = worldToBoneMat * restBoneToWorldMat technique works. I have a character in a rest pose in Figure Then for each vertex, I simply multiply it by that one 1a and have created a skeleton for the character in Figure 1b. matrix: In order to deform the mesh with the skeleton, I need to deformedVertex = worldVertex * combinedMatrix assign each vertex to a bone or set of bones. For example, all This is the key to skeletal deformation. If you want to have of the vertices in the head region should be assigned to the multiple bones influencing a vertex, this final formula can be head bone. For now, let me assume that the vertices in the scaled by the amount of influence, or weight, of each bone. 20 character’s head are completely, or 100 percent, assigned to The sum of all the weights for each vertex should equal 1. the head bone. I can determine the position and orientation of the head bone at the rest frame by creating a matrix that represents What’s the Problem? the transformation needed to move that bone from the ori- gin to its location in the hierarchy. The matrix of each bone his process requires each vertex to be transformed by a is dependent on the matrices of all of its parents, so it is nec- T matrix for every bone that influences it. Clearly, this essary to traverse the entire hierarchy to determine this process should benefit greatly by the use of hardware trans- World->RestBone matrix. formations. However, this really breaks the transformation Now this matrix will take a vertex and transform it to the pipeline. It’s obviously possible for a single polygon to have location of the bone. However, when I am taking the rest vertices that are influenced by multiple bones. Therefore, position of the character, I will need to know how to take a you cannot simply set the transformation matrix and draw vertex in the mesh and transform it back to the origin. a polygon as you would normally. An entire character is Fortunately, since we are using a matrix operation, this is a even more complicated. simple matter of inverting the World->RestBone matrix with a In order for this to work, I would need to do the matrix standard 4×4 matrix inversion routine. I now have a operations first, combine the resulting vertices into a single RestBone->World matrix. This only needs to be done once, so I polygon, and submit that to be drawn. However, the pipeline can store this matrix for later use. You can see the code for doesn’t allow this. Getting the results of a transformation is computing the RestBone->World matrix in Listing 1. not a fast process, as it requires values to be returned from I now have the matrix I need to move any vertex from the the driver through a mechanism such as feedback. rest position back to the origin. Now I want to move the ver- This is precisely why it’s crucial that this type of operation tex to its final pose as shown in Figures 2a and 2b. I can do be handled by the driver via the graphics API. It’s impossible

FIGURE 2A. Our matrix enables us to move the skeleton’s FIGURE 2B. Our finished model, the beneficiary of our vertices to our character’s final pose. transformation matrix.

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com GRAPHIC CONTENT

LISTING 2. Vertex blending, where each vertex is weighted by two bones. a particular card supports blending of only two matrices and your content was typedef struct tVertex designed for blending four, you will need { to clamp and scale the weights to work. float x, y, z; This is yet another restriction for content float weight; creators. D3DCOLOR color; Second, you set the matrices for each D3DCOLOR specular; primitive instead of each vertex. Each prim- float u; itive submitted to the rasterizer must be float v; composed of vertices that are blended } tVertex; among the same bones. This can be a prob- lem in certain regions, such as the shoulder #define FVF_VERTEX ( D3DFVF_XYZ | D3DFVF_XYZB1 | D3DFVF_DIFFUSE | \ or waist where it would be quite easy to D3DFVF_SPECULAR | D3DFVF_TEX1 ) have each vertex influenced by a different bone. for (int loop = 0; loop < curBone->visuals[0].faceCnt; loop++) Finally, to submit primitives efficiently { for rendering, the model will need to be tFace *face; sorted by matrix usage. This may mean face = &curBone->visuals[0].face[loop]; rearranging your dataset with a sophisticat- 22 // There are two Matrices stored for each vertex ed export utility or custom optimization d3ddev.SetTransform( D3DTRANSFORMSTATE_WORLD, face->matrix1); tool. d3ddev.SetTransform( D3DTRANSFORMSTATE_WORLD1, face->matrix2); While it will be possible to create content to match these restrictions, it won’t be vertex = (tVertex *)curBone->visuals[0].vertex; easy. Naturally, artists won’t enjoy being HRESULT hr = d3ddev.DrawPrimitive(D3DPT_TRIANGLELIST, FVF_VERTEX, vertex, 3, 0 ); limited in their methods of weighting, and } tools will need to be developed to handle the requirements.

to perform this kind of deformation without breaking the transformation pipeline. Now many people are against the But I Don’t Like Direct3D! idea of adding API features for specific effects such as this, but I see no other way to achieve the goal. If the transforma- nfortunately, at this time, there’s no way to achieve a tion could be handled as a specific DSP operation that was Usimilar functionality in OpenGL using transformation not tied directly to the display, it would be possible to have hardware. The OpenGL community needs to step up and simple accelerated matrix operations. However, this is not design an extension that will provide access to this hardware the direction the hardware development is heading. capability. I would prefer an extension that provides more function- ality with fewer restrictions. I imagine a vertex accumulation What’s Being Done About It? buffer similar to the compiled vertex arrays we have now. In this version, you set a transformation matrix and submit a icrosoft, while creating DirectX 7, realized that this series of vertices with associated weight values. These are M would be an issue. To solve the problem, they created multiplied, scaled, and accumulated. Once all the vertices the notion of “vertex blending.” In vertex blending, the have been processed, the entire mesh is drawn with this final position of a vertex can be determined by the weighted accumulated vertex array. transformation of up to four matrices. This system would have no restrictions on the number of You set up the matrices by creating a transformstate with matrices in the blend. It would also have the side benefit of the function: enabling many other interesting 3D effects such as morph- SetTransform( D3DTRANSFORMSTATE_WORLD, matrix1); ing. I am not sure if this kind of extension could work with SetTransform( D3DTRANSFORMSTATE_WORLD1, matrix2); hardware as it exists now but I hope to find out. I’ll keep you SetTransform( D3DTRANSFORMSTATE_WORLD2, matrix3); posted. SetTransform( D3DTRANSFORMSTATE_WORLD3, matrix4); By using the flexible vertex format, you submit weights in each vertex structure. The number of weights is one less What Are the Goodies? then the number of matrices being used. This is so that the API can enforce the constraint that the sum of the weights have provided a couple of demonstrations on the Game must equal 1. I Developer web site (http://www.gdmag.com). Both of For example, if I wanted each vertex to be weighted by them allow you to manipulate a hierarchical skeleton to two different bones, I would use code that looks something deform a 3D mesh. One was created using DirectX 7 and the like Listing 2. There are some problems with this approach, vertex blending function, the other was created using however. First, the API supports blending of between one OpenGL and implements the method I described above. Let and four matrices. This leads to a content creation issue. If me know how you think the algorithm can be improved. ■

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com by Jeff Lander GRAPHIC CONTENT

Over My Dead, Polygonal Body

mazing things have been created with computer graphics over the past several years. Visual effects companies are poised to tackle one of the most difficult challenges in computer-generated (CG) imaging: creating A a realistic CG human character. However, in my opinion, it hasn’t hap- pened yet, no matter how many times I think most people would be glad to again and we are starting to see this see life-like organic aliens and robotic continue to provide a living for their become a reality. 17 bipeds trotting all over the screen. family even after they have gone from One consumer graphics chip com- The trouble is, humans are tough to this life. I just think technology has pany, Nvidia, has publicly committed simulate, regardless of how long we forced us to reexamine that particular to delivery of hardware transforma- take to create the image. It may be ultimatum. Perhaps it is time for tion and lighting with their next gen- obvious, but the difficulty lies in the something like, “Over my dead body eration of graphics chips. There are fact that we are all very familiar with and virtually extinct telepresence.” rumblings that others are likely to how humans look. We see them all the Kind of loses that Wild West charm, deliver on this promise as well. In fact, time. In the morning, I see something doesn’t it? Microsoft is so certain that hardware resembling a human in the mirror T&L will be a reality in the consumer while I shave. Living as I do along the hardware market, they have included coast, I often see more of the human Bringing Them Back in Real Time support for it in the next version of form than is probably healthy both for the DirectX game programming API, my ego and my digestion. In everyday oncerns over these kinds of legal DirectX 7. Game developers who are life, we see all varieties of people per- C dilemmas are not going to stop scheduling projects for release in the forming every imaginable action. Each me from doing my job, however. As a next production cycle need to consid- of us is an expert in determining the creator of real-time 3D graphics, I not er how their projects will handle hard- believability of a CG human form. If only face the hurdles which confront ware T&L. the skin looks wrong or the motion my visual effects comrades, but I also looks stiff or the lip-synch is off, each need to make these realistic characters of us screams, “Fake!” move fast. Fortunately, in this task, How Do We Deal with HW T&L? But these technical and artistic technology is on my side. problems are solvable. The brilliant Realistic characters require lots of ortunately, the driver writers will artists and technicians charged with polygons to make them look realistic. F do most of the work for us. Games making us believe will make sure that Lots of polygons mean lots of vertices using the transformation and lighting it happens. I have thought a bit about being transformed by an overwhelmed pipeline in OpenGL will take immedi- the problems this will present, howev- CPU. At Siggraph 1998, I began to see ate advantage of the hardware if it’s er. I think about John Wayne. What if, the emergence of transformation available. Now, with the introduction while he was alive, he was asked to do acceleration in the consumer graphics of DirectX 7, games supporting this API a commercial for beer? Perhaps his hardware space (see “Taking a Break will also transparently benefit from the answer would have been, “Over my for Siggraph,” Graphic Content, new hardware. By using the built-in dead body!” That used to mean some- October 1998). At that time, I thought transformation pipeline in either API, thing, that there was no way you it wouldn’t be long before we would games will get faster. would ever get me to do something. A be able to take advantage of hardware This will naturally enable games to bit of stock video footage and some acceleration for transformation and increase polygon counts without sacri- clever video processing tricks and lighting (HW T&L) in our games. ficing performance. It also means that voilà — John Wayne’s dead body sell- Well, Siggraph has come and gone the load on the CPU will decrease, ing beer. Now don’t get me wrong. I see When not being frightened by the idea of virtual versions of himself, Jeff creates 3D nothing wrong with a family member graphics for Darwin 3D. Let him know he is just being paranoid by e-mailing him at licensing the likeness of a relative for [email protected]. commercial or charitable purposes. I http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER GRAPHIC CONTENT

FIGURE 1A. Modeling organic objects is a challenge for 3D FIGURE 1B. Skeletal deformation systems offer both flexi- programmers dealing with hardware T&L. bility and good looks. 18 allowing more processor time for game play features, such as Since we the graphics programmers can gain this benefit artificial intelligence and game physics. And, as to be expect- without doing any real work, hardware T&L doesn’t seem to ed, creating content that performs well on a variety of user affect us much. The programmer will need to conform to a system configurations will be more important than ever. standard pipeline. For the transformation, this doesn’t seem to be a big deal. Most 3D programmers are com- LISTING 1. Code for the World->RestBone matrix. fortable with matrix manipulation of vertices. The problem is pretty well solved and the only GLvoid COGLView::GetBaseSkeletonMat(t_Bone *rootBone) issue of trust revolves around the quality of the { driver implementation. Once the hardware is /// Local Variables /////////////////////////////////////////////////////////// doing the work, the driver issue largely goes int loop; away. Most will gladly accept this pathway to t_Bone *curBone; hardware nirvana. tMatrix tempMatrix; Lighting, however, is a much more con- /////////////////////////////////////////////////////////////////////////////// tentious issue. No one I have talked to is satis- curBone = rootBone->children; fied with the lighting model provided by the for (loop = 0; loop < rootBone->childCnt; loop++) OpenGL and DirectX libraries. This issue doesn’t { bug me that much. I don’t know anyone who is glPushMatrix(); ready to give up lighting tricks such as shadow maps and texture-mapped lighting for simplistic glTranslatef(curBone->b_trans.x, curBone->b_trans.y, curBone->b_trans.z); Gouraud lighting. While we do need a hardware solution for realistic lighting, this is not it. I // Set observer’s orientation and position advise continued reliance on those lighting glRotatef(curBone->b_rot.z, 0.0f, 0.0f, 1.0f); tricks. However, as a supplement to pre-comput- glRotatef(curBone->b_rot.y, 0.0f, 1.0f, 0.0f); ed lighting for dynamic changes or shadow glRotatef(curBone->b_rot.x, 1.0f, 0.0f, 0.0f); computation, a few hardware point and spot lights couldn’t hurt, particularly if they’re fast. I // Grab the Matrix that is built up to this point can think of a lot of things that a few lights glGetFloatv(GL_MODELVIEW_MATRIX,tempMatrix.m); could be used for. // Invert this matrix to get the Base->World matrix No, simple transformation and lighting is not InvertMatrix(tempMatrix.m,curBone->baseToWorldMat.m); the problem with hardware T&L. We run into the real trouble when we consider what it means // Recursive call if the bone has children for modeling organic objects. if (curBone->childCnt > 0) GetBaseSkeletonMat(curBone); T&L for Non-Rigid Bodies glPopMatrix(); ardware transformation is ideally suited to curBone++; Hthe display of rigid objects. You first set up } the transformation matrix and then submit an } object to be drawn. With hardware, it will be costly to obtain the results of the transformation

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com GRAPHIC CONTENT

before the object is drawn. This means everything needs to this virtually the same way. I go through the hierarchy and be set up beforehand. create a matrix for each bone that will take a vertex from the That’s fine for most objects and environments. However, origin and move it to the bone position in that animation characters do not look their best when composed of rigid frame. For this World->Bone matrix, I don’t need to invert it. objects. As I have explored in a previous article (“Skin I now have everything I need to take a rest vertex and Them Bones,” Graphic Content, May 1998), creating a move it to the final position. The procedure is as follows: character from a single mesh and then deforming it via a worldVertex = baseModelVertex * restBoneToWorldMat skeletal system provides a better solution. By using skeletal deformedVertex = worldVertex * worldToBoneMat deformation, you maintain the good looks of a seamless There is an easy optimization step, though. Because two mesh and the animation flexibility of a hierarchical char- matrices can be multiplied together to create a matrix that is acter system. a sum of both transformations, I can create one matrix that Unfortunately, this system requires manipulation of ver- will do everything: tex coordinates. Let me review how a skeletal deformation combinedMatrix = worldToBoneMat * restBoneToWorldMat technique works. I have a character in a rest pose in Figure Then for each vertex, I simply multiply it by that one 1a and have created a skeleton for the character in Figure 1b. matrix: In order to deform the mesh with the skeleton, I need to deformedVertex = worldVertex * combinedMatrix assign each vertex to a bone or set of bones. For example, all This is the key to skeletal deformation. If you want to have of the vertices in the head region should be assigned to the multiple bones influencing a vertex, this final formula can be head bone. For now, let me assume that the vertices in the scaled by the amount of influence, or weight, of each bone. 20 character’s head are completely, or 100 percent, assigned to The sum of all the weights for each vertex should equal 1. the head bone. I can determine the position and orientation of the head bone at the rest frame by creating a matrix that represents What’s the Problem? the transformation needed to move that bone from the ori- gin to its location in the hierarchy. The matrix of each bone his process requires each vertex to be transformed by a is dependent on the matrices of all of its parents, so it is nec- T matrix for every bone that influences it. Clearly, this essary to traverse the entire hierarchy to determine this process should benefit greatly by the use of hardware trans- World->RestBone matrix. formations. However, this really breaks the transformation Now this matrix will take a vertex and transform it to the pipeline. It’s obviously possible for a single polygon to have location of the bone. However, when I am taking the rest vertices that are influenced by multiple bones. Therefore, position of the character, I will need to know how to take a you cannot simply set the transformation matrix and draw vertex in the mesh and transform it back to the origin. a polygon as you would normally. An entire character is Fortunately, since we are using a matrix operation, this is a even more complicated. simple matter of inverting the World->RestBone matrix with a In order for this to work, I would need to do the matrix standard 4×4 matrix inversion routine. I now have a operations first, combine the resulting vertices into a single RestBone->World matrix. This only needs to be done once, so I polygon, and submit that to be drawn. However, the pipeline can store this matrix for later use. You can see the code for doesn’t allow this. Getting the results of a transformation is computing the RestBone->World matrix in Listing 1. not a fast process, as it requires values to be returned from I now have the matrix I need to move any vertex from the the driver through a mechanism such as feedback. rest position back to the origin. Now I want to move the ver- This is precisely why it’s crucial that this type of operation tex to its final pose as shown in Figures 2a and 2b. I can do be handled by the driver via the graphics API. It’s impossible

FIGURE 2A. Our matrix enables us to move the skeleton’s FIGURE 2B. Our finished model, the beneficiary of our vertices to our character’s final pose. transformation matrix.

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com GRAPHIC CONTENT

LISTING 2. Vertex blending, where each vertex is weighted by two bones. a particular card supports blending of only two matrices and your content was typedef struct tVertex designed for blending four, you will need { to clamp and scale the weights to work. float x, y, z; This is yet another restriction for content float weight; creators. D3DCOLOR color; Second, you set the matrices for each D3DCOLOR specular; primitive instead of each vertex. Each prim- float u; itive submitted to the rasterizer must be float v; composed of vertices that are blended } tVertex; among the same bones. This can be a prob- lem in certain regions, such as the shoulder #define FVF_VERTEX ( D3DFVF_XYZ | D3DFVF_XYZB1 | D3DFVF_DIFFUSE | \ or waist where it would be quite easy to D3DFVF_SPECULAR | D3DFVF_TEX1 ) have each vertex influenced by a different bone. for (int loop = 0; loop < curBone->visuals[0].faceCnt; loop++) Finally, to submit primitives efficiently { for rendering, the model will need to be tFace *face; sorted by matrix usage. This may mean face = &curBone->visuals[0].face[loop]; rearranging your dataset with a sophisticat- 22 // There are two Matrices stored for each vertex ed export utility or custom optimization d3ddev.SetTransform( D3DTRANSFORMSTATE_WORLD, face->matrix1); tool. d3ddev.SetTransform( D3DTRANSFORMSTATE_WORLD1, face->matrix2); While it will be possible to create content to match these restrictions, it won’t be vertex = (tVertex *)curBone->visuals[0].vertex; easy. Naturally, artists won’t enjoy being HRESULT hr = d3ddev.DrawPrimitive(D3DPT_TRIANGLELIST, FVF_VERTEX, vertex, 3, 0 ); limited in their methods of weighting, and } tools will need to be developed to handle the requirements.

to perform this kind of deformation without breaking the transformation pipeline. Now many people are against the But I Don’t Like Direct3D! idea of adding API features for specific effects such as this, but I see no other way to achieve the goal. If the transforma- nfortunately, at this time, there’s no way to achieve a tion could be handled as a specific DSP operation that was Usimilar functionality in OpenGL using transformation not tied directly to the display, it would be possible to have hardware. The OpenGL community needs to step up and simple accelerated matrix operations. However, this is not design an extension that will provide access to this hardware the direction the hardware development is heading. capability. I would prefer an extension that provides more function- ality with fewer restrictions. I imagine a vertex accumulation What’s Being Done About It? buffer similar to the compiled vertex arrays we have now. In this version, you set a transformation matrix and submit a icrosoft, while creating DirectX 7, realized that this series of vertices with associated weight values. These are M would be an issue. To solve the problem, they created multiplied, scaled, and accumulated. Once all the vertices the notion of “vertex blending.” In vertex blending, the have been processed, the entire mesh is drawn with this final position of a vertex can be determined by the weighted accumulated vertex array. transformation of up to four matrices. This system would have no restrictions on the number of You set up the matrices by creating a transformstate with matrices in the blend. It would also have the side benefit of the function: enabling many other interesting 3D effects such as morph- SetTransform( D3DTRANSFORMSTATE_WORLD, matrix1); ing. I am not sure if this kind of extension could work with SetTransform( D3DTRANSFORMSTATE_WORLD1, matrix2); hardware as it exists now but I hope to find out. I’ll keep you SetTransform( D3DTRANSFORMSTATE_WORLD2, matrix3); posted. SetTransform( D3DTRANSFORMSTATE_WORLD3, matrix4); By using the flexible vertex format, you submit weights in each vertex structure. The number of weights is one less What Are the Goodies? then the number of matrices being used. This is so that the API can enforce the constraint that the sum of the weights have provided a couple of demonstrations on the Game must equal 1. I Developer web site (http://www.gdmag.com). Both of For example, if I wanted each vertex to be weighted by them allow you to manipulate a hierarchical skeleton to two different bones, I would use code that looks something deform a 3D mesh. One was created using DirectX 7 and the like Listing 2. There are some problems with this approach, vertex blending function, the other was created using however. First, the API supports blending of between one OpenGL and implements the method I described above. Let and four matrices. This leads to a content creation issue. If me know how you think the algorithm can be improved. ■

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com by Paul Steed ARTIST’S VIEW

Staying in Shape: Low-Polygon Mesh Accommodation

uilding and animating high-resolution characters for use in rendered art such as print ads, game cinematics, or movie special effects is fun — the sky’s the limit. Your only possible concern in terms of total polygon B count is the unwieldy nature of large scenes and the length of render time because of the millions of faces The character in Figure 1, for exam- main types: skeletal animation and ver- you have to ray-trace. Then again, if ple, is actually composed of two charac- tex deformation. 25 you have a pimped-out machine even ters. The big ugly guy is the mount of the mental gymnastics of making sure the actual character (sitting on his your model complexity matches your back) and together they weigh in at Skeletal vs. Vertex Deformation in-view requirements becomes moot. around 3,500 faces. Of course, no other Even so, if your scene contains a dis- enemies can be present at the same time n simplest terms, skeletal animation tant character that is only 50 pixels this final boss is on-screen. Otherwise Iconsists of a mesh being deformed by high in your 720×486 render, chances the game would turn into a slide show. an underlying skeleton. The mesh itself are he doesn’t have to have 50,000-face Other factors that determine what and its subatomic components of ver- boots. High-resolution modeling and “low-polygon” actually means can be tex, edge, and face don’t contain any animating is a luxury. the core technology (or game engine) animation data. They are attached to When animating characters for real- used and level of detail. Level of detail the skeleton and are tweaked to certain time polygonal games such as QUAKE 3: is straightforward enough and consists tolerances as they are influenced by one ARENA or DRAKAN, “luxury” becomes a of adjusting mesh complexity based on or more bone. The bones are then ani- four-letter word, and optimization its proximity to the viewer. Right now mated instead of the mesh itself and the your mantra. More so than in rendered there are several programs, both stand- game uses that data to translate motion character animation, real-time, low- alone and plug-in, that will optimize into the character. Valve incorporated a polygon character animation requires a your models for you, increase the speed skeletal animation system into id Soft- lot more brain power and planning. of the game and basically give you ware’s QUAKE engine to allow them more polygons with which to build more fluid motion, less media storage your characters. As far as what kind of per character, and occasional higher- Low-Polygon Defined animation technology can drive your polygon creatures in last year’s critically characters, there are currently two acclaimed HALF-LIFE. ’ll begin with defining low-polygon The advantages of a skeletal anima- Ias a character weighing in at under tion system are numerous to say the 1,000 faces. Most of the characters I least: smoother animation sequences, typically work with have between 700 more realistic and diverse animations, and 900 faces — but without splitting 80-frame walk cycles, and so on. But in too many hairs, any model with four the end, the skeletal animation relies digits in its face-count just isn’t low- on keyframed (or motion-captured) polygon anymore. Then again, there data provided by the artist just like ver- are plenty of characters in games today tex deformation animations. Ironically, that are over 1,000 faces, but they’re most vertex deformation keyframe usually “boss” or unique characters meshes are derived from animations that are going to dominate a scene and created using a skeletal system of some FIGURE 1. These two characters allow for more polygon gluttony on sort (just not in the game engine). It’s won’t have any on-screen company. that character’s part. true vertex deformation animation lim-

Paul Steed is a form of computer game artist concentrate. Just add expensive imported beer, hard-to-find microbrewery swill or bot- tled water to yield a virtually endless supply of ideas, models, animations, and the occasional texture or three. Paul Steed can be found in the upcoming title, QUAKE 3: ARENA. For product information, contact [email protected].

http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER ARTIST’S VIEW

the game engine employs utilizing low- polygon models for characters, face- counts are still important for overall game speed. Even with a dynamic level-of-detail system and a higher polygon budget, not paying careful attention to the construction of your mesh is just asking for trouble when you go to animate it.

FIGURE 2. Players create true real- time animation in QUAKE 3: ARENA. Look at Those Lines

s you can see in Figure 3, this its itself by providing a locked pose A character has a certain amount of mesh that essentially becomes a key- curvature in its design that needs to be frame. It’s just as true that skeletal ani- conveyed and retained while going mation limits itself by taking a certain through a varied range of motions. FIGURE 3. Modeling this character’s amount of control away from the artist Once the model is attached to a skele- curves efficiently will be a challenge. 26 and forces him or her into the con- ton (in this case a biped using 3D straints of a narrow technological box. Studio Max 2.5 and Character Studio), Vertex interpolation, variable frame we can seek out any problems with her deforming well enough and the shape rate control, and a logically segmented mesh integrity as she animates. is holding up nicely. This particular body system via tag representation can Looking at the wireframe of the character carries a weapon of some sort make vertex deformation work nearly model, you can see I’ve tried to keep it all the time so, I’ve assigned a wire- as well as a full skeletal system and as clean and symmetrical as possible. frame material to it preventing it from leave a huge amount of control and By this I mean making every vertex, obscuring any mesh weirdness. extensibility in the hands of the artist. edge, and face a useful part of the Now let’s look at another animation Figure 2 shows id’s upcoming QUAKE 3: model. Keeping the model symmetri- sequence: her crouched walk cycle, ARENA, in which this technique for ani- cal in terms of gross polygon usage is shown in Figure 5. Immediately I see mating characters has yielded signifi- key. If it isn’t needed to delineate an some weirdness at her backside. Given cant animation enrichment. The biggest intentional shape, get rid of it. In the limited number of polygons, it’s benefit of a system like this is that when essence, the character gets its mass hard to get a decent FPB (face per butt) you move your mouse from side to side, through the shaping of its constituent ratio going, so some angularity is to be your character’s head, then torso, then parts. Of course, the trick is to impart expected. However, the settings in the lower body shift around accordingly. mass in fewer than 800 faces. animation tool that describe how much This generates small, ancillary motions So, after the model is attached to her influence a particular bone or joint has created by the player that never had to underlying skeleton, I begin animating over the geometry can be tweaked to be keyframed, and in essence become her. Figure 4 shows how the character overcome this. Sometimes, however, the true real-time animation. looks during her walk cycle. settings are right and the mesh itself Regardless of what animation system Not bad. The mesh seems to be needs to be tweaked.

FIGURE 4. The character’s walk cycle — so far, so good.

FIGURE 5. Her crouched walk cycle presents problems. FIGURE 6. Her inner thighs flatten as she crouches down.

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com ARTIST’S VIEW

FIGURE 7. Turning some of the edges alleviates the flat- FIGURE 8. Pointiness in back is an unwanted side effect of tening of the inner thigh. fixing the inner thigh problem. 28

Look a little closer at the mesh in lem. This character is supposed to be a purely for shaping reasons and deemed Figure 6. Notice we’ve hid everything sexy biker/monster-killer/femme fatale an important enough feature to have a but the legs and have gone to a flat- who can frag with best of them. relatively good FPB (not great, but not shaded, non-textured mode to get a bet- To begin correcting the problem, we too skimpy, either). The boots are great ter sense for the deformations of the need to look more closely at the legs since the texture is so detailed and cov- model. For me, smooth shading hinders (Figure 9). We take for granted the ver- ers up the low number of triangles my ability to get a feel for how the tex weighting and bone influences are there. Obviously the problem lies in model is shaping up and I always work correct, so the task at hand is to add the area from the mid-posterior to just in flat-shaded mode when not in wire- faces to the hip and leg areas to give above the knee. frame. In the case of this particular her fewer angles and more curves. But Figure 10 provides another look at the model, not only is it losing its rounded first, I’ll explain the reasoning behind leg done in cross-section to show what I shape when crouched, the inner thighs’ the current distribution of polygons. mean. Notice how the inner thigh lines edges are collapsing. Easy enough to fix Obviously, frugality is the key here. created by the configuration of faces — turning some edges will help the flat- I’ve tried to keep the cross-section of and edges cause some bad pinching and tening of the inner thigh, so let’s do just the leg at any given point down to no edge overlap. The two vertices at the top that, as I have done in Figure 7. more than a pentagon. The thighs were of the thigh can’t really move around Figure 8 shows how it looks better meant to be strong and healthy, and too much since they anchor the hips, with the edges turned, but what about the knees need extra segments for flex- and help keep the mass there. So again, those pointy cheeks? Houston, from ion. To the rear, a few extra faces were the conclusion stands that we need to this view, we definitely have a prob- put in relative to the rest of the legs put some more faces in the thighs. Thus, after much tweak- ing — adding more faces, experimentally turning edges to see what works best, playing around with the vertex weight- ing, and tweaking some more on top of that — I came up with the solu- tion shown in Figure 11. Compare the front view of the old and new version of the legs. As I went through the tweak- ing process, the most interesting change I had to make was the relative- FIGURE 9. Polygons have been care- FIGURE 10. Now we’ve isoated the problem: some ly minor adjustments to fully allocated throughout the legs. edges are overlapping and pinching at the inner thigh. the height of the vertices that form the hips (1).

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com ARTIST’S VIEW

the knee to support the muscular inner thigh I was trying to impart (4). Figure 12 shows a full comparison between the old leg (blue) and new leg (yellow). Overall, I had to add more geometry, but more importantly I had to make sure the edges were arranged to avoid inappropriate FIGURE 12. In the end, a little more geometry was collapsing. Again, added, with careful attention paid to arranging the edges. this takes time and experimentation more than anything else, but the fact mode makes finding concave edges rel- 30 FIGURE 11. A few small changes will that there is a limitation on the polygon atively easy, but very crucial. When make a big difference. count makes it more challenging than if reviewing and testing your models for I could have added unlimited faces. proper deformation, definitely seek out Referring to our cross-section in Figure those edges and turn them. Unwanted This wasn’t just a purely form-keeping 13, we can see the leg is more rounded dents and divots in your mesh break move to better use the extra polygons I and full. Now she can crouch walk in the illusion of mass very quickly and put in her backside, either. This height style and not get laughed at because her just plain make your model look bad. adjustment was key to making sure that behind is so pointy (Figure 14). I know attaching a mesh to a skeleton in the crouched position the segments and spending hours getting your vertex making up the curve of her cheek association just right is a difficult thing flexed and distributed themselves even- Rising to the Challenge to throw away. I cringe every time I real- ly enough to look rounded. Again, this ize I have to detach the mesh and tweak may be something particular to the way reating convincing, good-looking, it. Not only is reattaching it a pain, but Physique works in Character Studio, C low-polygon meshes is a challenge. reassigning UVs and getting the texture but I remember having the same issues Making sure these models animate well (if it’s already been done) to line up in Alias|Wavefront’s Power Animator. with their polygon budgets requires makes for hair loss and lack of sleep. Moving on, also note that when I first quite a bit of thought. If I had to come However, if you have to perform mas- built the leg, I simply over-optimized up with an overriding rule of thumb sive reconstructive surgery on a part of a the thigh and compromised its mass by when it comes to ensuring your mesh model that isn’t quite working out to not having a full segment midway up will accommodate your animations, I’d make it better than it currently (2). I also had to increase the cross-sec- say it’s a matter of convexity. When I is...tough. Unless you’re going gold the tion circumference to retain mass when tweaked the character’s leg to make it next day, never settle for what the com- the character crouches (3). Next, I had retain its mass, my goal was to find puter will give you — only settle for to insert a partial segment just above edges that were being torqued in such a exactly what you want. It’s what sepa- way that the illusion of mass was being rates the men from the boys and the taken away. women from the girls. ■ I turned the edges to go from a con- cave to a convex look, but in the case Where’s Mel? Now that DRAKAN has shipped, Mel of the upper thigh, I had to insert addi- Guymon is taking a few months off to tional geometry to support its shape. recover. He will return in January 2000. Viewing your model in flat-shaded

FIGURE 13. After the changes, the thigh is rounder and fuller. FIGURE 14. At last, our character can crouch with confidence.

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com by Omid Rahmat HARD TARGETS

Interplay OEM: Little Bundles of Joy

ecently, Mattel Media announced that it was teaming up with Patriot Computers to launch Barbie- and Hot Wheels-branded PCs for children. These lunchbox PCs (my term, not the manufacturers’) would cost R around $599, and include a library of education and entertainment soft- ware from Mattel Media and its recent acquisition, The Learning Company. No prizes for 33 guessing which computer would have the girl software, and which the boy software.

Obviously, bundling software with of the major publishers that has set its that the OEM sales channel is a major hardware is a symbiotic process that OEM business as a separate subsidiary. revenue contributor. should benefit both the software and Interplay OEM should stand alone; Goldworn says, “OEM sales are for hardware partner, but it’s also a special- the company counts among its cus- pure revenue purposes and, also ist sales channel that needs to be tomers LucasArts, Take Two Interac- important, getting access to cutting approached with care. tive, Fox Interactive, Westwood edge technology early. It’s the same as Studios, Virgin Interactive Entertain- in the console market — if a developer ment, and Gathering of Developers. gets a hold of the next-generation Everyone a Microsoft It’s the model of how OEM sales technology early enough, it is posi- should be built into a game publish- tioned to take advantage of the con- he greatest bundling machine in ing business. sole at launch. We’ll actually put in T the computer business is Micro- Additionally, Interplay OEM also support for some technologies before soft. Not only does the company have handles licensing and merchandising the traditional retail channel estab- its operating system bundled with activities on behalf of Interplay and lishes a need for it — for example, every PC sold, but you can almost Shiny Entertainment, including nov- DVD. We’ve been developing DVD guarantee that there are other Micro- elizations, strategy guides, and other titles for a number of months. So, soft goodies on your hard drive, and merchandise tied to Interplay’s game we’ve actually developed DVD titles even the odd interactive media prod- properties. There are also arrange- for OEM, which retail will take to the uct. In very simple terms, Microsoft ments for royalty-based revenues from market later.” makes the software that sells the hard- licensing arrangements and the sale of The benefit of marrying the revenue ware, and in return, the hardware products by third-party distributors in potential of OEM sales to the techno- vendors have had little desire to go international markets. logical advantage it can give a develop- anywhere else for software. Fortunate- er isn’t lost on companies such as ly, Microsoft has also driven PC tech- France’s Ubi Soft, and Rage Software, nologies by supporting features in its Bundling for Profit based in the U.K. Ubi Soft’s TONIC operating systems that have made it TROUBLE, and previously, POD, have possible for hardware innovations to ill S. Goldworn has served as presi- achieved unit shipments in excess of flourish. J dent of Interplay since December one million by piggybacking behind Game developers may not be able to 1996, and has handled OEM contracts the Pentium II and Pentium III launch- offer the same breadth of opportuni- for the last ten years. Unlike some es. POD was probably the standard- ties as Microsoft does with Windows, game developers and publishers that bearer for MMX-enhanced games, and but they do hold a key, which can view OEM sales as part promotional while it may have done well in OEM unlock higher-end technologies such tool and part incremental revenue channels, there never was any retail as 3D graphics and surround sound stream, Goldworn has a strong belief MMX market to speak of. In 3D, Rage’s audio, and they also help Intel and AMD sell ever-greater performing Omid Rahmat is the proprietor of Doodah Marketing, a digital media consulting firm. CPUs. Leading the charge in entertain- He also publishes research and market analysis notes on his web site at ment software OEM deals is Interplay http://www.smokezine.com. He can be reached via e-mail at [email protected]. OEM. In fact, Interplay is the only one http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER HARD TARGETS

Total revenue in thousands of dollars % of Change 0 10 20 30 40 50 60 70 80 90 100 120 130 1997 - 1998

25% N. America Int'l OEM* 20% $73,865 $35,793 $17,204 23%

1998 15% 58% 28% 14%

15% 10% Net Revenue $ 126,862 100% 5% 6% 0% N. America Int'l OEM* -5% $64,106 $41,922 $14,025 -10% 1997 53% 35% 12% -15% -15%

Net Revenue $ 120,053 100% -20%

Net Revenue Int’l N. America

* OEM, royalty, & licensing OEM*

CHART 1. Interplay OEM’s performance relative to overall revenue achievements, in thousands of dollars and percentage 34 points. Interplay OEM also provides licensing and merchandising deals, but it can be safely assumed that the bulk of its sales are from straightforward bundling deals (source: Interplay).

INCOMING has been among the best 3dfx, Nvidia, Diamond, Creative, ATI, developers should plan for OEM in selling OEM titles in recent years, and Matrox have all courted develop- much the same way as they plan for probably constituting a third of Rage’s ers with technology, free hardware, any title. total revenues. Now, the company’s and sometimes, cold, hard cash, in follow up, EXPENDABLE, is following in order to get a game or games ready for its footsteps, and looks as if it too will a new product launch. It also helps An OEM Strategy come out equally strong in Pentium III when a company such as Intel recom- lineups in 1999. mends the cutting edge titles it favors ith the development hiccups of Goldworn herself has evangelized to its PC OEMs. It’s a win-win situa- W OEM opportunities having the OEM channel to the game indus- tion for all parties, but developers been overcome, there are still numer- try drawing other publishers into the have to be aware of the problems of ous ways in which a company can get a Interplay OEM fold. “Our whole jumping on the cutting edge of tech- title bundled with hardware: model is to educate publishers about nology, too. STRAIGHT: The straight bundling deal technologies that will eventually Working with new technologies requires the developer or publisher to become a revenue stream for them,” often means that a game title has to deliver a CD for inclusion by the hard- she says. be modified for it, in addition to ware vendor with its products. The LucasArts used to think of OEM sales being maintained for the existing deal is often subject to a certain mini- as a small contributor to its revenues, installed base. Everything from code mum quantity, or staggered so that and not worth focusing on. However, to art work has to be refreshed in different discounts apply as the ven- after five years of working with Inter- some cases, and the results could be dor ships increasing numbers of the play’s OEM team, the company is now slippage in shipment times, or even bundled software. The straight bundle putting an OEM SKU on its release lost development time if things don’t deal is probably the easiest to track schedule. Whereas in the past go according to plan. In other words, because finished goods are being LucasArts would take months to build the risks of working with any new shipped, and revenue generated an OEM version of a title, it now has technology don’t go away when an directly thereafter. However, while an OEM support and development OEM is involved, regardless of the straight bundling deals are great if you structure in place almost simultaneous- financial carrot being dangled. are in the position of an Interplay ly releasing retail and OEM SKUs. For Delays in shipment of a title, or the OEM, and have a strong catalog of companies such as LucasArts, it makes expectation that an OEM release will titles to offer, a smaller developer will good business sense to be in OEM, but translate into a big retail launch, are often find them more difficult to it is also valuable strategically. The often the two biggest problems devel- come by. Still, there is always room in developer gets early access to technolo- opers face. If a developer is tied into an the OEM market for a title that defines gies, and the title gets automatic expo- OEM release in order to get a launch a new technology and gets consumer sure in the hardware vendors’ market- for a new title, any delay can have seri- recognition of it. ing and sales promotions. ous repercussions. Even a successful TARGETED: A developer or publisher may Of course, the hardware technolo- OEM product doesn’t guarantee a simi- choose to target a particular 3D graph- gists need game developers more than lar impact in the retail channel. Ubi ics chipset, or CPU product. Ubi Soft is they’d care to mention. Intel, AMD, Soft’s POD proves this. Therefore, doing it with Matrox, and Interplay

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com OEM has done it with 3dfx in the before. The results for game compa- software is preloaded on the hard past. In effect, the modified OEM title nies have been poor, with response drive, and the cost of reproducing a will only work on the hardware ven- rates being equivalent to a direct mail number of bundled software CDs is dor’s particular product. For example, campaign, in the region of one or two saved. the title might work with 3dfx’s percent. So it works for AOL disks, but As for the revenues, bundled titles Voodoo 3, but not Voodoo 2. It’s not for games. Still, many hardware can fetch anywhere from as little as almost an ideal bundle arrangement vendors are looking at ways of creat- 35¢ to as much as $14 per title. The because the hardware vendor gets to ing bundling arrangements that will minimum quantities required to qual- launch big on a product and use a spe- allow them to get a slice of the retail ify for a bundle deal varies. I have cific title for its platform, while a sale of a title. The most obvious possi- seen deals done for 12,000 unit com- developer gets the benefit of the expo- bilities are going to be on the Internet. mitments on some high-end peripher- sure the hardware brings, but can still As more hardware companies develop als, to multi-million-unit commit- look forward to exploiting opportuni- their direct sales on the web, they are ments on some CPU products. For ties in other areas of the market and looking for ways to leverage their most of the major publishers, once a on other hardware platforms. Intel, products off of software and content. product’s revenues fall under $1 per AMD, and any number of 3D graphics In many cases, selling a package of unit, the OEM sales lose almost all and audio guys have a vested interest goods, such as a graphics board and a their appeal. Publishers will change in getting a unique experience for handful of titles, is better than trying pricing depending on the age of the their products. to sell the individual components of product, or the hardware vendor they ENCRYPTED: Some vendors have attempt- the deal separately. are dealing with. Whatever the price 35 ed — with little success thus far — to LIMITED: With some popular titles, limit- or the unit commitment, new tech- ship encrypted, time-locked versions ed versions, or versions containing spe- nologies such as faster CPUs and faster of their titles with a hardware prod- cific levels but not the full retail com- 3D graphics need games to turn con- uct, hoping to get the benefit of the plement, are used in OEM bundles. sumers on to them. It’s also worth full sell when a user buys the product- LICENSED: Many vendors are moving to knowing that these new hardware unlock key. This is more of a market- a model whereby they license content, technologies are more profitable for ing strategy, and less of a bundling therefore not requiring any finished the vendors, thus leaving room for an arrangement, but it is something that goods from the developer. As is the aggressive OEM sales company like has been tried in the OEM market case with most PC OEMs, bundled Interplay OEM. ■

http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER How to work with a third-party sound designer

BY AARON MARKS 36

ound effects are an integral part of games, equal in importance to

artwork, music, and game play. And I’m not just saying that because I

create them either — I’m also a game player, so I understand their

impact from that perspective, too. Sounds are designed to absorb

the player into the game world, to make it believable, entertaining, and satisfying.

The process of determining the appropriate sounds for a given game situation, creating

them, and implementing them in the game isn’t always a painless experience. Both

sound designers and game producers need to understand each other’s professional needs

and responsibilities so that the sound design process becomes less grueling to both par-

ties. This article describes the process of determining what you will need from a third-

party sound designer, what that person will need from you, and will briefly describe the

process audio contractors go through to create high-quality sound effects.

Aaron Marks ([email protected]) is a sound designer, music composer, and owner of On Your Mark Music Productions. Look for more of his life story at: http://members.aol.com/aBmajor. illustration by Stuart Bradford

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com

GAME AUDIO

Where Does It All Start? details, however — starting the cre- When the time does come to start ation of game sound effects too early looking at bids, the producer alone, or oey Kuras, sound designer for in the process often leads to major with several of the team members, sits J Tommy Tallarico Studios, has per- headaches down the line, as I’ll down to evaluate submissions. Gener- sonal credits on more than 60 games, explain later. ally, they are looking for outstanding and he recently worked on the James Usually, when a game is far enough work, creativity, a shared vision, relia- Bond game, TOMORROW NEVER DIES. along (at the point when characters, bility, experience, and someone with Early in the production cycle, he was movements, and a defined game play whom they feel they can work for the given a list of effects needed for the model are present), the sound designer length of the project. After the field title. He designed and delivered more should enter the picture. By permitting has been narrowed to a couple of than 200 sounds per the developer’s sound designers to meet with the devel- choices, pick up the phone or invite request, only to have approximately 90 opment team, view some rough game them over. It’s a good idea to talk to percent of them discarded as the pro- levels, and perhaps see some animation the candidates either by phone or in duction matured. He ended up recreat- ideas, their idea machine can begin to person before any final decisions are ing them later in the project. On churn out possible routes to take. made. Check their production sched- another project, he received an unspe- Also, asking a few ules to ensure they will be available cific and vague list of sounds. The (some busier sound people are booked request for a “splash” sound had little two to three months in advance), see meaning to him. Was it a rock making which one you feel is best at commu- 38 the splash? A person? A 400-pound nicating and receiving ideas, and get a object or a four-pound object? Was the sense of whom you can get along body of water a bathtub, a pond, or an with. ocean? No one he talked to was sure Moving on from the courtship stage and they ended up waiting far into the toward project commitment necessi- project to solve the mystery. tates that both parties bring their This is a lesson for all of us. Early interests (and sometimes lawyers) to concepts of art and game play have a the table and work out an agreement tendency to change and continuously both sides feel comfortable with. evolve, so sound design at the outset of Typically, though, negotiations for a project is usually a grand waste of sound design work are fairly simple. time. Producers have the difficult task More complicated negotiations come of trying to determine the audio needs up when music creation is also part of of the game early in the development specific ques- the deal, because that can also involve cycle, and if a contracted sound design- tions will bring a direction and neces- hashing out ancillary rights, payment er is used, the producer must find one sary information together to get off to a for different SKUs, bonuses, property whose skills and credits match those of smart start. rights for soundtrack releases, and so the game being developed and negoti- on. Spend a little time working out an ate the contract with that individual. equitable agreement and get the When you are spending up to $30,000 Contracting Out the Work business out of the way so you can for sound effects, you want to get your focus on the creative aspects of great money’s worth. he actual task of finding a third- development. The producer may have to take a T party contractor can be as arduous Prices for sound design services vary long-range look at what sorts of as creating the game itself. Unless per contractor, as each contractor has sounds the game may need (general you’ve worked with a particular sound different overhead costs to meet. Those Foley sounds, imaginative or “far out” designer in the past and you’re com- with more experience can, of course, sounds, and so on). If the game is to fortable using him or her again, you’ll demand more, and their experience is have a wide range of settings and need to take care of some advance usually worth the price. Rush jobs, spe- characters, it can be difficult to imag- work. Even before the project is put cial requests, and other tasks assigned ine what this large bank of effects will out for bid, a media buyer (often the to the sound designer (such as audi- consist of. Therefore, it’s important to producer’s role) can do homework. tioning, hiring, and producing voice bring the development team together Investigate various sound design talent and their sessions, abnormal to begin thinking conceptually about companies beforehand to stay ahead amounts of revisions or change orders, the game audio as early as possible. If of the game. Web search engines can and so on) can increase the price, too, you’ve decided on a sound profession- help, developer resource web sites are so try to plan ahead. The bottom line is al, bring him or her in on the discus- prevalent, and the numerous unsolicit- that costs are definitely negotiable, but sion and listen to what the sound ed e-mails, inquiries, and résumés can don’t expect the contractor to work for designer’s experience has to say. A lot (finally) be taken advantage of. free or below their expenses. For more of time can be saved this way and the Request a sound designer’s current information about payments and con- process will have more grease for a demo reel, references, and examples tracts for sound design, see the sidebar smooth ride. Don’t be tempted to of past work, and keep this data on on p. 44, “The Audio Development jump into the audio implementation file. Agreement.”

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com GAME AUDIO

Questions Sound Designers Ask ARE ANY AMBIENT SOUNDS NEEDED? You into digital files, maximize the sound, probably don’t want to distract the cut them to length, and add any addi- round the time a producer is trying player with silence. If the game will use tional background or Foley sounds. If A to wrap up contract negotiations background music, tell the sound narratives are to be recorded, sound with a sound designer is when the designer — designers won’t know this designers need to know if they have to sound designer is going to want to fact unless they are also the composer. provide the voice talent so they can know the nitty-gritty details about the This question may jog a producer’s budget accordingly. A good question to project. This is the point at which “clear memory and alert the team to the fact ask prospective sound designers is and concise” can mean the difference that more than just event-driven noises whether they have any experience between complete audio bliss and a are needed. directing narrative sessions, and if not, sound disaster. A good sound designer WILL CERTAIN EFFECTS HAVE PRIORITY DURING make it clear that the producer will fill will want specific information about the PLAYBACK? There can be instances during that role. game. As the producer or team leader, a game (a player unlocks a hidden door, ARE THERE ANY SPECIAL SOUND CONSIDERA- be prepared to answer the following stumbles into a trap, or is attacked by a TIONS? Is the game intended to be an questions clearly and concisely: villain) when a single sound punctuates audio trend setter, and use technologies FOR WHAT PLATFORM IS THE GAME INTENDED? the moment. All other sounds become such as Dolby Surround Sound or DTS? This will suggest what type of playback irrelevant and this one sound takes pri- Are you planning to advertise the game system the consumer will use and the ority. These are the ones you want to as having “cinema quality” sound? confines the final sound effects will rest have the biggest bang for Knowing this ahead of time could be an 40 within. As a sound guy, I mix to several the buck. Since important safety tip for the sound playback systems — from “el cheapo” other designer’s longevity in the business. multimedia speakers you buy at the WHAT TYPE OF MUSIC, IF ANY, WILL PLAY AS THE grocery store to high-end studio moni- SOUNDS ARE TRIGGERED? This would give tors. My interest is to make my sounds the sound designer an indication of work well with them all, but my main what other sonic activity will be hap- focus is on the system the majority of pening during the game. If the music people will be using. will be a soft orchestral score, you FOR WHAT GENRE IS THE GAME INTENDED? You might want the sound effects geared to want the music and sound effects to that mood, and not sound too obtru- follow the spirit of the game, so make sive. If a rock soundtrack will be played, sure you communicate this to your then harsher sounds and careful manip- sound designer, including the feel of ulation of an effect’s higher and lower the game, what genre it falls into, and frequencies will ensure these stand out. what similar games are currently on The sounds should all work together to the market. sounds enhance game play, not aggressively WHAT SAMPLE RATE, BIT SIZE, AND FILE FORMAT won’t be drown- compete with one another. ARE PREFERRED? Should the audio be in ing them out or playing ARE ANY SOUND RESOURCES AVAILABLE TO THE stereo or mono? The development team over them, you won’t have to SOUND DESIGNER FOR LICENSED MATERIALS? should have done all of its homework to consider whether other effects can be ALIEN VS. PREDATOR, STAR TREK, and determine how much space the graphics heard at the same time. It’s critical to SOUTH PARK, for example, are games and sound will be allotted. This infor- get this type of sound perfectly, and by based on film or television properties mation will help decide the sound qual- alerting sound designers to these that were produced under licensing ity level and within what parameters effects, they’ll know which ones to pull agreements. If the publisher or devel- the sounds should be created. out the stops for. oper has secured use of the actual WILL SOUND EFFECTS BE ALTERED BY ANY SOFT- WILL THERE BE ANY VOICE-OVERS OR SPEECH sounds from these works, sound WARE OR HARDWARE PROCESSORS? Addition- COMMANDS THAT NEED TO BE HEARD? Similar designers need to know if they have it al processing by a game engine will to the way vocals must stand out in a at their disposal to manipulate for the determine to what extent certain song mix, any vocals in a game must be game, or if they are expected to recre- sounds are processed beforehand by heard easily by players. A sound design- ate it themselves. While your sound the sound designer (if a sound designer er can be involved with processing designers may not have an actual hand applies reverb to a sound that the speech via an equalizer or the volume in creating them originally, they are developer had planned to apply reverb controls to ensure they can be heard equipped to convert them to the prop- to in the game, that could be a prob- and understood over the other effects. er formats and sample rates and need lem). For example, driving games often ARE ANY NARRATIVES NEEDED? Will there be to know, for planning purposes, if this apply a reverb effect to sounds. This is background sounds to accompany nar- service is desired, too. the kind of information the sound ration? Narratives fit into the sound ARE ANY SPECIAL FILE NAMING CONVENTIONS designer needs to know at the outset. recording category, and generally any- REQUIRED FOR FINAL DELIVERY OF SOUNDS? If Decide as soon as possible if there are one capable of sound design can also the development team is overly orga- plans for this type of processing and record narration. If you already have nized, or if they waited until late in communicate them, so that the sound narratives recorded, the sound designer production to bring a sound designer designer doesn’t overprocess any files. can usually transfer these recordings on board, they may already have file

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com GAME AUDIO

Getting to Work game available, send those, too. There are several ways to convey nce the sound design contractor sound effect needs to the sound design- O has been hired, the previous ques- er. You could create a sound list that tions have been answered, and the describes each sound, what it will be appropriate nondisclosure agreements used for in the game, and the requested have been signed, one or two people sound duration. This is really just a wish on the development team should be list, because often the entire list isn’t assigned as liaisons to the sound completed for the game — changes in designer, who are responsible for com- the game see to that. municating the project specs and sign- A producer can also indicate where ing off on work. This ensures clear and sounds are needed by giving an alpha effective communication, which is the version of the game to the contractor key to obtaining sounds that match the that uses place-holder sound effects team’s vision. (general effects-library sounds or names pro- If you’re using a local contractor, effects taken from other games). Place- grammed into the code. have them stop by, meet the rest of the holders can, of course, simply be spo- While renaming files is not a big deal, creation team, and discuss the game. If ken words created by someone on the it may help cut down on any confusion the sound designer is unavailable, send team — for a game I’m currently 42 when delivery is made if they are copies of artwork, storyboards, and working on, the producer inserted already appropriately named. The any story text already written. If there audio files of himself saying words developer should make this need clear are any rough animations, movie pro- such as “click,” “bonk,” “explode,” or or define an acceptable method. mos, or even an early version of the “shot” that are triggered by the appro- priate game event. As I play the game, every time I hear his voice, I create a sound to match the action. A Sound Is Born With the preliminary action accom- plished, the sound designer has a solid ere’s an example of how one charge” feel), ran it through a 1Hz stereo idea of what the game is looking for simple sound effect is creat- flange effect, and equalized it to increase and sets out to get things organized on ed. The project I’m currently the high frequency range. I then cut that his or her end. Jamey Scott, sound Hworking on is a space strate- file to four seconds to match the manipu- designer and composer for Presto gy game, in which units are maneuvered lated keyboard sound and mixed the two Studios (developers of THE JOURNEYMAN in formation to battle against other play- sounds, keeping the static barely percep- PROJECT series, GUNDAM 0078, and oth- ers. It is a PC game with final sounds to tible. I gave the new mixed file a one-sec- ers) believes putting together the initial be delivered as 22KHz, 16-bit .WAV files. ond fade-in, and faded out the last two palette — finding sounds that will mix I’m creating a sound which is triggered seconds with a linear fade. Now it was well together — is the most important when a shielded unit is fired upon. beginning to sound like something. I nor- step. He uses the E-Mu Emulator 4 sam- The shield sound should have an malized the file to maximize the sound, pler in his sound design process, and “electric” quality to it — a controlled adjusted for any abnormal level peaks for each game he develops an entirely surge of energy that might sound as if it and finally saved the new file as new sound palette to keep them origi- were deflecting a shot from a laser SHIELD.WAV. nal. Scott feels that using a sampler has weapon. I wanted it to sound unique, so I Later, the producer wanted a dull, advantages over straight computer files stayed away from stock library effects metallic clank mixed in to give the player and sound editors. “Layering sounds and used one of my synthesizers for ini- some distinction between a shield hit and internally in the E4 works very well for tial inspiration. a hit to the unit’s space suit. I pulled up a me,” he says, “more so than doing it I ultimately settled on a patch, similar nice clank sound, used the equalizer to on a computer. That way, I can save to the keyboard sound in the Van Halen get rid of most of the high frequencies, my banks as a palette rather than hav- song “Jump,” and recorded four seconds and mixed to the shield file. All was well; ing sources in various folders all over of a three-note chord. I saved it into my the producer was happy. the computer. They are all looped, audio editing program, Sonic Foundry’s Converting down to 22KHz is simple. equalized, and noise filtered all to my Sound Forge, as a 44.1KHz, 16-bit stereo Utilizing the resample feature in my specifications. Plus, returning to them file. Experimenting with a few different audio editor does the trick nicely. to make any changes is a simpler task.” effects processors, I found a nice Doppler Because some of the higher frequencies effect in another program, GoldWave. I get lost in the conversion, I usually edited an existing patch to give it a quick adjust the equalization to compensate. Soapbox Time one-second Doppler increase with three After another check on the levels, the seconds of Doppler decrease. Back in effect is ready for the game. Total time roducers and developers who Sound Forge, I pulled up a radio static spent creating this one sound effect: two P know absolutely nothing about sound file (which gives it that “electric hours, 15 minutes. sound design tend to place undue demands on the sound designer, or sim-

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com ply ask for the impossible. It is tremen- sounds, it may already be too late for sound effect is for. This key will save dously frustrating to negotiate and work the sound designer. Attempting to con- some headaches for everyone involved with those who don’t have at least a vert up almost always adds unaccept- and score some points for the orga- basic concept of what goes into our able noise to a recording — you just nized sound designer. process. One original sound can take can’t do it. You usually have to start more than two hours to create — we’re the whole recording process again from not just taking clips from an effects scratch. Avoiding Production Nightmares library disc and converting it to the Not too long ago, one game compa- needed format. (To get an idea of the ny decided to create a television com- here are plenty of ways that things sound creation process, see the sidebar mercial for its game and intended to T can get screwed up when working “A Sound is Born.”) An entire game can use the original effects from the game. with a third-party sound designer. For be done in two weeks — with much They contacted the sound designer example, the producer may not choose pressure on the sound designer — but it who worked on the project and the proper adjectives to describe the can take a month or two just as easily. requested their sounds in a CD-quality game and, in turn, the description may format. Unfortunately, he didn’t have not mean the same thing to the sound them at that sample rate and proceed- designer. Or, the production could go Ensuring the Best Audio Results ed to spend a few sleepless nights recre- through dozens of design changes, ating them. It would have been just a causing the sound designer to lose hen a sound designer devotes few minutes of work had they already interest and quit. The list of potential W his or her time exclusively to been available. problems is endless. We’ve all had our 43 your game for the duration of the pro- own experiences which we’d rather for- ject, it helps ensure consistent game get, but it’s important to learn from audio. Ask prospective sound designers Presenting the Final Work them, if for no other reason than to up front whether they will commit prevent history from repeating itself. solely to your project. The second con- elivering the final sound effects to Here are some true horror stories from cern to address with your sound design- D a client is not usually just a mat- the trenches. er is that of quality assurance. All of the ter of sending a CD or e-mailing the Mark Temple, owner and executive sound designers and many of the pro- sounds and saying, “Here they are!” producer of Enemy Technology, has ducers I’ve talked to insist that the When presenting finished effects to many games to his individual credit sound designer listen to the sounds in producers, some sound designers and he’s currently at work on his com- the actual game. Typically, this hap- (myself included) send more sounds pany’s first game. One of his biggest pens around the time the game goes than were actually requested by the pet peeves is trying to work with sound into beta. It’s not uncommon for effects client. I work up several effects, let the designers who are not computer liter- to sound great in the studio but not so producer in on the process, and give ate. Yes, believe it or not, there are still hot (too loud, soft, long, or short) once clients the chance to choose the effect people out there who don’t know they’re synchronized with the action in that matches their vision. Some have much beyond their immediate sound the game. While analyzing the audio in subtle differences, changes in length, applications. He has made several treks the beta version of a game he was work- layering, or effects processor settings. during hectic schedules to visit a sound ing on, Joey Kuras discovered a pro- Other sounds are completely different designer just to get a copy of a game grammer on the project had taken one but still evoke a similar emotion or running. He’s also had to instruct them of the effects — the sound of footsteps idea. This procedure actually serves how to zip and unzip files, attach — and bumped up the volume. What dual purposes: it gives the producer sound files to e-mail, or use a modem were intended to be subtle, barely dis- radical ideas that just might work, or it to connect to the company BBS. So cernable Foley effects turned into a makes other effects stand out and now when hiring people, he makes it a loud series of crunches. Thankfully, sound that much better. point to ensure first that they know Joey’s screening session caught the Occasionally included, if it isn’t their way around a computer. problem and corrected it in time. already obvious by the file names, Another time, Mark’s sound designer Specify to your sound designer that is some sort of documenta- left a project in the middle of the con- you want your sound effects created in tion that describes tract, with half of the milestones com- the highest quality possible (which what each pleted and half of the sound effects today is usually 44.1KHz, 16-bit stereo). budget. A new sound artist was quickly Because new technology is now becom- brought in, but the effects had a differ- ing more mainstream, some develop- ent quality and it became difficult to ment teams may soon opt to go even match his sounds to the previous work. higher to 96KHz, 24-bit audio. Why? Reluctantly, they opted to start from Because you want to develop the scratch, which forced them to spend sounds in the highest fidelity then con- more than they had budgeted and also vert down to what is needed for the broke their schedule. People leave in game. If a game needs 22KHz, 16-bit the middle of projects all the time for stereo sounds and it is later discovered various reasons, and there are as many it can fit in 44.1KHz, 16-bit stereo different ways to prevent this as there http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER GAME AUDIO

are reasons to leave. But honest com- munication and understanding of the creative processes helps. Contract The Audio Development Agreement points, which give the proper incentive (such as increasing milestone pay- ments over the course of a project, ommy Tallarico is making life This contract, available for download with the largest payment for the com- easier for both producers and from the Game Developer web site pletion of all work) are another option, sound designers by trying to (http://www.gdmag.com), is a revised but overly aggressive contracts that T standardize sound contracts copy that pertains to the sound designer withhold too much money until the and the often unpredictable contract and the created effects. Many points can end can spoil things, too. Try to find negotiation process. With more than be added or taken out as needed during the right balance. 125 games to his credit, he has plenty negotiations, since both parties are A potential contract sound designer, of experience in this phase of deal- attempting to have their best interests whose work is outstanding, wanted to making and after paying lawyers large represented. Whether you’re a producer work on a particular game, but didn’t sums of money to draw up the paperwork, or a sound designer, I recommend you have the right equipment for the partic- he’s still willing to share. At the 1999 download this file and read it over closely ular project, nor the money to buy it. Game Developers Conference, he so that you get a sense for what the top And because the development team gladly handed out copies of the agree- talent in the field is asking for. Tallarico didn’t have the resources to help him ment to anyone interested. Hundreds has granted everyone permission to use it 44 with this purchase, he didn’t get the of people took advantage of his as is, or merely as a guideline for sound job. If you find yourself in this position, generosity. design deals. talk about the situation with the prospective sound designer and see if you can come up with a creative solu- wards. While his “shortcut” wasn’t ent are all looking to you for the prop- tion before you pass up the deal. Devel- recognizable to the average listener, er motivation and, though the sound opers have been known to loan or buy someone with audio editing software designers are not immediately within equipment for the contractor, depend- could reverse it and a lawsuit could the corporate view, they respond to ing heavily on how badly the contrac- develop, something this small develop- the same proper, positive stimulus. tor is needed and the cash flow of the er couldn’t afford to have happen. I The key points mentioned here, developer. was able to step in late in the game and when focused on, can help you achieve The idea of “one-stop shopping” for secure a few points, landing the con- fantastic work from a sound design a sound designer who can also com- tract for their next two games. contractor. Even though there are no pose and produce music is appealing. hard and fast rules, secret formulas, or It’s an opportunity to hire one fewer prescribed methods for creating the person, saving time and money. How- Managing Outside Talent Shouldn’t consummate assemblage of game ever, when Mark began his search for Be a Mystery sound effects, it can happen. It takes just such a person, he found few avail- fluid communication and a firm vision able. What may have helped this situa- t some companies, there tends to from the development team coupled tion would have been to have the pro- A be a stigma attached to third- with a sound designer who shows no ducer looking in the right places (no party contractors. To some, it seems a bounds to their creativity and patience. offense, Mark). If they had done any highly unnatural act to search beyond Together we can take on the gaming previous research, they could have had the company walls after you’ve spent a world and keep them lining up at the a list of names and demos already at tremendous amount of time and effort stores. ■ their disposal. But since that didn’t collecting and nurturing your own tal- appear to be the case, there are plenty ent. As you might have guessed, I take F O R F U R T H E R I N F O of online sites that cater to this very a different attitude. I’ve found that Places to Find Third-Party Sound Designers: thing, some of which are listed at the artists are more creative in working end of this article. environments that they have designed Gamasutra.com Here’s my horror story. A while back, for their own purposes. Not keeping to http://www.gamasutra.com I replaced a sound designer late in the a nine-to-five schedule actually lets Happy Puppy production cycle of a fantasy game, them budget their own time and work http://www.happypuppy.com/biz/ after the producer became dissatisfied when they are at their best. Their hap- index.html with the previous contractor. It seems piness and security can be heard in the former sound designer was missing their much-inspired work, and any Dungeon Crawl his milestones by ever-increasing game could benefit from this passion. http://developer.dungeon-crawl.com amounts, and the overall creative qual- When it comes down to it, working Black Sheep Journal ity of the work had declined rapidly. As with a contracted sound designer is http://members.aol.com/blaksheepj an example, for some of the spoken not so different from interacting with magical spells used by the various wiz- any of the full-time developers on GameDev.Net ards in the game, he recorded profani- your staff. Graphic artists, program- http://www.gamedev.net/info/about ties and simply played them back- mers, composers, actors, and voice tal-

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com TERRAIN GENERATION Uig Bima f Amaic Geeai f Lage-Scale Teai Mdel b y K a i M a r t i n

48 layers today demand a rich game experience with

larger worlds to explore, more interesting

things to do, and higher degrees of realism

with each new title that ships. The prob-

lem is that game development schedules and

budgets cannot keep pace with consumer demand for

new feature sets. So, how do we make larger, more interesting

worlds without blowing milestones and spending large sums tion). Meticulous construction of the terrain model by of money? Simply put, we must have some of our game data artists’ hands is completely out of the question. No group of generated automatically for us. artists assigned this arduous task would be able to produce For example, suppose you’re developing an online mas- the desired result within the budget constraints; it will either sively-multiplayerPP game with an enormous amount of cost a prohibitive amount of money, or take more time than polygonal terrain (hundreds of thousands of screens’ worth is allotted for the development of the product. So you’re left of in-game scenes) for thousands of players to exist in and searching for some kind of middle ground between these interact upon. In addition to that (just to make your life two extremes. more difficult), this terrain model must conform to a loose, Using manageably-sized, artist-generated bitmaps, com- preexisting map specification (in other words, the general bined with some clever image processing techniques, you map layout and major landmark locations are known rela- can create a desirable terrain model. The techniques I tive to each other, but there is no concrete data set describ- describe in this article don’t eliminate artist or world-builder ing the terrain, such as satellite imagery). This constraint involvement from the creation process — these techniques eliminates the possibility of using any truly automatic ter- only create a model that is very close to completion in a rel- rain generation algorithm (such as fractal terrain genera- atively short amount of time. Once generated, the terrain

Kai Martin is a programmer for Sierra Online, where he is currently working on, among other things, nearly all aspects of automati- cally generating an enormous landscape for MIDDLE-, a massively-multiplayer online role-playing game based on the works of J. R. R. Tolkien. Questions, comments, and miscellaneous musings can be directed to him at [email protected].

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com must be fine tuned by an artist or level A designer to add the aesthetically pleasing final touches. There are several other advantages to using bitmaps for your terrain modeling. First and foremost, the tools for manipu- lating images (such as Photoshop) are extremely well developed and well known by a majority of artists. Second, the techniques I’m about to discuss will lower the ratio of time spent generating the terrain images to the amount of in- game data you can generate from them. Finally, this technique lets you view the BC layout of the entire world within a fairly small area — the bitmaps we will use are FIGURES 1A-C. A. Original terrain bitmap. B. Scaled terrain bitmap. C. Scaled fairly manageable and allow you to view and smoothed terrain bitmap. the entire image at once on a typical monitor. It’s assumed that the terrain model desired is a textured scale vector 49 3D polygonal mesh, with the vertices lying upon a regularly- (scaleX, scaleY) to A spaced rectangular grid. The terrain’s z-values (the “up” vec- do the work. The tor) are taken from a two-dimensional array of values called scale vector is cre- a height field. The terrain textures are also set according to a ated based on the two-dimensional array of values, where different values ratio of the size of denote specific types of terrain. This helps specify a texture the bitmap to the to use for a particular cell in the terrain grid. Thus, two size of the terrain bitmaps are required to generate all the data needed to cre- model one wishes ate terrain. In the examples provided in Figures 1a–c and to create from the 2a–b, the height and terrain data bitmaps are 8-bit grayscale bitmap. and palletized color images, respectively. The first method Note that there are several methods by which you can use takes each pixel (x, this terrain data to create a system of connecting tiles. For y) in the height B example, you could view each terrain value as an individual bitmap and dupli- tile, or view each value as a tile vertex, and so on. However, cates the pixel FIGURES 2A AND 2B. A. Original this article is strictly concerned with generating the needed value bitmap (x, y) elevation bitmap. B. Scaled elevation data. Showing you what to do with the data once it has been inside a rectangular bitmap. generated is beyond the scope of this article. area of pixels scaleX · scaleY in size, in which the upper left corner of the rectangle equals Bitmap Representation of Terrain and Elevation Data (x · scaleX, y · scaleY). Empirically, the data becomes “pixel- lated,” as though the bitmap is viewed at a higher zoom ranslating bitmap values into usable data is straightfor- level. The terrain data is scaled in this way, as well. T ward, assuming you can read the file format of the The second method of scaling the height data treats the bitmap. For a given entry (x, y) in a height data bitmap, a bitmap values as points on an arbitrarily large surface, or as corresponding value in the height field can be calculated by control points used to generate such a surface parametrical- taking the value in the bitmap and multiplying it by some ly, in which each value in the height bitmap is a discrete scalar: heightField (x, y) = bitmap (x, y) · scaleZ. Using the sample from this surface. For a given entry (x, y) in one’s terrain bitmap is even easier. Since the bitmap is 8-bit, sim- height-data bitmap, a corresponding value in the height ply set the value (palette index) at any given point (x, y) in field can be calculated using the following mapping the image to a predetermined terrain type. If more than 256 function: terrain types are needed, you can use the RGB values of a 24- bit image for terrain type indexing instead. [x, y, bitmap (x, y)] = [scaleX · x, scaleY · y, While the goal is to use a large data set to generate a ter- scaleZ · bitmap (x, y)] rain model, it is unlikely that a 1:1 mapping of bitmap val- ues to height and terrain values will yield a large enough All we’re doing is taking a point in the height data bitmap data set for very large game worlds. Thus, you probably will and multiplying it by a scale vector of (scaleX, scaleY, have to “scale up” the bitmaps some way in order to gener- scaleZ). ate sufficient amounts of data. Now that the amount of raw data needed to create the There are two easy ways to scale the data gathered from full size terrain model has been generated, one might the height bitmap. The methods rely on a two-dimensional notice (see Figures 1a–c, 2a–b, and 3a) that scaling the http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER TERRAIN GENERATION

bitmaps has created some rather harsh and unwanted artifacts in the final images. To correct these artifacts, let’s use some basic filtering techniques from the field of image processing.

Basic Image Processing and Elevation Smoothing

any image processing operations can be modeled as a M linear system: Input,fxy(),,,→ [] linear system, gxy()→ Output, hxy() where f(x, y) and h(x, y) are the input and output images, respectively, and g(x, y) is the system’s impulse response. To put it another way, g(x, y) is the operation upon f(x, y) that creates h(x, y). For such a system, the output h(x, y) is the convolution of f(x, y) with the impulse response g(x, y), defined in discrete terms, for an N×M image, as: FIGURE 3A. Scaled, unfiltered height data. []= []⋅ [] 50 hi,,, j f i j gi j N M = ∑∑fkl[],,⋅− gi[] kj − l k==11l

If f and h are images, convolution becomes the computation of weighted sums of the image pixels. This computation is performed using an arbitrarily-sized square table of values called a convolution mask. This computation is what per- forms the actual filtering. One of the simplest filters is implemented by a local averaging operation where the value of each pixel is replaced by the average of all the values in its local neigh- borhood, as determined by the size of our convolution mask. For example, taking a 3×3 neighborhood about the pixel (i, j) yields: + 1 i+1 j 1 hi[],, j= ∑∑ f[] kl 9 ki=−1 kj=−1

If g[i, j] = 1/9 for every [i, j] in the convolution mask, the FIGURE 3B. Scaled height data, filtered using the averag- convolution operation reduces to a local averaging of the ing filter. 3×3 grid of pixels centered on pixel [i, j]. Notice that for the 9 pixels involved in the operation, the sum of the weights is equal to 1 (9×1/9 = 1). When an N×N convolution mask is used as an averaging filter, the size of N controls the amount of filtering. As N becomes larger, the image noise is reduced, but you also lose more image detail. So there’s a trade-off in choosing a particular size N, and choosing the size of your convolution mask will depend on the amount of filtering you need and level of detail your final image requires. An example of an average filter applied to a height field is shown in Figure 3b. A Gaussian filter is similar to the averaging filter. In the Gaussian filter, the values in the mask are chosen according to the shape of a Gaussian function. For reference, a zero- mean Gaussian function in one dimension is: 22 Gx()= e− x /2σ

where the Gaussian spread parameter determines the width of the Gaussian. For image processing, a two-dimensional zero-mean discrete Gaussian function, FIGURE 3C. Scaled height data, filtered using a Gaussian

−+(ij22)/2σ 2 filter. Gi[], j= e

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com is used as a smoothing fil- TABLE 1. Grid of values. regions of uniform inten- ter. The Gaussian filter has sity. An example of the a few properties that make [i, j] -3 -2 -1 0 1 2 Gaussian 3 filter shown it particularly useful for -3 .105 .197 .287 .325 .287 .197 above .105 applied to a height smoothing purposes. -2 .197 .368 .535 .607 .535 .368 field .197 is seen in Figure 3c. First, the Gaussian func- -1 .287 .535 .607 .779 .607 .535 Another.287 useful aspect 0 tion is rotationally sym- .325 .607 .779 1.000 .779 .607 of .325the Gaussian func- 1 metric. In other words, the .287 .535 .607 .779 .607 .535 tion .287 is the fact that it is 2 .197 .368 .535 .607 .535 .368 .197 function does not favor a separable function. In 3 .105 .197 .287 .325 .287 .197 .105 any particular direction other words, a two- when it smooths, which is dimensional Gaussian particularly useful when TABLE 2. Resulting table of values. convolution can be the areas needing smooth- obtained by convolving ing are oriented in an arbi- [i, j] -3 -2 -1 0 1 2 the bitmap 3 with a one- trary direction (not known -3 1 2 3 3 3 2 dimensional 1 Gaussian in advance), and there is -2 2 4 5 6 5 4 and 2 then convolving -1 no reason to smooth in 3 5 6 7 6 5 the 3 result with the same 0 any specific direction. 3 6 7 10 7 6 one-dimensional 3 1 3 5 6 7 6 5 3 Second, the Gaussian Gaussian–oriented 2 2 4 5 6 5 4 2 function has a single lobe, orthogonal to the 3 1 2 3 3 3 2 1 51 which means that the Gaussian used in the Gaussian filter replaces each first step. Therefore, pixel with a weighted average of the neighboring pixels another way to create a Gaussian filter is to approximate it around it (like the averaging filter), such that a pixel’s weight by using the coefficients of the binomial expansion (you decreases monotonically with distance from the central pixel. might remember the binomial series from calculus, where it The filter centers on one pixel (i, j). This pixel is modified was used to estimate integrals and roots of numbers): by: 1) Multiplying each surrounding pixel, including the         center pixel by its respective filter weight, and adding the n nn n 2 n n ()1 + x =   +   x +   x ++L   x resulting products together. 2) Dividing the sum from step 01    2 n one by the sum of the filter weights. This is the new value for pixel (i,j). This allows local features in the height bitmap In other words, use row n from Pascal’s triangle (Figure 4) as to remain in the filtered image. Finally, the width (and thus the values for your Gaussian filter. For example, a five-point the degree of smoothing) is linked directly to ␴, so that as ␴ approximation of a Gaussian filter is: increases, so does the degree of smoothing. One can control this parameter to achieve a balance between the amount of 14641 smoothing and blurring in the final image. There are a couple of techniques that one can employ to This corresponds to the fifth row in Pascal’s triangle, as determine what kind of Gaussian filter to use. If the filter is shown in Figure 4. This method works for filter sizes up to being calculated directly from the discrete Gaussian around n = 10. For larger filters, the binomial coefficients distribution become too large for most images. Of course, if floating- −+(ij22)/2σ 2 Gi[], j= ce point values can be used, you could always normalize the row by the largest value. where c is a normalizing constant, the equation can be Depending on how much you scaled the original height rewritten as bitmap, the above smoothing methods should produce sat- isfactory results. However, for higher amounts of scaling, Gi[], j −+(ij22)/2σ 2 = e the amount of smoothing needed (provided by either of the c methods above) might be too high to produce a smooth Once a value for ␴2 is chosen, the function can be evaluated height bitmap (depending on what kind of terrain model over the N×N area desired for the mask. For example, choos- will be satisfactory). In doing so, there is a trade-off between ing ␴ = 2 and N = 7, the above equation yields the grid of losing local detail from the original height bitmap (since values in Table 1. However, if integer values are desired smoothing reduces noise by spreading it over a larger area, inside the mask, you can divide every value inside the mask making it more difuse) and generating more terrain data by the value at one of the corners in the array (the smallest from a bitmap of given size. value in the mask). With this completed, and assuming the values are rounded appropriately, a table is created like that shown in Table 2. Smoothing Using Curved Surfaces Notice that the sum of all the weights contained in the above Gaussian masks do not equal one. Thus, the result ith images that have a large amount of height varia- given from convolving a given section of the image by the W tion, such as a terrain that goes from a valley at sea mask should be divided by the sum of the weights contained level to a mountain peak, the amount of smoothing needed in the mask. This ensures that the mask does not affect to produce a satisfactory terrain model would be so large http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER TERRAIN GENERATION

You may recall that four control points define a cubic Bézier curve and that 16 control points define a cubic Bézier surface. In general, a degree n Bézier curve is defined by n + 1 control points, and a degree n Bézier surface is defined by (n + 1)2. However, the desired final set of elevation points will be much larger than a 4×4 grid. Therefore, one will need to use either a much larger degree Bézier surface, or employ another approach that will remain a third degree surface that allows any number of points to define it. This is where the cubic B-spline comes in. In simple terms, a B-spline of degree n can be thought of as a com- posite curve made up of several curve segments, each also of degree n, with each curve segment defined by n + 1 con- trol points. In this case, each curve segment is a third degree curve defined by four control points. An important feature of the B-spline is what’s known as “C2 continuity.” This means that at any point on the curve, the second derivative will exist (means that no sharp points will exist anywhere on the curve — a nice property to have). To 52 define the B-spline as a whole, if we have m + 1 control FIGURE 4. Pascal’s triangle. At the tip is the number 1, points, then we have m – 2 curve segments. Let a given curve which makes up the zeroth row. The first row (1 & 1) ≤ ≤ segment Qi be defined over the interval 0 u 1 by basis contains two 1s, both formed by adding the two numbers functions Bk(u)(k = 0,…,3) and control points pi , pi+1, pi+2, pi+3 above them to the left and the right, in this case 1 and 0 as follows: (all numbers outside the triangle are zeros). Do the same 3 to create the second row: 0 + 1 = 1; 1 + 1 = 2; 1 + 0 = 1. And = Quiikk() ∑ p+ Bu() the third: 0 + 1 = 1; 1 + 2 = 3; 2 + 1 = 3; 1 + 0 = 1. In this k=0 way, the rows of the triangle go on infinitely. A number in This should look familiar, since it’s very reminiscent of how the triangle can also be found by n Choose r (nCr) where a Bézier curve is defined. For the sake of brevity, here are the n is the number of the row and r is the element in that row. basis functions for a cubic B-spline (if you’d like more infor- For example, in Row 3, 1 is the zeroth element, 3 is element mation how the functions are actually derived, please see number 1, the next 3 is the second element, and the last the References section at the end of this article): 1 is the third element. The formula for nCr is shown below. 3 ()1 + u = Buo () n! 6 ------r!(n—r)! ()364uu32−+ Bu()= 1 6 The ! symbol means factorial, or the preceding number multiplied by all the positive integers that are smaller than ()−+3334uuu32 ++ ()= the number. 5! = 5 x 4 x 3 x 2 x 1 = 120. Bu2 6

3 ()= u Bu3 that a great amount of detail would be lost in the process — 6 your mountains might suddenly turn into rolling hills. So a Since these segments are connected together to create one different approach for these images must be used. A more large curve, it makes sense to have a parameterization of the obvious yet slightly more complicated method is to find entire curve in terms of one parameter U, instead of having some form of surface representation from the initial set of just a parameter u for every curve segment. Globally, U is data points. This can be a surface either shaped by or inter- defined over [0, m – 2], and u defined (as one would expect) polating through these points. There are many ways to do over [0, 1]. The parameter u for any given curve segment i is this, but this discussion will be limited to creating a uniform given by U – i. cubic B-spline surface to achieve our goal. Except for the end points of the B-spline curve, each con- trol point (in the case of a cubic B-spline) influences four

curve segments, that is, control point pi influences curve seg-

Introduction to B-Splines ments Qi –3, Qi –2, Qi –1, and Qi. The influence of each control

point pi over the curve at some global parameter value U is will assume that you have some basic knowledge of para- “collected” into one global function (called a blending func- I metric curved surfaces, such as Bézier curves and surfaces. tion), Ni(U). If not, Brian Sharp’s articles on Bézier curves and surfaces Think of the blending function as the sum of the basis (“Implementing Curved Surface Geometry,” June 1999, and functions (which is similar to the basis functions used when “Optimizing Curved Surface Geometry,” July 1999) are a evaluating Bézier curves) for any given point on the curve. very good introduction. In formal terms, the B-spline curve Q(U) is defined by:

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com n The code to do all of this is available on the Game QU()= ∑ pN() U i i Developer web site, http://www.gdmag.com. i=0 where Bu() i−≤32 U <− i Terrain Smoothing  30  () −≤ <− n smoothing the terrain bitmap, neither the straightfor- Bu21 i21 U i NU()=  i I ward smoothing algorithms described above nor any Bu() i−≤1 U < i  12 other image processing technique used for scaling or  smoothing images can be applied. All of these methods have Bu() i≤<+ U i 1  03 potential to introduce new color values into the final image, =−+− =K and only the terrain values contained in the original terrain uUij 303 jj (,,) bitmap can be present in the final bitmap. In this smoothing × The global function Ni(U) takes the global parameter U and method, another n n array of values centered on a pixel g[i, converts it to the appropriate local parameter uj for each j] in an image g will be used to calculate the value of the curve segment involved. pixel h[i, j] in the final image h. However, instead of using an As mentioned earlier, this type of B-spline is a uniform B- equation or other means independent of the values con- spline, which means that the curve consists of curve seg- tained in the source bitmap, the values in the n×n convolu- ments between endpoints that are spaced equally apart tion mask will be taken directly from source bitmap (specifi- (there are other types of B-splines that do not have the ends cally, the n×n neighborhood surrounding pixel g[i, j]). Next, 53 equally spaced, but we won’t worry about those here, since a histogram (an “inventory” of all the different values con- we’re dealing with a regular grid of control points). In our tained in the specific n×n area of the source bitmap) of the case, these ends are located at [0, 1, …, m] of U for m number n×n array is calculated. From this histogram, the value that is of control points. These ends will be referred to as knots (to most frequently occurring in the n×n region surrounding the be consistent with any other reference one may find on B- pixel g[i, j] shall be the value of the pixel h[i, j]. splines). Thus, the spline curve becomes a collection of the knot intervals t0 < t1 < ··· < tm. Also, the order k (the degree + 1) of a B-spline can vary, but for simplicity’s sake, we will Conclusion keep the order of our spline constant at k = 3. Now we can recursively define a blending function Ni,k(u) of degree k over he convenience of using bitmaps for generating game the knot range [ti, ti + k] as follows (otherwise known as the T data can extend beyond just polygonal terrain genera- Cox de Boor algorithm): tion. Other examples could be world object placement (for trees and other vegetation), non-player character (NPC)  ≤≤ 1 if tutii+1 placement (perhaps for a real-time strategy game where hun- Nu()=  io, dreds of units need to be placed for a given scenario), setting 0 otherwise paths for NPCs to follow, or providing any addition infor-

()()utN− − u ()()tuNu++−− mation about the terrain (for example, setting “off-limits” Nu()= iik,,1 + ik i11 k ik, − − areas for certain player characters or NPCs). The number of ttik+−1 i ttik++ i1 things that an image can represent is virtually limitless. So, Now that we have the definition of a B-spline curve, how before considering creating your own custom tools for gen- do we define a B-spline surface? Informally put, any point erating game data, make sure that you’re not simply rein- (u, v) on the surface is calculated by multiplying two sepa- venting the wheel by wanting to provide something that a rate curves together. Formally, let a point (u, v) on a cubic bitmap could provide just as well. ■ B-spline surface S defined by a grid of control points p (i = 0, … , n; j = 0, … , m), and blending functions N (u) i,j i,k R E F E R E N C E S and Mj,k(v) n m Image Filtering Su(), v= ∑∑ p N() uM () v ij,, ik jk , • Gonzalez, Rafael C., Richard E. Woods, and Ralph Gonzalez. i=0 j=0 Digital Image Processing. New York: Addison-Wesley, 1992. Now that we have basic knowledge of B-splines, applying what we have learned to create our desired amount of eleva- • Jain, Ramesh, and others. Machine Vision. New York: tion data should be relatively easy. The initial set of eleva- McGraw-Hill College Division, 1995. tion points should be used as control points for the final sur- face. Next, determine the dimensions the final elevation Curved Surfaces and Surface Interpolation data should satisfy. Let our final elevation data set be s val- • Rogers, David F. Mathematical Elements for Computer ues wide by t values tall. When evaluating points on the sur- Graphics. New York: McGraw-Hill College Division, 1989. face, one needs to know the change in u(du) and change in • Watt, Alan and Mark Watt. Advanced Animation and v(dv) from one point to the next, which is defined by: Rendering Techniques: Theory and Practice. New York: n m Addison-Wesley, 1992. du ==, dv s t http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER POSTMORTEM Oage DESCENT 3

by Jason Leighton and Craig Derrick

ESCENT 3’s creation was a long and arduous task that

54 was both a joy and a pain. Exciting technology

coupled with inconsistent design and almost

nonexistent management had all members of

the team exhausted by the end of our 31-month

development cycle. When the game finally did ship DDhowever, we knew we had a winner. Developed by Parallax Software and published by Interplay Produc-

tions, DESCENT was released in 1995 and took the world by storm with

the first first-person shooter offering 360 degrees of movement. No

longer were players constrained just to walking around a 2D world —

now they had complete freedom of movement in a true 3D space.

Jason Leighton likes to kill time by complaining about the horrid Michigan weather cycles. When it is actually nice outside, he complains anyway. To hear his weather woes, or if you just want to talk about game programming, write to [email protected]. Your e-mail is important to him, but may be monitored for quality assurance purposes. When Craig Derrick isn’t off buying DVDs, he’s often writing to Jason Leighton about his weather woes and trying to convince him that all he really needs to do is to stop programming and go outside. If you need a motivational speaker or if you have a problem and no one else can help, write to [email protected].

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com Players were able to fly their Pyro ship in any disorienting direction — up, down, and everywhere — and top became bottom, bottom became up, as players plummeted down never-ending tunnels blasting mechanical robots and saving imprisoned miners. This innovation in action gaming was immediately suc- cessful and garnered The Academy of Interactive Arts and Sciences Best Title of 1995 and Best Computer Game of 1995. And PC Gamer voted it Best Action Game in the World. One year later, the sequel DESCENT II was released, which added another 30 levels to the mix and improved the game’s AI, thanks to the addition of the Guide-Bot and Thief-Bot. The game ended with a cliffhanger cinematic that almost certainly guaranteed another sequel. That’s where the DESCENT 3 project began.

Who the Hell Is Outrage? Initial conceptual drawing of the Phoenix Interceptor.

ESCENT was developed by a small group of programmers 55 D and artists at Parallax Software in Champaign, Ill., pleted work on DESCENT II – THE INFINITE ABYSS and DESCENT headed by Mike Kulas and Matt Toschlog. After the success- MAXIMUM for Playstation, while others were involved with ful completion of DESCENT, Toschlog moved to Ann Arbor, research and development for DESCENT 3, where they learned Mich., and established a second office for Parallax Software. about new tools and technologies. We were excited about He took three designers with him and hired two additional taking the DESCENT franchise to the next level and eager to programmers. Both offices then began to work simultane- begin, but little did we know that our over-eagerness would ously on DESCENT II. While DESCENT II was deemed a suc- impair the game’s development. cessful project, the process of trying to get teams located in About six months after starting development, we stepped two distant offices to work effectively together took a heavy back and took a long hard look at what we had and where toll on both teams. It was at that time that Matt and Mike we were going. Originally, it was deemed that DESCENT 3 decided that each office should work on separate titles and would have both a software and hardware renderer. After eventually become separate companies. Thus, Outrage checking out the competition, it was apparent that, if we Entertainment and Inc. were born. wanted to be visually stunning (and maintain interactive It was another eight months before the production of frame rates), we would either have to scale back our technol- DESCENT 3 began. After the release of DESCENT II, Outrage ogy design or go with a hardware renderer only. We chose immediately began work on THE INFINITE ABYSS (a Windows the latter. In retrospect this was a good decision, but it was 95 version of DESCENT II, along with a new level add-on pack unfortunate that we had to make it six months into the entitled THE VERTIGO SERIES). Meanwhile, Volition concen- development, since many of the tools and software render- trated on development of FREESPACE. It wasn’t until after the ing technology were already developed. release of THE INFINITE ABYSS and DESCENT MAXIMUM (the At this point, not only did we decide to go with a hard- Playstation version of DESCENT II) that the developers here at ware-only renderer, we decided to scrap the engine that we Outrage began focusing all our energy on the design and had been developing. The engine we had going was an development of DESCENT 3. DESCENT 3 Another Sequel And Why DESCENT 3? Outrage Entertainment Ann Arbor, Mich. (734) 663-9120 ESCENT I AND II had the makings of a franchise for http://www.outrage.com Interplay, and with any franchise, successful or other- D Release date: June 1999 wise, sequels are sure to follow. Technology had taken a big Intended platform: Windows 95/NT/98 leap in the year and a half that DESCENT had come out: Project budget: $2 million notably Windows 95 and hardware-accelerated 3D. It was Project length: 31 months easy to see how DESCENT 3 could be dramatically improved Team size: 19 over its predecessors. Critical development hardware: Intel Pentiums and AMD K-6 II By the fall of 1996, we began to compile a list of features processors. Each machine was equipped with a hardware that we would like to see in DESCENT 3. By November we had accelerator and at least 64MB of RAM. created a design document detailing the new features that Critical development software: Photoshop, 3D Studio Max, would be implemented for DESCENT 3 and submitted it to Lightwave, Microsoft Visual C++ 4/5/6; rendering APIs used Interplay for approval. include Sourcesafe, OpenGL, Direct 3D, and Glide; Direct Sound, The initial design and programming work on DESCENT 3 Aureal, and EAX were used for the game audio. began in December 1996. Some of the team had just com- http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER POSTMORTEM

enhanced segment engine — a portal lic (or reviewers) would receive it. weapons, sounds, , and so engine that used six-sided deformed Thankfully, it turned out that our fears on, to determine what part of the fea- cubes to represent geometry. Essen- were unfounded — DESCENT 3 has ture needed to be changed and what tially, it was the same technology used received incredibly good scores from a needed to be left alone. Developers in DESCENT II, with some additional variety of sources, including print mag- sometimes do this with their competi- features thrown in for improved geom- azines and gaming web sites. tion’s products when beginning devel- etry modeling. If we had stuck with opment of a similar game, but nothing this engine until the game shipped, we beats being able to do it with your own would have been way behind the tech- What Went Right game because you have an intimacy nology curve with respect to our com- with the product that outsiders are not petition. Instead, we went with a WORKING ON A SEQUEL. Working on privy to. “room”-based engine, which allows 1.any sequel, whether a game or USING A HARDWARE-ACCELERATED 3D designers to create just about any geo- movie, has its ups and downs, and 2.ENGINE. When development of metrical area within a 3D modeling DESCENT 3 was no exception. Much of DESCENT 3 began in November 1996, program, such as 3D Studio Max or the joy of working on a sequel comes hardware accelerators (specifically Lightwave. from the fact that you can improve on 3dfx’s Voodoo 1) had just come out. Shortly thereafter, the terrain engine an already established title, and in Our initial design document called for was developed. We were seriously con- many cases, add features that were pre- DESCENT 3 to ship with a hardware and sidering the idea of creating outdoor viously impossible to do. software renderer, but as our aspira- 56 areas for DESCENT 3, but we worried Knowing your target market is essen- tions for the graphics engine grew, so about the high polygon count associat- tial to making a successful sequel. You did the need for . ed with such a large rendering dis- must not deliver a product that com- Complex geometric rooms, robot ene- tance. Fortunately, we used a good pletely turns away your core audience, mies having nearly twice the amount level-of-detail (LOD) algorithm to com- and yet enough of it must be new in of polygons and animation states com- bat the frame-rate problems. Unfortun- order to persuade them to purchase it. pared to our previous games, complex ately, the decision to include terrain The four long years between DESCENT II outdoor terrain, and the whiz-bang would adversely affect the overall and DESCENT 3 convinced us that new effects expected in today’s games all design in ways that we couldn’t possi- technology alone warranted a new necessitated hardware acceleration. bly have foreseen, such as the scale of product, but we didn’t want just to With all these features in the game and the terrain dictating how fast the ship copy the previous version. DESCENT 3 running at abysmal frame rates with appeared to move while outside. had to retain all of the elements that our software renderer, it was decided, For the next 18 months, work con- made its predecessors big hits and yet, reluctantly, that we would release as a tinued on DESCENT 3 at a frantic pace. creatively, be different. And therein lies hardware-only game. We were learning how to use our cus- the paradox of making a sequel. As development wore on, technolo- tom in-house tool, D3Edit, so in the Starting with our old games’ design gy advanced and accelerators became process we ended up creating and then document and features list, we cata- faster, cheaper, and more popular with throwing out an incredible amount of loged elements that the team liked and each passing year. It seemed that our content — what looked cool one disliked about the previous games. games were coming out every week month looked dated the next. This was Every item was scrutinized and broken that sported a hardware accelerator largely due to the fact that we were down into specific lists, such as art, mode or patch, but up to this point, developing a cutting-edge engine nothing had come out that was at the same time we were trying to hardware-only. We knew just design the game itself — a pitfall by looking at our progress on many developers have fallen vic- the game under acceleration tim to. Unfortunately, throwing that we had a beautiful looking out so much work also cost our game with all the latest tech- team a lot in terms of our morale. nologies — but would anyone What we should have done is actually be able to play it? freeze the design of the engine Our Christmas deadline about a year before the product came and went, but in retro- shipped and then worked on the spect I feel it was for the better. game. Unfortunately, in our lust If you didn’t have a hardware for sexy technology, we just accelerator before Christmas couldn’t do that. 1998, chances are you did have When we finally did ship, we it later. With the implementa- were exhausted in a variety of tion of Direct3D, OpenGL, and ways. Working on the same game Glide, DESCENT 3 was capable of for two and a half years is emo- running on just about every tionally depleting, to say the least. Conceptual drawing of the hulking Juggernaught video card available when it Although we knew the game was robot. was released. Because we took a cool, we didn’t know how the pub- chance on technology, believed

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com The new and improved Thief-Bot. Sparky, one of the more than 30 new robots in DESCENT 3.

57 in our product, and slipped a bit, the idea, but the terrain technology was connections. Even though we’re not in DESCENT 3 looks, feels, and plays like a solid enough to be incorporated into the first-person-shooter genre — a next-generation DESCENT. And that’s all DESCENT 3. It was based on a great paper genre that is judged by its graphics and we really wanted. by Peter Lindstrom and colleagues enti- networking technology (some say at OUT WITH THE OLD ENGINE, IN WITH tled Real-Time, Continuous Level of Detail the cost of game play) — we compete 3.THE NEW. As mentioned earlier, Rendering of Height Fields (from Siggraph favorably with the offerings in that the initial plans for DESCENT 3’s graph- 1996 Computer Graphics Proceedings, arena. ics engine were to include both a soft- Addison Wesley, 1996). Of course, it was GREAT MULTIPLAYER. We knew that ware and hardware renderer. The bastardized heavily to fit the needs of 5.DESCENT 3 had to have the best engine itself was to be a heavily modi- DESCENT 3, but the overall concept was multiplayer right out of the box, or fied version of the segment (cube- the same — create more polygonal people would be disappointed and based) engine used for DESCENT I and II, detail as you get closer to the ground scream for our heads. Sadly, in this age meaning that all geometry had to be and take away polygons when you are of release-once, patch-many, there are sculpted by connecting one deformable farther away. After implementing the a lot of games that come out that cube to another. While this engine real-time LOD technology, our frame haven’t fully tested their multiplayer supported some interesting geometry, rates quadrupled. aspects, and these systems are full of it just couldn’t handle the complexity The outdoor engine gave designers bugs. Fortunately, DESCENT 3 did not we had in mind for DESCENT 3’s levels. the ability to create an internal struc- suffer from this. We spent a lot of time So, six months into development we ture and its outside shell (an external testing DESCENT 3 networked games started over on the engine, and this room with the normals flipped), and over a variety of conditions, both time we aimed higher. We set our place it anywhere on the terrain. This lagged and unlagged. It was a tiresome sights on creating what is now the let us create seamless transitions process, but in the end, I’m happy we Fusion Engine. This engine would actu- between a structure within the level to did it. ally be two separate engines — one for an outdoor section, with absolutely no Another thing we did that show- internal settings and one for outdoor load times whatsoever. For the first cased our attention to multiplayer was terrains — that would work together time in DESCENT, players could actually to give a whole slew of options to the seamlessly. The internal “room” engine leave the mine. When players cross the player. We had support for IPX, TCP, allows designers to model almost any portal that leads from inside to outside, DirectPlay Modem, and DirectPlay type of complex geometry in a pro- the game code would switch collision Serial. These options allowed players gram such as 3D Studio Max and detection, rendering, and so on, to use to connect to games using the protocol import it directly into our game editor. the terrain engine. best suited for their situation, instead Once imported, designers can modify INCREDIBLE TECHNOLOGY. One of of just offering TCP as a lot of other the geometry, texture it, place objects, 4.our biggest goals in developing games do. There were also three and light it. Designers could then take DESCENT 3 was to bring the game network architecture types: D3 the individual rooms and join them engine up to date. This included graph- client/server, peer-to-peer, and permis- together, creating a portalized world ics, AI, sound, and multiplayer. I think sible client/server. We did this because for the player to fly through. we hit the mark. DESCENT 3 includes we knew we had to support the The terrain engine actually began as a just about every whiz-bang graphical DESCENT II fans (peer-to-peer), the prototype for another game that Jason feature there is, the AI is very smart for QUAKE and UNREAL fans (permissible was interested in developing. an action game, and the multiplayer client/server), and try to forge our own Unfortunately, Bungie’s MYTH beat us to plays pretty well even over lagged path with a new network technology http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER POSTMORTEM

(D3 client/server). We guessed that per- industry would get its first glance at code reviews, no art reviews, no way of missible client/server would be the our game and we wanted to come out a saying, “This is bad and we should be most popular model, simply because winner. Fortunately, everything turned going in a different direction.” What that was what players were used to. To out all right. The fans who got a we needed was more of a hierarchy our surprise, it turned out that D3 glimpse at DESCENT 3 were very impres- and a systematic way to get things client/server was the most frequently sed and the comments from the press done. People would have disagree- used architecture. This architecture were overwhelmingly positive. ments that were never settled, and changed the way lag was perceived. In A lot of what kept the team’s energy that led to bad feelings among team games such as QUAKE and UNREAL, high was the amount of pride that each members. It would have been much there is a noticeable delay between fir- person had in their own particular better if some sort of hierarchy had ing the weapon and when the weapon domain. The level designers wanted to been in place to mediate disputes, but appears on your screen. The reason is make the absolute greatest levels ever, unfortunately this didn’t materialize that the client asks the server to fire the programmers wanted their particu- during the entire development cycle of and the server gives the client permis- lar systems to stand out, and the artists the game. For example, if a couple of sion to fire (hence permissible client/ wanted the art style of the game to be people had a problem with the way a server). The D3 client/server is different unique. So this pushed people to do particular level played, there was no in that it allows you to fire right away their very best — the atmosphere was recourse to get that level changed. — when you press the trigger, the laser almost competitive. There were a cou- Bringing up the faults in an individ- appears immediately. The downside is ple of times when things got out of ual’s level, system, or art would start 58 that you have to lead your opponent hand and egos had to be held in check, arguments, and that got us nowhere. by your ping to the server, and some- but for the most part, the individual Next time we’ll know better. An anar- times when the laser would hit your team members were allowed to shine chistic development environment is opponent on your screen, it wouldn’t without stepping on the toes of a fel- great in theory (total freedom), but really hit them on the server. We low colleague. you really do need a hierarchy of some found this to be less frustrating that sort, a chain of command where peo- the permissible client/server way ple know whom to go to with prob- (which personally drove me crazy), and What Went Wrong lems. It was a painful lesson that could thankfully our fans agreed. have been avoided if we had set up our While providing players with so LACK OF DIRECTION OR VISION. The team to be more like a company and many options might have cost us 1.biggest problem on DESCENT 3 less like a garage band. development time, I’m confident that was the weak management structure. NO STANDARDIZED LEVEL DESIGN we made up for it in the satisfaction DESCENT and DESCENT II were devel- 2.TOOLS. Another major problem that our customers had by being able oped by small groups that worked on DESCENT 3 was the tools the level to customize the game to their liking. closely together (often in the same designers used to make their levels. Overall, the development team at room), and as we grew to a team of Some people used 3D Studio Max, some Outrage was very energetic to work on almost twenty people, we didn’t intro- used Lightwave, and one designer even DESCENT 3 and their dedication paid off duce enough management to control wrote his own custom modeler from more than once during development. the process. Even though people had scratch. Due to our somewhat anarchis- Working on a game as long as we did is designated titles, there was no real tic development environment, this was always tough going. Because we, too, authority attached to those titles. No seen as O.K., and not too many people are game players, it was some- complained. However, the differ- times tough to be working on ent tools led to inconsistent qual- something for so long, never ity across our game levels. One quite knowing whether or not designer would make great geom- the work you were doing would etry that had bad texturing, while be accepted by your peers with- another designer would create in the industry, or more impor- the opposite, especially if his tool tantly, by consumers and fans of choice made texturing or geo- of the product. This all changed metric modeling difficult. What for us during 1998’s conven- we should have done is standard- tion. ized using one tool (probably 3D We didn’t get confirmation Studio Max) and made the from Interplay that we would designers learn how to use it be showing the game at E3 whether or not they were com- until about a month before the fortable with it. This would have show. When the word finally allowed us to make use of certain did come, we shifted gears from features that 3D Studio Max has our production and went full (such as parametric surfaces) towards making the best without worrying about whether E3 demo that we could. This Watch out for the dual Fusion attack of the Thresher. Lightwave or the custom modeler would be the time that the supported that feature.

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com behaving at all as they should. We was simply to introduce the boss couldn’t simply add another program- robots. The effect was so impressive mer to that particular system to help that we decided to use the system to out, because by the time the new pro- establish the player’s location in the grammer became familiar with the new beginning and ending of each level. system, then his system would fall This worked out so well (do you see behind. It might sound as if this was an where this is going?) that we used the understaffing problem, but it wasn’t. It system to help establish when puzzle was more of a case of “design as you elements were completed. This one- go,” where someone would suggest a time only system was utilized in ways great feature and then the program- that hadn’t been thought of before its mers would implement it. implementation, which caused numer- Unfortunately, all these excellent fea- ous problems. tures started adding up and taking a FAST COMPANY GROWTH AND GREEN The DESCENT orb, now realized in full tremendous amount of time to imple- 5.EMPLOYEES. When we started 3D. ment. It would have been better if work on DESCENT 3, Outrage had just there were more programmers on a par- eight employees on staff. Since some of ticular system, or at least ones who the DESCENT II team left Ann Arbor to After assembling their geometry, the were familiar with it, so that if there work at Volition during the project, we designers took their rooms and mod- were concerns with slippage, other literally had to build the team and 59 els, imported them into our custom people could have been brought company at the same time we started editor (D3Edit), and tried to glue aboard to help. production on the game. This resulted everything together. Unfortunately, WORKING ON A SEQUEL. With in a mixed bag of results ranging from our editor was written by programmers 4.sequels come high expectations pushing back larger projects or features who didn’t give enough thought to that can almost never be achieved com- until later in the project to adding mul- the user interface — they often pletely. (Just look at Star Wars: The tiple tasks to someone’s already full designed interfaces that were intuitive Phantom Menace to see what I’m talking schedule. to a programmer, but not to a design- about.) While we aimed high for the One of the results of being under- er. Conversely, a designer would ask entire game, many times trying to meet staffed was the decision to contract out for a feature that might take a pro- the varying expectations of our team most of our 3D animated door model- grammer a long time to code, but then (more in-level scripting and rendered ing to an outside company, Vector the designer wouldn’t use the feature cinematics), publisher (using more AI Graphics, for completion. Our schedule very much. This led to feelings that and levels), and fans (more of every- showed that one animated door took the designers didn’t know what they thing) resulted in half-implemented anywhere between three to five person- wanted, and the programmers didn’t features, such as our in-game cinemat- days to complete. With a design docu- care enough to make things easier for ics or items that went in untested at the ment that dictated more than 30 doors the designers. It was a vicious circle last minute (such as some Guide-Bot in the game, we would have run out of that didn’t get cleared up until the lat- functionality). time. We made the decision to round ter third of the project. Even in the With a game so big and widely antici- up all our sketches for doors and hand shipped game you can tell which levels pated, I’m not sure if we would have them over to the very capable hands of were made early on and which were ever been able to manage everyone’s Vector Graphics. This allowed our made near the end of the production expectations. And, one of our biggest designers to concentrate on their cycle. The later levels are much better problems was that those expectations scheduled tasks and then add the doors looking, have better frame rates, and were controlling the design of the later as we received them. generally have better scripts. game. As developers, we should have What we didn’t account for were the PROGRAMMERS WORKING ON DEDICAT- been more confident in our abilities to problems that came up because our 3.ED SYSTEMS. Many systems, such produce this type of game and should teams worked in different locations. as the graphics, AI, and scripting, were have approached new ideas with a bit (Somehow we forgot that our company written exclusively by one person. This of skepticism. While I don’t dismiss the was split for this very reason.) Assem- fostered a feeling of pride in a particu- valuable role that the fans and our pub- bling our development environment lar system, but it also caught us with lisher played in the development of and building an editor for Vector our guard down when we found that DESCENT 3, we were too apt to deviate Graphics was troublesome, and once one system was falling behind sched- from our design document when others we gave the editor to them, they really ule. Our AI, for example, was very wanted us to add features to the game. didn’t know how to use it. Our lead much behind schedule for the duration It’s very important to stay true to designer worked with them almost of the project because the programmer your design document and know daily to bring them up to speed and fix just had too much to do. This caused a which systems are valuable. Every new any file incompatibilities caused by our ripple effect that was felt throughout feature should be evaluated not only constantly evolving editor. This caused the design of the game. After all, you on its value to the game, but also from our lead designer to fall behind in his can’t tell how a level is going to play if a production standpoint. When we schedule, and we had to shuffle around the robots that you’re fighting aren’t decided to create in-game cinematics, it due dates for his specs and level deliv- http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER POSTMORTEM

erables. As we hired more people, he caught up. In the end, we hired an additional nine employees, only two of whom actually had any professional game development experience. And while everyone on the team gave the game their full attention, we definitely had issues come up that were the result of inexperience. A loss of professionalism, maturity, and a standard of conduct was appar- ent during the development of DESCENT 3. Some of this was due to young employees who came to us directly from school with no professional work experience, while others had trouble dealing with the long hours that come with the job. This, coupled with the lack of a strong management hierar- chy, resulted in clashes over direction, seniority, and leadership on the pro- ject. More times than not, a person would not follow the direction of the lead simply because of their personal issues with that person. This resulted in the lack of respect for that person and the very responsibilities that came from being the lead. But our biggest problem was definite- ly with art direction. Without a dedi- cated art director on staff, we often sec- ond-guessed everyone else’s work. Each artist and designer had specialized tasks, and without an art director to make a final decision, art was simply added to the game without any formal approval. In the beginning, we had show-and-tell meetings to show off the latest work from people, but this almost always turned into a forum for criticisms and led to animosity between team members. An art director leading us would have kept our artwork consistent and would have been the final authority on all artwork-related matters. END GAME DESCENT 3 was an incredibly challenging project, to say the least. The design-as-you-go and design-by- committee aspects were a large part of the problem, and any future Outrage projects will be more diligent in their initial design. We’ll make sure that the designers have absolutely the best tools at their disposal and we’ll have better management to mediate design dis- putes. Without these problems during the development of DESCENT 3, I’m fair- ly confident the whole project would have been a little less painful. ■

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com SOAPBOX by Mike Kelleghan Who’s Eating Your Slice of the Pie?

y boss got a new Ferrari the other day, long gone. The publisher got half of your work for free because you only got the same day he laid off about a third paid for 40 hours of those 80-hour weeks. One big company owner in L.A. of the company. Somehow that smells has run this scam four years in a row, taking home a million-dollar bonus for fishy to me. We’ve all heard the figures himself every single year, according to M the company’s SEC filings. about how much money is coming into change the course of history when it’s So how does an honest developer 64 this business. Cowles/Simba projects finished. But instead of paying you avoid this fate? Simply decide what’s that industry revenues will reach $11.6 what you were making at your last job, the minimum cash you want after work- billion in 2001. These are real dollars, they tell you they’re going to be paying ing 40 hours a week, then multiply that and I know a lot of the folks who are big, fat bonuses to all the team players by two. This is the minimum salary you getting rich in this business. Heck, I when the game ships on time. After all, can settle for (because you’ll be working develop the games they’re getting rich they say, this makes it fair to both 80 hours a week, remember?). If they on. I’m not saying I need a new Ferrari them and you. So you agree. offer you a bonus, ask them a few ques- every year, but I’m pretty sure I’m not tions, such as how many people got getting my share when it takes paid bonuses last year. You don’t really me 15 years to save up for a care what the answer is, you just want new pickup. to see their reaction. If asking So where’s the clog in the questions makes them trickle-down theory? Part uncomfortable, sound of the problem begins the red alert klaxon — during contract negotia- incoming bogus bonus. tions. I have this ongoing Another rip-off is the problem of thinking the “complicated conundrum” other guy wants a fair deal. scam. This one is run by a The sad truth is that the last programmer against the time I was involved in a nego- producer. The programmer tiation where both parties were is running late on an interested in a fair outcome was important part of the pro- when I traded my kid brother a ject. The producer politely water pistol for his Slinky. Ever asks the programmer if hiring a since, I’ve been cheated, lied to, couple more programmers ripped off, folded, spindled, and would help get that part of the mutilated. It seems like almost project back on track. The pro- everybody I meet in this business is rip- illustration by Jackie Urbanovic grammer then explains that bringing ping off everybody else. Halfway through the project they on new hands would mean he’d have to One common rip-off is the “bogus wail about being short on cash, they explain the extremely complicated code bonus” technique, and here’s how it lay off half the company, move the to the new people, and by the time he works. During an interview at some big delivery date up while adding features, explained the whole thing he could game company, they tell you how and are, of course, forced to cancel have just finished it all up by himself. important the project is, how impor- bonuses. You manage to get a half- The producer thinks this makes sense. tant you are to the successful comple- baked game out the door by working As the project continues, more parts tion of the game, and how it’s going to 80-hour weeks, but the big, fat bonus is continued on page 63.

Mike Kelleghan has a few uses for dishonest developers. Pernicious publishers he uses as filler in the cracks left by the last L.A. earthquake, malingering musicians are chopped up for kitty litter, crooked coders are ground into fertilizer for the nature preserve in the backyard, and amoral artists are hung up as window coverings to keep out the light. Honest developers (yeah, both of you) are invited to partake in ruminations about the good old days at [email protected].

GAME DEVELOPER OCTOBER 1999 http://www.gdmag.com SOAPBOX continued from page 64. are late, until it seems like every part is developer to clean up, debug, test, and you tell me how long it’s going to take, late and the whole project is way off finally submit. The objective is that no you’re wrong by x percent, so based on schedule. By the time the producer fig- single person is responsible for the these figures I can hire two new guys, ures out what’s going on, the project is entirety of any single task. This allows have them look over your code without years late, the developer got an extra the junior developer to learn from bothering you, and still have time left year or two out of his or her contract, watching the senior, frees the senior to over.” If your developer is a crook, this and the game ends up canned. focus on what he or she does best, and might be a good time to duck. What’s an honest producer to do? generally allows honest developers to The dastardly developer can’t threat- First, keep a log of every task you assign, grow and expand in their specialty. en to quit and leave your project high and the estimate to completion you get When a dastardly developer springs and dry, because you have a couple of back from the developer. Calculate how the “complicated conundrum,” you can junior programmers that have been fol- far off the actual completion date is pull out the log of the developer’s error lowing in his or her footsteps and have from the developer’s projected date as a rate. A good developer will have a very a good handle on what’s going on. Fire percentage. This is the developer’s stable error rate. A poor developer, or a the turkey, hire a new guru, and when “error rate.” Second, have the star devel- crooked one, will be late by different the project finishes on time, remind oper do about 75 percent of a given percentages every time. With this infor- the publishers about that “on-time” task, and then hand it off to a junior mation you can say, “Gee, every time bonus they promised you. ■

ADVERTISER INDEX 63 NAME PAGE NAME PAGE ATI Technologies 16 Intel 5 Auran Developments Pty. Ltd. 61 Kinetix C2,1 Aureal Semiconductor 11 MathEngine 6 Big Fat, Inc. 60 Metrowerks, Inc. 27 Black Ops Entertainment, Inc. 61 Multigen 13 Busybox.com Inc. 46,47 Newtek Inc. 29 Cinram 62 Numerical Design 8 Conitec Datensysteme GmbH 63 Rad Game Tools, Inc C4 Hewlett-Packard 19 Resounding Technology 60 Digimation 2 Savannah College of Art & Design 61,62 Duck Corp. 23 Sound Werx 15 Evans & Sutherland 21 Vancouver Film School 62 Immersion Corp. C3

http://www.gdmag.com OCTOBER 1999 GAME DEVELOPER