<<

DECEMBER 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

Publisher Down With Global Cynthia A. Blair cblair@mfi.com EDITORIAL Editorial Director Alex Dunne [email protected] Homogenization! Managing Editor Kimberley Van Hooser [email protected] think most of us in this industry As an American, however, I must Departments Editor are pretty happy about the fact admit to having reservations about an Jennifer Olsen [email protected] Art Director that interactive electronic enter- influx of foreign talent. It’s not that I Laura Pool lpool@mfi.com tainment has rapidly become a think American jobs will be stolen by Editor-At-Large I Chris Hecker [email protected] widespread form of entertainment immigrants, nor that I adhere to isola- Contributing Editors around the world. And in case you tionist beliefs. On the contrary, I say Jeff Lander [email protected] didn’t notice, game development itself the more the merrier here in the U.S. [email protected] has spread around the globe with simi- What I fear is the result of a slow, Omid Rahmat [email protected] Advisory Board lar speed. This fact was made abundant- steady exodus of game developers from Hal Barwood LucasArts ly clear to me last year when entries for countries whose game industries are Noah Falstein The Inspiracy the GDC’s Independent Games Festival just beginning to form. I don’t think Brian Hook Verant Interactive Susan Lee-Merrow Lucas Learning poured in from far-flung countries like that’s good for the countries in ques- Mark Miller Harmonix 4 Poland and Pakistan. (That was a bit of tion, nor for their burgeoning commu- Dan Teven Teven Consulting a mind-blower.) It really makes you nities of game developers. Sometimes Rob Wyatt DreamWorks Interactive realize that there’s much more to this all it takes is a few key people leaving a ADVERTISING SALES industry than meets the eye at E3, team to kill a game, and in some coun- National Sales Manager Jennifer Orvik e: jorvik@mfi.com t: 415.905.2156 ECTS, and the Tokyo Game Show. tries, the development of a single com- Publisher Relations Manager What’s becoming increasingly clear to mercial game is a real feat. Ayrien Houchin e: ahouchin@mfi.com t: 415.905.2788 me is that many overseas game develop- I also feel (and I think many would Account Executive, Eastern Region ers want to come to America. I know agree) that our industry needs to Afton Thatcher e: athatcher@mfi.com t: 415.905.2323 this firsthand, because I regularly get explore more game designs, and I fear Account Executive, Western Region Darrielle Sadle e: dsadle@mfi.com t: 415.905.2182 asked to write letters of reference for for- anything that will homogenize game Account Executive, Northern California eign game developers trying to make development. Cultural differences Dan Nopar e: [email protected] t: 415.356.3406 their way through the U.S. Immigration between countries make many titles Account Representative, Silicon Valley and Naturalization Service bureaucracy. extremely entertaining, simply due to Mike Colligan e: [email protected] t: 415.356.3406 While my experience is just anecdotal, their (for lack of a better term) exotic ADVERTISING PRODUCTION I’ve spoken to enough game executives design. When I first saw PARAPPA and Senior Vice President/Production Andrew A. Mickus around the industry to know that many DANCE DANCE REVOLUTION, I knew Advertising Production Coordinator Dave Perrotti American companies actively recruit they weren’t developed in America. Reprints Stella Valdez t: 916.983.6971 overseas game development talent. There is something distinctly Japanese MILLER FREEMAN GAME GROUP MARKETING It’s probably not too tough to entice a about them which I really enjoy. It Marketing Director Gabe Zichermann foreign developer over here. It’s no would be a pity to lose some of that MarCom Manager Susan McDonald secret that American companies pay diversity in favor of Yet Another FPS. Junior MarCom Project Manager Beena Jacob game developers more than those in In the newspaper this morning I read CIRCULATION most other countries (and that probably that French chefs staged a protest in Vice President/Circulation Jerry M. Okabe holds true for most professions). A Paris, in part to voice their anger against Assistant Circulation Director Sara DeCarlo Circulation Manager salary survey conducted last spring by America’s growing economic and mar- Stephanie Blake Assistant Circulation Manager Craig Diamantine the Miller Freeman Game Group (which keting muscle overseas — in this case, Circulation Assistant Kausha Jackson-Crain this magazine is affiliated with) and McDonald’s was the object of their Newsstand Analyst Joyce Gorsuch Market Perspectives revealed that the scorn. The French want no more of our average total salary — including any fast food, music, and movies. They INTERNATIONAL LICENSING INFORMATION Robert J. Abramson and Associates Inc. sort of cash bonus — for an American probably still hold Euro Disney against t: 914.723.4700 f: 914.723.4722 game programmer in the U.S. was us. And while I used to write these com- e: [email protected] $49,991, and the median total salary for plaints off as poor sportsmanship in the a game programmer was $50,000. arena of international business, I’m CEO/Miller Freeman Global Tony Tillin Compare that to a Polish company that coming around to see that it’s impor- Chairman/Miller Freeman Inc. Marshall W. Freeman we recently talked to, which pays its tant to grow our industry outside the President & CEO Donald A. Pazour staff programmer the equivalent of clutches of Uncle Sam. Executive Vice President/CFO Ed Pinedo about five hundred U.S. dollars per Sigh. Maybe a croissant will cheer Executive Vice Presidents Darrell Denny, John Pearson, ■ Galen Poss month. Though the cost of living in the me up. Group President/Specialized Technologies Regina Ridley U.S. is substantially higher, that magni- Sr. Vice President/Creative Technologies KoAnn Vikören tude of a discrepancy lures many for- Sr. Vice President/CIO Lynn Reedy eign game developers away from their Sr. Vice President/Human Resources Macy Fecto native lands.

GAME DEVELOPER DECEMBER 1999 New Products: Lips Inc. yaks it up with Ventriloquist, Microsoft whips out new CE for Dreamcast, and Sonic Foundry takes another trip. p. 9

Industry Watch: Sony seeks desktop real estate, Titus nibbles at Virgin Interactive, and Sierra lets fly an avalanche of canned titles. p. 10

Product Review: Jeffrey Abouaf puts Mirai, Nichimen’s new 3D modeling and animation package, through the News from the World of Game Development wringer. p. 12

es they’ve already saved a lot of time, Dreamcast development is its browser New Products which they can then spend tweaking support. Internet Explorer 4 HTML those faces to perfection instead of Control enables developers to give by Jennifer Olsen sweating the set-up. players access to HTML content from Ventriloquist is appearing first for within a game so they can post high 3D Studio Max 3 at a suggested price scores, link to hints and cheats, and But Does It Walk the Walk? of $595. Versions for Lightwave, Soft- lose some of that excess disposable image, Maya, and others are to follow income with e-commerce functionality. LIPS INC. has developed Ventriloquist, a soon. ■ Microsoft Corp. plug-in designed to aid animators by ■ Lips Inc. Redmond, Wash. 9 automating the complex task of lip- Cary, N.C. (425) 882-8080 synching facial animations to audio (919) 468-7005 http://msdn.microsoft.com/cetools/ files. Typically, facial animation is a http://www.lipsinc.com platform/support.asp grueling process for animators. To do it correctly, one practically needs an advanced degree in linguistics to figure Common Environment Still Uncommon Another Loopy Trip for Musicians out all the phonemes, visemes, and for Consoles every other -eme one needs to master SONIC FOUNDRY introduced a new ver- before a speaking character is ready for MICROSOFT has released the Windows sion of Acid Pro, its groundbreaking its close-up. What Ventriloquist aspires CE Toolkit 2 for the Sega Dreamcast. loop-based music production tool. to do is to let animators plug character With the advent of the Dreamcast, con- When it debuted in 1998, Acid thrilled dialog straight in from one of numer- sole development is finally emerging music professionals with its ability to ous standard audio file formats, and from its smoke-filled room, no longer change tempos without altering pitch. then quickly and painlessly deliver an the arcane process associated with the New to Acid 2 is Sonic Foundry’s output stream of precise morph targets. current, aging generation of consoles. XFX 1 DirectX audio plug-in which The immediate results from this Sega is banking that it will be able to enables real-time tweaking of mixes. It process look admittedly stilted, but a attract more developers already familiar also includes Sound Forge XP 4.5, a one-size-fits-all answer to the infinite with the Windows CE development digital audio editor that lets users cre- range of human (or animal, or robot, environment to their new console. ate and edit loops, synchronize audio or alien) emotion and expression is a Windows CE for Dreamcast means and video, and manage file conversion. tall order. By the time animators are that porting games between Dreamcast Hundreds of royalty-free loops are ready to keyframe the finishing touch- and PC will be relatively easy, and is available that users can simply drag sure to encourage more and drop from the explorer window simultaneous cross- into their track view and arrange into platform development multiple-track creations. Acid automat- since many of the ically adjusts the key and tempo of hardware barriers of incoming loops to keep things from traditional console getting out of whack, which means less development will be dirty work for you, the artiste. mitigated or eliminated Once your magnum opus is com- altogether. Memory- plete, you can output your music to light but feature-rich, .WAV, .MP3, .WMA, or .RM files, the Toolkit of course export as digital audio tracks, or burn incorporates the it on CD with track-at-once CD burn- DirectX library of APIs ing. Acid Pro 2 is available for and is compatible with Windows 95/98/NT 4.0 and carries a Visual C++ and Visual suggested price of $399. Studio. ■ Sonic Foundry Inc. One new feature of Madison, Wis. Ventriloquist brings easy lip-synching to Max. the Toolkit that may (608) 256-3133 prove interesting for http://www.sonicfoundry.com http://www.gdmag.com DECEMBER 1999 GAME DEVELOPER BIT BLASTS - INDUSTRY WATCH

TITUS TAKES VIRGIN INTERACTIVE. BALLARD RESIGNS FROM 3DFX. Industry Watch Acquisitive French publisher Titus con- L. Gregory Ballard tendered his resigna- tinued its expansion by purchasing a tion as chief executive officer of 3dfx by Daniel Huebner controlling interest in Virgin Interact- effective October 31, 1999. Ballard ive, a move that should further bolster spent three years at the company, see- PLAYSTATION GOES DESKTOP. Accord- Titus’s position in Europe. The firm ing revenues grow to more than $400 ing to some reports, Sony plans to fol- gained a 43.9 percent share in Virgin as million. “I truly believe that the chal- low the March release of the Play- part of an earlier deal to take control- lenges in this next phase of the compa- station 2 with a series of desktop ling interest in Interplay. Titus pur- ny’s growth will be more technical workstations based on the console’s chased additional shares to expand than marketing and strategic, and that Emotion Engine processor. SCEA chair- that stake to 50.1 percent and a con- 3dfx can benefit from the fresh per- man and CEO Ken Kutaragi noted that trolling interest in the company. The spective that a new CEO can bring,” the current Emotion Engine is equal to terms of the sale were not disclosed, said Ballard. 3dfx is forming a search Intel’s Pentium III in transistor count, and neither company has yet com- committee, which Ballard himself will and he expects the next-generation mented on its plans. lead, to find a replacement. ■ Emotion Engine 2 to surpass the Pentium when it’s released in 2002. SIERRA PULLS PLUG ON BABYLON 5. In The workstation will be aimed primari- what was billed as a move to “enhance ly at users in broadcasting, film pro- focus on market success,” Sierra killed UPCOMING EVENTS 10 duction, and software development. As off several titles and eliminated 105 we went to press, Sony had yet to com- jobs. The cancellation of DESERT FIGHT- ment on an OS, but it is suspected that ERS and PRO PILOT PARADISE at Dynamix Linux will power the new systems. in Eugene, Ore., sent 60 employees CALENDAR packing. An additional 45 jobs were CODEMASTERS PICKS UP YOSEMITE. A lost with the cancellation of BABYLON closed studio will gain new in the 5, a title that had been relocated to Digital Content Creation so-called “birthplace of computer gam- Bellevue, Wash., after Sierra shuttered ing.” U.K.-based Codemasters has Yosemite Entertainment earlier this LOS ANGELES CONVENTION CENTER announced a plan to open a studio in year. Other titles cut in the restructur- Los Angeles, Calif. December 6–8, 1999 Oakhurst, Calif., a town that gained ing included ORCS: REVENGE OF THE Cost: variable notoriety as the home of Sierra’s first ANCIENTS and the persistent-world pro- http://www.dccexpo.com headquarters 20 years ago. Much of the ject MIDDLE-EARTH. The reorganization staff and management of the new stu- will ultimately see Sierra divided into dio will be veterans of Sierra’s Yosemite three business units: Core Games will Entertainment studio. Craig Alexander, focus on Sierra’s high-profile games Game Developers Conference who served as Yosemite’s general man- and includes HALF-LIFE publisher Sierra HardCore Technical Seminars ager for nearly five years and directed Studios, Impressions Games, Papyrus, games such as PHANTASMAGORIA and Sierra Northwest Studios, and the HYATT REGENCY POLICE QUEST: SWAT, will lead the remaining teams at Dynamix; Casual SAN FRANCISCO AIRPORT group. The studio is expected to start Games will focus on Hoyle card games Burlingame, Calif. with two dozen employees and ramp as well as hunting, fishing, and rodeo PHYSICS: December 6–7, 1999 up to 70 in the coming months. The titles; and Home/Productivity will deal GRAPHICS: December 8–9, 1999 group will keep the Yosemite name, with cooking, gardening, and genealo- Cost: $1,950/each; $3,300/both which was purchased from Havas, and gy titles. http://hardcore.gdconf.com will pursue development of both PC and PS2 projects. AMEN DESIGN STAFF DUMPED. Cave- dog Entertainment, well-known maker Game Developers Conference of strategy games TOTAL ANNIHILATION 1999 RoadTrips and TA: KINGDOMS, cited problems with the technological development WYNDHAM GARDEN HOTEL of its much-anticipated shooter AMEN: San Rafael, Calif. THE AWAKENING as the basis for its deci- December 10, 1999 sion to let go of the entire AMEN design staff and push back the game’s MEYDENBAUER CENTER release date. While Cavedog hasn’t Bellevue, Wash. elaborated on the game’s problems, December 14, 1999 the design staff were praised for their “talent, dedication, and contribution” Cost: $120 ea. (discounts available) and were invited to return to the pro- AMEN: THE AWAKENING has gone into http://roadtrips.gdconf.com hibernation, at least for now. ject when, and if, the development difficulties are resolved.

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

more subtle and far-reaching than the planned for a future release.) While you demo showed: it begins with a work- will occasionally set the camera to the ing environment, which strives to be XYZ orthographic views, the traditional more like a 3D operating system than four-windowed orthographic presenta- a user interface, and builds on this tion is not the intent. To model and with a comprehensive, advanced fea- animate in Mirai, you see the scene ture set. through the camera lens’s perspective. A 3D OPERATING ENVIRONMENT. Some You have a wide choice of lenses, and leading 3D applications have a UI can save multiple viewpoints, animate organized into modules (modeling, camera motions, and attach the camera animating, rendering, and so on); oth- to a path. ers perform all operations within a Mirai is “selection driven” as single perspective window, enhancing opposed to “tool driven.” All 3D pro- this with a series of modeless dialog grams have you select objects, faces, boxes. Each approach has its strengths edges, or vertices, and then perform and limits. Of the former, few, if any, an operation on them, but generally let you work in more than one mod- you choose a tool first. In Mirai, your Nichimen’s ule at a time; of the latter, the single selection defines your options to a interface is usually supplemented by greater degree than in other programs 12 Mirai floating dialogs. Mirai’s designers con- — if you click on the geometry view ceived the interface as a 3D operating while working on the model, you can by Jeffrey Abouaf system, in which modules behave like switch to camera mode where all applications, each complemented actions change your viewpoint, then f you attended Siggraph ‘98 in with its own floating dialogs, yet all click back on an edge or polygon to Orlando and rested your feet at are dynamically linked so changes to bring up a menu of everything you I the Nichimen booth, you saw the one propagate through the others can do to that face. When you first promise of something new in character instantaneously. encounter this, you may find it so animation: Mirai. The promise was This means, for example, you can seamless that you inadvertently realized with the product’s release last have multiple geometry editors, 2D switch from camera mode to object May, followed by unanimously positive paint sessions, 3D paint sessions, and editing without warning — quite dis- critical reception. It brings many firsts UV mapping windows open simultane- concerting. Also, when you’re used to to character animation, and is well ously. In each geometry window, how- manipulators constraining transform worth looking at whether your pas- ever, you control what is visible vs. operations, it’s a little awkward trying sions run to cinematic or real-time 3D. what is hidden — that is, you can dis- to control manipulations in a perspec- The most noticeable innovation is play different objects or sets of scene tive window. Once you understand the degree of skeletal intelligence built objects in different windows, even the orders, however, this is a remark- into the animation module. The first though you’re looking through the ably fast way to work. demo involved a generic bipedal char- same camera from the same vantage Although available for both IRIX and acter performing a gymnastic exercise point. Having isolated objects and NT, Mirai reflects its IRIX roots. — taking two running steps toward a groups this way, you could bring up Nichimen’s N-World (Mirai’s predeces- wall, kicking one foot against the wall one or more 2D and 3D paint windows sor) was deservedly recognized as a pre- to push up and off into a backward showing the isolated objects. Because mier real-time 3D character animation somersault, catching a trapeze, then these editors are linked, as you paint in system. This was when most real-time dropping to the floor. The naturalistic 2D it updates both the 3D view and developers used the SGI platform motion sequence took about two min- any geometry editors. exclusively. When they ported N-World utes, required only eight keyframes, This differs from working in an appli- to Windows NT three years ago, its and was actually usable. The second cation such as 3D Studio Max, in which hefty price tag and high-end hardware part of the demonstration involved you can have more than one instance requirements kept it out of the hands the artist refining and smoothing the of a single viewport, but could not hide of all but the most dedicated, well- model, texture-mapping it, and or show different objects in each one. funded game shops. adding touch-up paint, all from with- (In Max, you’d achieve isolation with Mirai’s “SGI” style comes through in in Mirai, with changes updated across additional cameras in the scene; in its clean interface, with minimal icons all modules in real time. No doubt Maya, you’d accomplish a similar result and no tool tips; you drive it with left, that first demo belied the technologi- by assigning objects to different layers.) middle, and right mouse clicks, with cal advances under the hood, because Mirai operates from a single-camera results dependent entirely on sequence Mirai didn’t ship until the following perspective; you look through this cam- and context. It supports hot keys, but May. Mirai’s power and advantages are era at all times. (Additional cameras are has far too many commands to be hot-key driven. This is wonderful for Jeffrey Abouaf is an artist, animator, and instructor who appears at home in a couple the initiated, but will cause consterna- of institutions in downtown San Francisco. tion for newcomers. The good news is that Nichimen has anticipated the

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

problem with superior printed and Nichimen’s online documentation and tutorials. August 1999 You’ll save a lot of time and minimize update to Mirai frustration if you follow the “Getting introduced “mag- Started” manual before exploring on net moves” along your own. By the time you’re through face normals with with it, you’re comfortably reoriented falloff. This feature and ready to play. allows artists to ONE HELLUVA MODELER. Because of its model by painting roots in real-time 3D, Mirai has one of surface deforma- the most extensive modeling toolsets tions and displace- available. The ability to align and ments. This is bevel vertices, edges, and faces enables handy, for exam- precise, easy control of any object ple, for painting property. In the hands of an experi- extrusions on edge enced artist, edges are quickly aligned loops to create to follow a character’s head and body cheekbones, contours and muscle formations brows, and so on, FIGURE 1. This character shows off the smooth and highly (“Edge Loops”); when these edges are or for painting an detailed work achievable in Mirai. 14 extruded and the mesh area subdivid- extruded layer of ed and smoothed, you achieve high clothing or armor detail and control that rivals any on a character. applied. Changes to the control vol- package. Figure 1 demonstrates the SUBDIVISION MESH MODELING — NO ume update on the high-resolution smooth yet highly detailed work NURBS, B-SPLINES, OR H-SPLINES version. The value, of course, is that achievable in Mirai. ALLOWED. Because if its real-time 3D working with polygons presumes you The 2D and 3D paint modules com- roots, Nichimen has always been a can generate multiple levels of detail plement the extensive materials editor polygonal modeler and never support- (LODs) from the same control vol- and mapping capabilities. Like many ed spline technologies. Building on ume, that surface deformations do not competing packages, Mirai supports the pioneering efforts of Symbolics, change the face count, and that poly- UVW mapping parametrically by pro- and boasting a staff whose credits go gons provide the lowest overhead for jection and face-mapping. You can back to 1980’s Tron, Mirai’s developers texture mapping. Yet the control vol- assign multiple types of mapping were among the first to embrace sub- ume also acts like a lattice deformer, coordinates (such as planar and spher- division-mesh modeling as their tech- in that generating poses or morph tar- ical) to the same selection set, and nology for delivering smooth, organic gets is a very elastic experience. you can composite multiple layers of surfaces, only they followed this FK/IK ANIMATION. Mirai’s FK/IK solution materials on a face selection, taking approach before it became fashion- is to create a stop-motion puppet. advantage of different types of projec- able. They call it “Volume Modeling,” Rather than keyframing each skeletal tions. In addition, Mirai’s painting and the surface the “Derived Surface”; joint rotation, keyframes are set for capability allows you to paint over it amounts to making a low-resolution the entirety, pose to pose. The IK sys- any seams that might result where dif- geometric form, and a reference copy tem uses quaternion algorithms simi- ferent mapping coordinates meet. with high-resolution smoothing lar to those used in other packages, with a second-pass analysis checking for incorrect or less-than-natural motion. Whereas other applications have skeletal motions dependent upon pulling the skeleton along a path, Mirai is about altering poses. The poses can be set by rotating joints and/or by “pinning” bones. This pin- ning can be in the nature of “glue” or a “tack”; if you glue a left foot and pull a right hand, the foot will remain in place as long as possible before pulling away. If you tack a foot, the foot will not move and the hand will move until it slips away. The pins can be temporary; different bones can be pinned or unpinned at different FIGURE 2. Combining Mirai’s various animation effects offers naturalistic results frames. for complex animation sequences. Second, Mirai’s skeleton responds to “magnet” moves, that is, you can

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

move one bone relative to FACIAL ANIMATION: DISPLACE- another specified bone. MENT EQUALS LIP-SYNCH. This allows naturalistic “Displacement” in Mirai is squash and stretch. These what other packages refer features combine, for to as morphing or blend example, to let the charac- shapes — in each case it’s ter crouch (magnet move), isolating a series of facial spring upward (pinned expressions for direct or feet); loop around the indirect use as morph tar- trapeze (feet unpinned, gets in facial animation. hands pinned), and drop Mirai has this capability, as into a crouch. The fairy did N-World before it. The sequence in Figure 2 documentation shows how shows how these work to set up the displace- together. ments, how to “wire” them Mirai supports the most to sliders, and how to use common motion capture the sliders to generate formats (such as Acclaim, unique expressions. Motion Analysis, and Because motion editing 16 Biovision), and can send FIGURE 3. Mirai allows you to stitch two motion sequences supports layers and scripts, the data out to Nichimen’s together and retain control of the transition. setting up displacements Game Exchange utility. for one character implies Nichimen’s current devel- you can adapt these to a opment direction is expanding this motions combine seamlessly into the different characters without starting biomechanical capability. In addition, final sequence, but could also be from scratch. Figure 4 shows Bay Testarossa (which won an Emmy taken apart and recycled. Mirai also Raitt’s Horus character set up for lip- award for its figure skating simula- lets you stitch two motion sequences synching. Note you can see the tions for the most recent Winter together, and gives you full control smoothed version, the connected low- Olympics) has written a set of mo-cap over the transition. Figure 3 shows the polygon modeling version, and the plug-in tools for Mirai, designed to animation editor set up for a transi- slider-driven animated composite all extract added functionality from the tion between two motion clips. Not within the working environment, data files (for more information, see only can you control the speed, num- together with the graphs and timeline http://www.toolsinmotion.com). ber of frames, and other characteris- pertinent to Horus’s speech. Finally, Mirai supports full non- tics for the transition, you can layer Figure 5 shows John Feather’s Grunty linear editing of motion and motion other motions on top of the source character, specifically how you would capture data. For example, you can set clips. Further, with Mirai’s scripting set up to animate him in Mirai. The up a run cycle and loop it (using capabilities you can call and recom- facial features have been wired to slid- motion capture data or keyframing), bine additional premade layers or ers in the Animation Mixer, the charac- then add a second layer of dodging scripts to make complex, unique ter’s hierarchy is laid out in the Anima- and weaving obstacles. The two results. tion: Viewer Graph, and we see the

FIGURE 4. A character set up for lip-synching. All the FIGURE 5. A typical facial animation setup in Mirai, with information pertaining to the character’s speech is shown. all the relevant information at the user’s fingertips.

GAME DEVELOPER DECEMBER 1999 http://www.gdmag.com Excellent Very Good Average Below Average Poor

tainly measures up many of whom have been devotees of to the renderer the competing high-end 3D modeling/ included in the animation packages, who said they had first releases of switched to Mirai for character anima- these competitors, tion production, or would be soon. The and exceeds the consensus among the faithful was that quality of many Mirai’s FK/IK capabilities are at least other packages. one generation ahead of the competi- Like the best of the tion. When I brought this up with the renderers, Mirai’s is many representatives of competitors at multi-threaded. the show, they made it clear they’re For the profession- watching Mirai. als, Mirai will be Mirai is a solid, versatile package adapted to work with cutting-edge character animation with Renderman capabilities. With its highly evolved on IRIX and NT by FK/IK, biomechanics, and facial ani- year’s end. mation capabilities, it’s ready for You can render mainstream use in games and all real- to stills, play them time 3D. But to limit it to this niche is 18 back in real time, to underplay its full capability, and/or compile because the modeling, texturing, them into a movie. painting, and dynamics properties FIGURE 6. The facial animation results: a high-resolution Mirai includes make it as viable for prerendered use, version of the character with four morph targets. compositing tools and compatibility with Pixar’s Render- for layering anima- man targeted for year’s end can only tion and combin- enhance that. The obstacles facing hierarchy of movements in the Anima- ing work with live-action output, Mirai’s entry into the production tion: Script Graph and the Animation titling, and the like. While the post-pro- pipeline appear to have little to do Timeline. The results appear in Figure 6 duction tools are not nearly as extensive with the product, because it looks able which shows the smoothed, high-reso- as the modeling tools, and lack the to compete with the best. Building a lution model of Grunty, together with state-of-the art reflected in its FK/IK, large user base and replacing existing four morph targets. Mirai’s output tools reflect the fact that production systems will prove the PARTICLES, RIGID DYNAMICS, GELATIN, this product has earned a place in both biggest barriers. ■ AND ROPE. Mirai supports both rigid cinematic and real-time 3D production. and soft-body dynamics, allowing you CONCLUSION. Nichimen held its first Acknowledgements Special thanks to Intergraph Computer to set up interactions between objects annual Mirai user meeting at Siggraph Systems for use of a TDZ workstation, and such as collision detection, wind, grav- ‘99. While I was not surprised to see to 3Dlabs for their GVX1 card used to test ity, and so on. The soft-body dynamics several hundred show up, I was sur- Mirai. No virtual humans were damaged include Gelatin and Rope simulations. prised at how many were serious game in the course of preparing this article. Gelatin is intended to simulate jig- artists (averaging ten years’ experience), gling, as in the belly of a fat man or something more exotic/erotic by the heroine/hero. Rope calculates the Nichimen’s Mirai: effect of a tire tethered to a tree Nichimen Graphics Pros: Cons: branch, and should be very useful Los Angeles, Calif. 1. “3D operating system” 1. NT users may have diffi- where any two objects or characters 310-577-0500 interface enables multi- culty with IRIX-inspired are bound together. The particle sys- http://www.nichimen.com ple windows of the same interface. tem responds not only to forces and Price: $6,495. Nichimen type, revealing/hiding turbulence, but can work into simula- 2. Rendering engine as it is also offers a 90 percent different objects, and now is adequate, but not tions as any other object. Further, par- educational discount. hot-linking to other mod- world-class. ticles can be the built-in standard ules such as paint. System Requirements: 3. Needs larger user base shapes or any geometric shape. Windows NT 4.0 or SGI 2. Intelligent IK/FK system OUTPUT: COMPOSITING AND LAYERING before cross-user sup- IRIX 6.3. Both operating is very easy to use in port and third-party ANIMATION. If Mirai has a weakness, it’s systems require 128MB final animation. plug-in development get the renderer. To be fair, however, this RAM, 300MB disk space, 3. Motion capture and fully underway. weakness in Mirai simply means that 300MB virtual memory, motion layering; sophis- the built-in renderer does not rival three-button mouse. ticated support for main Renderman or Mental Ray 2. This Windows requires motion capture systems. review did not pit Mirai’s renderer 266MHz Pentium II plus against the new renderers built into 3D OpenGL accelerator. Studio Max 3 and Maya 2, but it cer-

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

A Clean Start: Washing Away the Millennium

he millennium is coming to a close at the end of the month. While I actually believe that the turn of the century is a year from now, I am going to fight it no longer. The Y2K hype has washed away any chance T of restraining the feeling that something big is about to happen. I for my part am going to toast the ing up with the technology. A flashy new millennium next year, but who Hype and Demos demo can get them press coverage, 23 wants to miss out on the big party? hat brings me to something that I attention from publishers, and that Let’s make it a yearlong celebration. T find annoying in the industry. intangible “hype” from the gaming What the hell, it only happens once News in the high-tech business seems public. Some of this forms the back- every thousand years — I’m going to to surf hype waves constantly. Nothing bone of a healthy development cycle. enjoy it. gets any press unless it has “never However, when the game engine is For the doomsdayers, it’s going to before been seen on a game console!” directing the development of the be a year of hunkering down in their or is “unlike anything ever created in a game, priorities are out of whack. battery-powered shelters, Most gamers fondly recall hoarding food, waiting for games that lacked flashy tech- everything technological to nology yet captured their souls spiral out of control. Many for hours. will be nostalgic for the grand When it became public that old days of mechanical cash 3: ARENA would support registers and supermarket a form of curved surface geom- checkers who knew the actual etry, suddenly this became the prices. However, I look for- must-have feature for 3D ward to the new year. I like all action games. Games were con- things techie and don’t really sidered to be using “old” tech- care if they get the date wrong. nology if their engine didn’t To quote Douglas Adams, I support curved surfaces. This still think digital watches are a happened regardless of pretty neat idea. The year 2000 whether the game had envi- is going to be full of exciting ronments that would benefit new toys for game developers from curves. Programmers had to play with. to go back and retrofit their In fact, if you watch the engines with some kind of news you’ll know that game parametric surfaces. developers are going to get designers had to go back and equipment so sophisticated invent places that would bene- that the government considers fit from some kind of curves. them weapons. This will be the first computer game!” These quotes general- Didn’t matter what they were or year that we create games for home ly come from very early views of tech- where they were used, just as long as machines that can perform more than nology demos or art tests. Any evi- it could be added to the feature list. two billion operations per second. dence of game play or interactive It should be clear to anyone who has Some of the press I’ve read said that experience is completely missing. read this column before that I believe developers aren’t ready to handle that Game companies realize this so a technology can be a strong force in cre- much power. I don’t know what great deal of effort is spent just com- ating a more compelling game experi- sources they have been talking to. I have never met any developers who Whether he’s testing the theories of water displacement while scuba diving or in the didn’t think they could use more tub with his duckie, you can drop Jeff a line at [email protected]. power even on their current projects. http://www.gdmag.com DECEMBER 1999 GAME DEVELOPER GRAPHIC CONTENT

ence. However, technology should not never be the same. What interactive Yes, I Have a Point be turned into a checklist and become demo was shown that elicited these the only determination for a game’s opinions? Some footage of a car dri- want people to realize that technolo- potential for success. The game is what ving through a scene and a duck in a Igy is just a means for achieving a is important. The technology is just a tub of water. result. I hope to discuss techniques that vehicle to enhance the experience for Sure, it was a beautiful car and a cool make you think about ways you can the player. duck. However, it was just a display of attack a particular problem. Hopefully, At E3 this year, I was amazed at the technology and computing power. these ideas can be used on a variety of Playstation 2’s reception. There we Don’t get me wrong. I am certain the platforms in a variety of ways. were at a show filled with amazing Playstation 2 will be an amazing con- For example, let’s take the water games for all platforms. Real-time 3D sole. The hardware looks impressive. effect from the Playstation 2. I think graphics were represented everywhere. Sony has definitely proved they can one of the reasons it was so impressive The level of art was unbelievable. foster the creation of great games and is that water is terribly difficult to rep- Game play and production on every lots of them. They also wanted to build resent in a real-time 3D simulation. It platform from PC to Game Boy were up momentum for the new console, remains hard even for the visual effects very impressive. But what was the and I think they succeeded. They rec- community. They have unlimited poly- “buzz” in the press? The Playstation 2 ognized that technology can be used to gon budgets yet modelers will still demos. The Playstation 2 is going to build hype and anticipation without groan if you ask for realistic water. In revolutionize gaming. Games will even having a game. the early days of real-time 3D games 24 (what was that, like three years ago?), LISTING 1. Processing the height field. polygons were at a premium. You could not represent water with lots of geometry so developers had to create ///////////////////////////////////////////////////////////////////////////////////// animated textures that showed nice // Procedure: ProcessWater rippling water. It was still pretty life- // Purpose: Calculate new values for the water height field less. It could not react to what was ///////////////////////////////////////////////////////////////////////////////////// going on around it and sort of just did void CAguaDlg::ProcessWater() its own thing. { However, with all the billions of oper- //// Local Variables //////////////////////////////////////////////////////////////// ations per second the new millennium int i,j; will offer to developers, we can do bet- float value; ter. You probably have seen waterlike ///////////////////////////////////////////////////////////////////////////////////// ripples as Java web site banners. The for (j = 2; j < WATER_SIZE - 2; j++) effect has been around for years and is { quite simple. It does a good job of simu- for (i = 2; i < WATER_SIZE - 2; i++) lating how ripples will interact with { each other and reflect off barriers. Since // Sample a "circle" around the center point it can be created in Java, it’s obviously value = (float)( not too complex, either. READBUFFER(m_ReadBuffer,i-2,j) + READBUFFER(m_ReadBuffer,i+2,j) + READBUFFER(m_ReadBuffer,i,j-2) + READBUFFER(m_ReadBuffer,i,j+2) + READBUFFER(m_ReadBuffer,i-1,j) + READBUFFER(m_ReadBuffer,i+1,j) + READBUFFER(m_ReadBuffer,i,j-1) + READBUFFER(m_ReadBuffer,i,j+1) + READBUFFER(m_ReadBuffer,i-1,j-1) + READBUFFER(m_ReadBuffer,i+1,j-1) + READBUFFER(m_ReadBuffer,i-1,j+1) + READBUFFER(m_ReadBuffer,i+1,j+1)); value /= 6.0f; // Average * 2 value -= (float)READBUFFER(m_WriteBuffer,i,j); // Values for damping from 0.04 - 0.0001 look pretty good value -= (value * m_DampingFactor); SETBUFFER(m_WriteBuffer,i,j,(int)value); } } SetDisplay(); // Draw and Swap Buffers FIGURE 1. Sampling the water } field.

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

In fact, the effect is really just a form of image processing. scheme. This image ends up looking like a bump map. You Start by creating a double-buffered height array that will hold can see what it looks like to convert the height array into an the values for the water level at each position in the grid. The image in Figure 2. key to making this array behave like water is to determine the This creates a pretty good texture that could be used in a new level at each location. This is done by sampling the sur- 3D environment to simulate a pool or fountain. However, I rounding locations to determine whether the current location can make it even more interesting by applying some envi- should be moving up or down. I chose to sample a rough cir- ronment mapping techniques. The gradient of the water lev- cle around the center point as you can see in Figure 1. els surrounding a location can be used to define “normals” If I wanted to average the water levels over this region, I like you would find on a 3D mesh. I could then trace these would add the values together and divide by 12. However, normals to see where they intersect my environment map. this is where we are going to fake some of the fluid dynam- However, an even faster way is to treat these gradients as off- ics that make this look like water. Water level actually rises sets into the environment map. At position (u,v) in the when the surrounding pressure is increased. Think of Height array: squeezing water in a plastic bottle and watching the water offsetX = height_array(u + 1, v) - height_array(u - 1, v); in the center rise. So, I can think of the water level at each offsetY = height_array(u, v + 1) - height_array(u, v - 1); location as representing the water pressure. When the sourceTexel = (u + offsetX, v + offsetY); water level surrounding a This can be blended with location is high, that has the the height color to create a effect of raising the water shaded reflection, as you can 26 level at the center above the see in Figure 3. However, this surrounding locations. Like- kind of blending is processor- wise, when the surrounding intensive. But, since I eventu- level is low, the pressure is ally want to use this in a real- greatly reduced and the level time 3D environment, why at the center should drop not make use of my graphics below the average. So, card? instead of dividing by 12, I divide the sum of the sur- rounding levels by six, dou- Hardware Help bling the average height. In order to give the water have a nice 3D graphics motion, the height of the cur- Icard that can blend two tex- rent position in the previous tures together without involv- frame is subtracted from the ing the CPU. To make this new calculated height. Now work with my textures, the everything is in motion. How- environment map calculations ever, there is no way to reduce FIGURE 2. A water image. set the UV coordinates for the that motion. I can cause the environment map pass. Most system to lose some energy by of the graphics hardware that applying a damping factor is currently popular with game that is multiplied by the players can blend two textures change in height. That way, I together in a single pass. This can be sure that the field will means that if your hardware come to rest if nothing is can handle it, the blending of changed manually. The code the environment map and for calculating the water level bump map are rendered at is in Listing 1. To get things once. started, I simply write some Once hardware is in charge values directly into the height of the blend, it’s easy to con- array and let it run. trol the amount each image contributes to the final render by using the alpha values. I Viewing the Water can also take advantage of the built-in filtering to smooth now have a height array out the fact that my maps are Ithat animates in a way that of relatively low resolution forms ripples and wakes. I can (say, 128×128). easily turn that height field I can also use the informa- into an image and display it tion I now have to make the by converting the values to FIGURE 3. Environment mapping and shading. scene even more immersive. grayscale or to some color Water consisting of a single

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

map hack I already respond by rising on the other side. described. However, Also, the methods I have discussed do actually using the not account for what is in the water. I normals to generate am interested in simulating the actual the map for the flow of the water. It should be able to reflection makes spill across a terrain as well as form some sense. Real eddies and standing waves. Also, a environment maps height field naturally makes effects such are view-dependent as breaking waves or splashes that flow and require the nor- over into adjacent cells impossible. To mals for calculation. get these kinds of interactions, I need to The next generation make the simulation more complex. I of graphics cards will have to look towards the field of coming out this year computational fluid dynamics (CFD). support cubic envi- Perhaps there are some lessons in that ronment mapping. field for game developers. That will enable But that will have to wait until next effects such as water time. For now, play around with the FIGURE 4. Water made from springs. reflection to be cal- simple image processing method for 28 culated more easily. water. It is easy enough to understand I saw another and you can quickly experiment with a flat polygon looks strange no matter effect recently that really adds to the variety of effects. ■ how interesting the animated texture realism of rendering water. Nvidia has looks. However, I could create the sur- been showing a demonstration of F O R F U R T H E R I N F O face on the same grid as the height Fresnel Reflections where they create a The image-based water effect has been array. If my height array is 128×128, I completely variable reflection based on kicking around so long, I don’t know can create a polygonal grid that is also the viewing angle. It produces a much where it originated. I see it crop up on 128×128. I then use the data in the more accurate reflection image at the Internet forums every couple of months. height array to displace the vertices cost of extra CPU calculations. They A quick pass over the search engines in the water mesh. Now, when the may have some information on their yielded quite a few links: water ripples, the texture not only web site about the technique by now. changes, but the actual surface of the Considering the actual physics of • http://www.remedy.fi/company/ water moves also. This all combines to the water itself, the method I described cool_stuff_data/stone1.shtml create a very realistic looking water here is completely inaccurate. There is A Java-based applet implementing simulation. no physical simulation of water hap- something similar to what I described. Best of all, there are built-in perfor- pening at all. Like many game pro- mance adjustments to make sure it gramming methods, tricks are used to • http://freespace.virgin.net/ runs well on all sorts of systems. If the achieve the desired look without the hugo.elias/graphics/x_water.htm player doesn’t have fast 3D hardware complex calculations. Hugo Elias has a little bit of every- you can use a lower resolution for the These days, however, it’s worth con- thing on his site. The section describ- displacement mesh. If the CPU is older, sidering designating more CPU power ing the water effect is pretty thorough, lower the resolution in the original for methods that increase the dynamic complete with a sample application. height array. You can also turn off the realism in the scene. When I wrote the environment map if fill rate is an issue. column on mass-and-spring systems Also check out: If the player has a really nice system, for cloth animation (“Devil in the • Fournier, Alain, and William Reeves. all features are set at the highest resolu- Blue Faceted Dress: Real-Time Cloth “A Simple Model of Ocean Waves.” tion. This kind of detail adjustment is Animation,” May 1999), it may have Siggraph 1986, Vol. 20, No. 4, pp. critical as the number of possible user occurred to you that a spring system 75–84. configurations increases. could be made to behave like water. I didn’t talk about generating wave Each element in the mesh could be motion via simple trigonometric func- restricted to move only up and down tions. This paper examines this in Improving the Accuracy and each element is connected to its depth. neighbors by springs. You can see this f I generated actual normals, I could in Figure 4. • Kass, Michael, and Gavin Miller. Iimprove the look a bit. For one However, even this method differs “Rapid, Stable, Fluid Dynamics for thing, I could simulate the light diffrac- from the way actual water performs in Computer Graphics,” Siggraph 1990, tion through water. I could then create several ways. One key difference is the Vol. 24, No. 4, pp. 49–55. another environment map represent- way true water behaves when com- If you want to read ahead and learn ing the reflection, which is underneath pressed. The total volume of the water about real-time methods for CFD, the water. I’m not sure that it would should be preserved. If I compress the check this out. look any better than the environment water on one side, the level should

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

No Pain, No Gain: Implementing New Art Technology in QUAKE 3: ARENA

hen beginning a new project, an immediate question that comes to developers’ minds is, “Are we going to use the same technolo- gy or an entirely a new game engine?” A question that pops up W for the artist in particular is, “Do I upgrade to the next version of my art tools or stay where I am?” mated in Alias|Wavefront’s Power Ani- the head and upper body, and would While the answer to the first question mator. The reason I went with Alias is give me more flexibility to create bet- 31 often varies, the answer to the second because fellow artist and id co-owner ter animations at a higher polygon- shouldn’t. had been using it since per-model budget. This system also Spending more than a year or two QUAKE and already integrated it into enabled more realistic and sponta- working on a game means that the the production pipeline. Recombined neous animations, since the lower and tools you started with have invariably by Carmack’s wizardry, the game upper body animations were complete- evolved into their next version or iter- engine animated characters in the ly detached and unrelated unless ation by the time you have finished. game via vertex deformation using a explicitly specified otherwise. Unless you’ve switched mid-project, string of .TRI files exported from Alias For me, the new animation system you have to take the time at the end of as basic, linearly interpolated key- meant I could consolidate the anima- a project to learn the new tools — that frames. Each animation cycle — walks, tions for a single character into one is, if you’re given the time to train and runs, deaths, and so on — were stored file. This in essence rendered the ani- the upgrade of the product itself. as separate files that could be accessed mation file for a character in Q3A a and re-exported to .TRI files whenever “folder” in which sequences are like we wanted. Of course, the immediate pages that the engine references when Changes from Q2 to Q3A problem that comes to mind when animating the game’s characters. creating models and animations this Making changes to the model became a hen we completed QUAKE 2at way is that when any changes are lot easier, to say the least. Another W the end of 1997, we started in made, a plethora advantage of keep- on our next project, QUAKE 3: ARENA. of files must be ing the animations For id, this new project introduced a tweaked and re- in one file was that dramatic departure from the usual first- exported — very it allowed me to person shooter formula. Instead of hav- painful, trust me. utilize a great fea- ing players opposing a horde of blood- Since the ques- ture of Character thirsty monsters while struggling to tion of utilizing Studio: sharing .BIP figure out puzzles and find keys that new technology for files. Character would allow them to escape a a new project is Studio’s ability to labyrinthine maze, QUAKE 3: ARENA moot at id stream different would be all about . Gone (Carmack always animations togeth- was any sort of suspense or story-dri- retools or recreates er via its Flow ven tension. Instead, the game was the game engine for Manager was one of about combat and competition — play- new projects), it came as no surprise the primary reasons I chose Max after ers pitted against other human oppo- when John announced the implemen- Q2 instead of Maya, Softimage, Light- nents or complex, artificially intelli- tation of a new animation system for wave, Nichimen, or any other program. gent bots via a LAN or the Internet. Q3A. The new “tag” system would save Sharing animation data is so important During QUAKE 2, I modeled in storage space by using a single triangle because, in a crunch, I can simply plug Kinetix’s 3D Studio R4 (DOS) and ani- to represent certain body parts such as one character’s animation data into

Paul Steed is a Guy. He likes Guy things: working out, playing pool, drinking beer, and trying hard to stay out of trouble. He happens to make art for computer games and occasionally convinces learned editors he’s a competent enough writer to contribute to their esteemed publications. Write him at [email protected] if you’re bored. Contrary to popular belief, there’s no such thing as too much e-mail.

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

another and make tweaks instead of something like this: having to animate 40 characters create the character, entirely from scratch. This worked assign the Physique only because the sequence of all the modifier to the mesh, character’s animations had to be the animate it in a specific same (for example, three death anima- order of animations tions, then gestures, then walks, then (both body parts runs, and so on). The length and style together, then upper of animations could vary from charac- only, then lower), cre- ter to character, but the basic order ate a small right trian- had to remain the same due to the gle with the point fac- new animation code. ing forward, name it TAG_TORSO, link it FIGURE 2. To combat characters sliding around in (again by assigning place while turning, a “shuffle” was added to give them Match Tag “A” with Tag “B” Physique to it) to the something else to do with their feet. point where the biped n QUAKE 2, each frame of animation spine rotates, and save II exported served as a keyframe for it. Once I had the file saved I’d delete would be preceded with “L_.” We also the engine to interpolate the position the upper body and export the lower determined that the reason the upper 32 of the mesh’s vertices linearly to the body only as a .3DS file (the engine body still appeared stiff was that peo- next saved animation frame. Although couldn’t work with the native Max file ple naturally lead turns with their the frame rate was only 10 frames per format), keeping the tag as a represen- heads. So we detached the head, second, some characters had up to 500 tation of the upper body. (It was linked necessitating a third naming conven- frames of animation to support — not to the skeleton/biped, which the tion (“H_”), as well as a new tag only, say, firing a weapon, but firing a exporter ignored.) I’d then do the same (TAG_HEAD). To counter the problem weapon while standing and firing a for the upper body. of sliding in place while turning, we weapon while crouched. There were no This sucked — mainly because of added a “shuffle” where the character animations of characters firing while having to remember which body part would pick up his feet and turn pro- running or moving, since I couldn’t to delete, and the fact that after doing it grammatically (Figure 2). anticipate where in their stride they for a couple of characters the poor This was really no big deal as all ani- would be when attacking. Of course, artist’s mind can get confused. Also, mations have to be done “in place” for this quickly reveals the limitations of once we got the model to show up in bounding-box consideration. (The the vertex deformation scheme as the the game world by converting the .3DS bounding volume of a model created by character slides all over the place while files to a game-digestible format, the its aggregate vertices equals the area in firing on the move (hence the term animations weren’t quite right. While it XYZ space that registers a hit when fired “skating”), because his body is locked was cool to move the mouse and see upon.) Another change we decided to in the stationary “firing-while-stand- the upper torso move with the “free make was to export the models as ASCII ing” pose. look” motion of the mouse, the upper files instead of .3DS. From the huge Hierarchically, implementing the tag body was stiff. Once you passed a amount of information contained in an system (see Figure 1) meant that the threshold of 30 degrees or so, the feet ASCII file (or in Max’s case, .ASE), the lower body would be the parent and would stay still while the body rotated programmers could cull all the informa- the upper body the child (since the in place. This rotation (like the sliding tion they wanted about normals, UVWs, lower body incorporates locomotion). effect in our previous system) broke the and animation data. Getting a character into the game went illusion of the character having contact This worked much better. The head with the ground, exhibit- detachment as yet another layer in the ing any sense of weight, tag hierarchy made the motion of the and it was generally not a character’s upper torso correspond good thing. So we made almost eerily with the movement of the some changes. mouse. As the mouse moved, the head Instead of deleting any- would move just barely, and then the thing, we just kept every- torso, and then the character would thing in one file and raise and lower his feet as he turned in made sure the different place to look where the mouse was body parts adhered to a telling him to look. Of course, the draw- strict naming conven- back to this was that facial expressions tion. Any file associated and any sort of hair animations went with the upper body out the window. Still, the in-game ani- would be preceded with a mations didn’t quite jibe with how I FIGURE 1. Mesh, skin, and Character Studio biped “U_” (U_TORSO, U_ARM, wanted them to look and definitely dif- with proper tag placement. and so on). Files associat- fered from an orientation standpoint ed with the lower body from their Max file counterparts.

GAME DEVELOPER DECEMBER 1999 http://www.gdmag.com Jane! Stop This Crazy Thing! fter some research, it became clear A to me why the animations were off — it was the stupid tag. I had been linking the TAG_TORSO to the torso of the skeleton or biped (first spine link). This was wrong. I was supposed to be linking it to the pelvis. (I was confused — sue me.) I also misunderstood the fact that the base of the right triangle of the tag was the exact point at which the rotation needed to occur (not the overall area of the triangle as I had thought). After I got that straight, things looked FIGURE 3. Hours of consternation over inappropriate shearing could have been better, but if the pelvis rotated at all or avoided by turning off the animation tags’ Inherit Scale at the start. was otherwise moving inappropriately, the torso of course did its animations from whatever position the sometimes forward. Soon I became frustrated, how- menting and exchanging of e-mails and 33 errant tag told it to. Since the tag repre- ever, because the tag would do this Max files galore, Jeff Yates at Kinetix sents the upper body’s position relative weird shearing thing and the triangle asked me if I had unchecked a particular to its predefined default position (a sin- would try to skew itself in a seemingly option in the Hierarchy options of the gle frame in the animation set), rotating random fashion. mesh. D’ohh. How the heck was I sup- the tag itself during the animations This...drove...me...nuts. posed to know that? (This series of would rotate the base at which the After all kinds of kludgy, inefficient, check boxes is in the Inherit Scale sub- upper body was attached. So, happy mickey-mouse attempts at band-aiding menu of Link Info.) Once I turned the with this second level of “after market” the problem, I resorted to bugging Inherit Scale off for the tag (Figure 3), animation capability, I went and started Character Studio’s developers and ask- the shearing went away and I was rotating the tag so it would always face ing them for help. After much experi- happy...for a while. ARTIST’S VIEW

Then I noticed efforts didn’t share some other prob- the same geometry lems with the torso for both instances moving around of seeing weapons and, clever guy that was...well, I don’t I am, I thought know. about the process The only prob- some more. You see, lem with this new the conversion method of seeing process of .ASE to the weapons was .MD3 (game format) FIGURE 4. QUAKE 2 shotgun (left) vs. QUAKE 3 shotgun: animated hands and field- that it added yet happened via strict of-view-compensated geometry give way to no hands and more attention paid to another shackle to adherence to nam- the weapon’s business end. the weapon ing convention. design con- This basically straints. The field allowed me to have all kinds of props Carmack wanted me to use the same of view while playing the game is at with the file and, of course, made the animations for all weapons (one default least 90 degrees (it can be raised if converter ignore them along with the position, one firing, and one weapon- desired). While it may not quickly be biped geometry (among other things) switch). I balked, saying I wanted to apparent why this is a problem, the dif- 34 through “wrong” naming conven- have different positions for each ficulty lies in how much of the weapon tions. Since the tag at the torso was weapon so the design wouldn’t be dic- you actually see in your view: only the essentially doubled (according to tated by a single grip. Also, how a player end of the barrel. In QUAKE 2 I used Carmack) as the code separated the held a weapon could be noticed from a animated hands and squished, unique upper and lower body, why couldn’t I distance and be an additional cue for geometry to make the weapons in view double the pesky tag, name it some- ordinance recognition. Well, I didn’t get look interesting and, more important- thing besides TAG and use it as refer- my way but I did get one extra default ly, to simulate the right perspective. ence? This way I could see why the position for a melee weapon (the So, using mostly artist/owner Adrian upper body wasn’t seating properly on Gauntlet). This sort of compromise Carmack’s cool designs, I went about the lower body. occurs all the time when you pit tech- making weapon models that were equal- So that’s what I did and, lo and nologically-constraining frugality (keep- ly appealing in both the normal view behold, there were some discrepancies ing the memory requirements low and the in-use view. Do I make it cen- (mainly due to the mostly goofy IK begets a faster-running game, obviously) tered, held to the right, the left, what? solution Character Studio uses for the vs. artistic expression. In the end, I settled on a slightly-to-the- upper body). Utilizing the oft-unsung Another artistic hurdle was the fact right position that corresponded to the “snap to vertex” power of Max’s Grid that my programming leader wanted to animation of the characters when they and Snap Setting dialog box , I adjusted implement the tag system in the changed weapons (see Figure 5). the position of the tag and made sure it weapon as well. This would save even I solved the tag issue by first building matched my reference tag at the base more space and do what we hadn’t a weapon that I positioned in the char- of their respective right triangles. done in Q1 or Q2: use the same model acter’s hands with a comfortably for both the “in-use” view of the aggressive stance, settling on a semi- weapon and the weapon you see in the sniper position. I took this first weapon This Is My Weapon, This Is My Gun... world. The reason the previous two and embedded a copy of the tag I used for the torso and the head into the aving mastered the basic weapon. The reason for the tag Hmechanics of the new tag sys- attachment was so that I could link tem it was time (naturally) to make the weapon to the character’s right some more changes. People com- hand (having positioned it correct- plained about the difficulty of see- ly). That way, after I had complet- ing which weapon they held in Q2. ed the character’s animations and Mod authors quickly rectified this was ready to export the file, I could by adding customized code that create a snapshot of the weapon, allowed players to see their delete all vertices except for the tri- weapons during deathmatch. In angle, rename it TAG_WEAPON, Q3A, we decided to go ahead and assign Physique to it, link it to the implement the multiple weapons, right hand, and finally delete the but added a “weapon-switch” ani- original weapon (or keep it under a mation. This departed from garbage name for reference). QUAKE’s original instant weapon- As far as the commonly held grip switch that the diehard fanatics FIGURE 5. The final design for Q3A’s weapons dictating the design of the weapon, were clamoring for even during Q2 also incorporated the animation tag system. I think we ended up with a pretty (Figure 4). varied arsenal despite the limita-

GAME DEVELOPER DECEMBER 1999 http://www.gdmag.com tion. Once I completed a weapon I just action. Luckily, he’s the type of guy benefit of your opponents. Why not placed it over the top of my archetypal who, once shown something, can be give them a show? first weapon (aligning the grips so they convinced to bend a little for art’s sake. matched), deleted all the first weapon’s A good example of this was my hell- vertices except for the tag again, and bent desire to have swimming anima- The Moral of the Story saved the new weapon off with a tag in tions in the game. Why do we need the exact same position as the one in swimming? he’d ask. Because it’ll look he character animation technolo- the first weapon. Thus, when I went cool, was my reply. Sure enough, T gy was but one of several changes through the process of animating and Carmack — doubtful yet accommodat- we made for the art in QUAKE 3: ARENA. exporting weapons, they all had their ing — put the swim animation in and In fact, even though it’s a QUAKE prod- tags in the right place. everyone went “Ahhh...” or “Ooooh...” uct, Q3A’s code shares similarities with He became a believer. its esteemed predecessors strictly by Another case was the jump anima- virtue that it’s 3D and from id Soft- And What About Style? tions. I was given one paltry frame to ware. Carmack was continually refin- represent a recovery from jumping for- ing and optimizing the technology in nough about the mundane and ward or backward (two separate anima- all aspects of the game up until the E tedious assimilation/accommoda- tions). Characters in our game jump the very end of development. tion of the technology into the work- equivalent of 20 feet in the air — cer- As for my part in the implementation flow, what did I actually do with it? tainly they needed to be able to recover of the animation changes, more lucid Now that’s a great question! I made from that kind of air time. So I used up communication with the programmer 35 some pretty cool models (textured by five to ten frames for recovery, and it on some issues would saved me some the incomparable Kenneth Scott) with turned out much better. time and trouble. But it took trial and some pretty cool animations...and I had And since there were two kinds of error — many, many iterations and to fight for them the entire time. Of jumps, I decided to differentiate the more than a smidgen of perseverance — course, Carmack’s minimalist philoso- backward one by making the character to make it work. That’s what integrating phy towards things such as vertices, do a back flip as he jumped. Who cares new technology is about: sticking it out faces, texture map size, and total frame that your view doesn’t change during and always trying to find a better solu- counts was at direct odds with my the flip? This is a first-person game, tion to the problem at hand. That’s one grandiose plans to create some high- remember? Everything about your char- of the things that makes this type of flying, John Woo–style, highly kinetic acter is done for the enjoyment and work so challenging and rewarding. ■ by Omid Rahmat HARD TARGETS

The Integrated PC: More Consumers with Fewer Choices

t’s always nice to note the surge in demand that accompanies the latest 3D graphics or audio product release. It’s a sign of the health of high-end technolo- gies, and consumers’ insatiable appetite for a better multimedia experience. I Fashionable technologies also make it difficult for game developers to predict the amount of devotion they should (GMCH). It’s a long moniker, but in lavish on “the next great thing.” To short, the graphics portion of the 810 Integration’s Impact on the Market 37 add to developers’ woes, there is the chipset has integrated hardware motion ntel isn’t the only game in town, but current growth in low-cost PC systems, compensation for software DVD video, Iits roadmap and gentle guidance, if in which graphics and audio functions as well as a digital video output port you will, determine which way the PC are integrated into chipsets in the enabling connections to a traditional industry goes. NeoMagic, a maker of motherboard, and multimedia process- television or flat-panel display. There is graphics chips for laptops, has been es are passed off to more powerful also an integrated Audio creating integrated parts CPUs that are left idling until software Codec 97 (AC-97) con- for some time, but in the catches up. The question is, are game troller that allows software desktop space there are developers reducing their total avail- audio and modem func- Mainstream PC 1 companies such as Silicon able market (TAM) by not targeting the tionality using the host $1,000–1,200 Integrated Systems (SiS), base level of performance that these CPU. There’s a lot more Intel 810e chipset Via, and a host of graphics systems offer? electronics than that, but 810e DC133 chip vendors who all have suffice it to say that there the same idea for the low- is a measure of 2D, 3D, cost PC market. There are Putting It All Together and audio functionality no hard and fast rules built into the chipset that Value PC 3 about what integration ntel is the big cheese of integration. helps negate the need for $800–999 means though, and the

IThis year, the company formally extra peripherals — or so Intel 810e chipset breadth of offerings will announced that it was getting out of the the thinking goes. 810e DC133 probably end up being a discrete graphics chip business. In other The 810e is aimed at the very confusing jumble of words, it wasn’t going to make separate market for Pentium II and features. For instance, the graphics components. Some attributed Pentium III chips, while Value PC 2 SiS 620 chipset doesn’t the move to the lackluster performance the original 810 is aimed at $600–799 have all the features of the and market share of the company’s 740 the Celeron and Pentium Intel 810e chipset 810 (such as AC-97 sup- 810e DC100 graphics chip. Intel has never been shy II markets. The basic differ- port) and it is primarily to abandon or change tactics, products, ences between the various appearing in very low-cost and initiatives when it sees its core busi- flavors of the 810 are the Value PC 1 corporate PCs. What may ness of selling CPUs threatened. An amount of cache memory < $600 be interesting down the integrated PC is one in which the graph- they allow, as well the way Intel 810L road is something such as ics and audio components can be they interface to the PCI the Aladdin TNT2, a col- thrown into the logic chips that control and IDE buses. As you go laborative effort between FIGURE 1: Intel’s the flow of data from the CPU to memo- higher up the food chain, overview of how its Acer Laboratories Inc. ry and various controllers. The result is the graphics improve, the integrated products (ALi) and Nvidia. Intel fewer components required, and more PCI slots are more numer- fit in to the PC mar- used the core graphics money left on the table for the CPU. ous, and the bus perfor- ket, by price segment. technologies of its 740 The mainstay of integration for Intel mance gets faster. chipset, but Nvidia is look- is the 810 Whitney chipset and its latest update, the 810e. At the heart of the Omid Rahmat is the proprietor of Doodah Marketing, a digital media consulting 810 chipset is a memory controller with firm. He also publishes research and market analysis notes on his web site at built-in graphics technology, called the http://www.smokezine.com. He can be reached via e-mail at [email protected]. 82810 graphics memory controller hub http://www.gdmag.com DECEMBER 1999 GAME DEVELOPER HARD TARGETS

FIGURE 2. Shipments of integrated parts in desktop PCs in millions of units FIGURE 3. Breakdown of integrated (source: Mercury Research). systems deployed by market seg- 80 ment (source: Mercury Research).

70 73.6 60 60.7 Notebook 50 15%

40 43.5 Business 30 50% Consumer 20 35% 18.5

unit shipment in millions 10 6.8 0 1998 1999 2000 2001 2002

38 ing to bring an altogether different So Where Does That Leave the Game CPU cycles and are sometimes the only level of performance to the low-cost PC Developer? justification for a powerful new system. market. And they aren’t the only ones. The low-end users in the PC market, on Intel’s Whitney chipset holds about ntegrated PCs are not going away. the other hand, are more likely to be 80 percent of the market, according to IThey are an expanding market and a attracted by a bundle’s value because of Dean McCarron, principal analyst at very hot growth area for the PC indus- their price sensitivity. PC makers are Mercury Research, and provides graph- try. By ignoring this market, developers beginning to realize that they need to ics performance on par with a Matrox are reducing their TAM, which may be a sell their systems on more than just G200, or a little better than an ATI Rage conscious creative choice. After all, MIPS and hardware configurations. In Pro. The market for these products is some may not be happy compromising short, there is a growing opportunity still too young to judge the impact of the quality of their game graphics and offered by integrated systems, but it integrated technologies, but Figures 1 audio. In time, it will certainly be a sup- comes at the price of a step back, cer- and 2 may put things in perspective. port issue for game developers because tainly in graphics technology, and to Obviously, the data suggest that inte- games are getting more sophisticated in some extent in audio technology, too. grated systems are going to take a sig- their technology, not less so. There is an opportunity for the game nificant slice of the PC market. In the However, there is a new demographic industry to increase its TAM, develop consumer space, the primary market is entering the market as a result of these new OEM relationships, and bring new for Internet-ready, low-cost PCs. The lower-cost integrated machine sales, the consumers into its fold. What remains good news is that these types of PCs are kind of user that can be lumped under to be done is to acquire a clear under- attracting first-time PC buyers, very the heading of mass market. The game standing of this demographic. That similar to the way the iMac has also industry doesn’t quite understand the may not come for some time. drawn in a new crowd of computer mass market yet, a fact quite evident by I am reminded of early days of the users. These newcomers are going to the seemingly endless parade of DEER multimedia PC business, when hard- want to do everything else their com- HUNTER knockoffs. It will be a while ware and software vendors misunder- puters offer, including play games. before the game industry figures out stood the needs of a market in which There is another dynamic of the inte- how to target a user base that is highly consumers were grabbing CD-ROM grated PC market that game developers motivated by the Internet, and less san- upgrade kits at $500 a pop, and bring- might find interesting. According to guine about traditional gaming. Further- ing home $2,000 PCs by the cartload. McCarron, more audio add-ons are more, this is a demographic that is The result was a mountain of useless going into the consumer market than being weaned on low-cost hardware and multimedia CDs, and a crash in the PCs sold. These add-ons are primarily budget software. price of some multimedia peripherals. high-end audio upgrades and 3D posi- There is also a unique bundling The hardware and software industries tional audio products such as Creative opportunity for the game industry. The need to do a better job with this new Labs’ SoundBlaster Live! card. How- low-cost PC is going out with fewer batch of consumers, and it all starts ever, this is not yet happening on the new software titles in some cases, but online. AOL is using Compuserve graphics side, though it may still be too often with a greater number of older memberships and $400 rebates on con- early to tell. On 810 motherboards you titles. As such, it may be an ideal mar- sumer PCs to attract new users, and it can’t even get a graphics upgrade, and ket for resurrecting the overall OEM seems to be working. The game indus- there is every indication that PC mak- market for games. In the past, I have try needs to come up with new busi- ers are finding it easier to upgrade their addressed the OEM opportunities asso- ness models to deal with the mass mar- integrated-systems buyer to better ciated with the high end of the PC ket, or it may just end up being a quality audio than graphics. market, where games eat up the most passing fancy as well. ■

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

hile HALF-LIFE has seen Yes, we had some cool monsters, but if you didn’t fight

resounding critical and financial them exactly the way we had planned they did really stupid

success (winning over 50 Game of things. We had some cool levels, but they didn’t fit together the Year awards and selling more than a million copies world- well. We had some cool technology, but for the most part it wide), few people realize that it didn’t start out a winner — in only showed up in one or two spots. So you couldn’t play the fact, Valve’s first attempt at the game had to be scrapped. It game all the way through, none of the levels tied together was mediocre at best, well, and there were and suffered from the serious technical prob- typical problems that lems with most of the plague far too many game. There were some 41 games. This article is really wonderful indi- about the teamwork – THE CABAL vidual pieces, but as a or “Cabal process” — whole the game just that turned our initial, Valve’s Design Process wasn’t working. less than impressive For Creating HALF-LIFE The obvious answer version of HALF-LIFE was to work a few more into a groundbreaking By Ken Birdwell months, gloss over the success. worst of the problems

and ship what we had.

Paving the Way with Good Intentions For companies who live and die at the whim of their pub-

ur initial target release date was November 1997 — a lishers, this is usually the route taken — with predictable Oyear before the game actually shipped. This date results. Since Valve is fairly independent, and since none of would have given Valve a year to develop what was in essence us believed that we were getting any closer to making a a fancy QUAKE TC (Total Conversion — all new artwork, all game we could all like, we couldn’t see how a month or two new levels). By late September 1997, nearing the end of our would make any significant difference. At this point we had original schedule, a whole lot of work had been done, but to make a very painful decision — we decided to start over there was one major problem — the game wasn’t any fun. and rework every stage of the game.

Ken is senior developer at Valve and has contributed to a wide range of projects in the last 15 years, most recently on animation and AI for HALF-LIFE. Previous projects include satellite networking, cryptography, 3D prosthetic design tools, 3D surface reconstruction, and in-circuit emulators. Oddly enough, Ken dropped out of studying EE to pursue a fine arts degree at The Evergreen State College, which he considers far more relevant to creative thinking than any silly differential equations class. You can reach him at [email protected].

http://www.gdmag.com DECEMBER 1999 GAME DEVELOPER HALF-LIFE LESSONS

Fortunately, the game had some side the player’s control. If the players their name. Our basic theory was that if things in it we liked. We set up a small are in the mood for more action, all the world ignores the player, the player group of people to take every silly idea, they need to do is move forward and won’t care about the world. every cool trick, everything interesting within a few seconds something will A final theory was that the players that existed in any kind of working happen. should always blame themselves for state somewhere in the game and put The second theory we came up failure. If the them into a single prototype level. with is the theory of player game kills When the level started to get fun, they acknowledgment. This means them off with added more variations of the fun that the game world must no warning, things. If an idea wasn’t fun, they cut acknowledge players every time then players blame the game and cabal \ka-’bal\ :to unite in a small party; to promote start to dislike private views and interests by intrigue; to intrigue; to plot. it. But if the game hints it. When they needed a software fea- they perform an action. For exam- that danger is ture, they simplified it until it was ple, if they shoot their gun, the imminent, something that could be written in a world needs to acknowledge it show players a few days. They all worked together on with something more permanent way out and 42 this one small level for a month while than just a sound — there should Conceptual artwork for a they die any- the rest of us basically did nothing. be some visual evidence that ceiling-mounted monster way, then When they were done, we all played it. they’ve just fired their gun. We that was dangerous to both they’ll consid- It was great. It was Die Hard meets Evil would have liked to put a hole the player and the player’s er it a failure Dead. It was the vision. It was going to through the wall, but for techni- enemies. on their part; be our game. It was huge and scary and cal and game flow reasons we they’ve let the going to take a lot of work, but after really couldn’t do it. Instead we game down seeing it we weren’t and they need to try a little harder. going to be satisfied When they succeed, and the game with anything less. rewards them with a little treat — All that we needed to scripted sequence, special effect, and so do was to create on — they’ll feel good about them- about 100 more lev- selves and about the game. els that were just as fun. No problem. Secret Societies

hroughout the first 11 months of So, Tell Me About T the project we searched for an offi- Your Childhood cial “game designer,” — someone who could show up and make it all come he second step in together. We looked at hundreds of T the pre-cabal resumes and interviewed a lot of process was to ana- promising applicants, but no one we lyze what was fun Many of our scripted sequences were designed to give the looked at had enough of the qualities about our prototype player game-play clues as well as provide moments of we wanted for us to seriously consider level. The first theory sheer terror. them the overall godlike “game design- we came up with was er” that we were told we needed. In the the theory of “experi- end, we came to the conclusion that ential density” — the amount of decided on “decals” — bullet nicks and this ideal person didn’t actually exist. “things” that happen to and are done explosion marks on all the surfaces, Instead, we would create our own ideal by the player per unit of time and area which serve as permanent records of by combining the strengths of a cross of a map. Our goal was that, once the action. This also means that if the section of the company, putting them active, the player never had to wait too player pushes on something that together in a group we called the long before the next stimulus, be it should be pushable, the object “Cabal.” monster, special effect, plot point, shouldn’t ignore them, it should move. The goal of this group was to create action sequence, and so on. Since we If they whack on something with their a complete document that detailed all couldn’t really bring all these experi- crowbar that looks like it should break, the levels and described major mon- ences to the player (a relentless series it had better break. If they walk into a ster interactions, special effects, plot of them would just get tedious), all room with other characters, those char- devices, and design standards. The content is distance based, not time acters should acknowledge them by at Cabal was to work out when and how based, and no activities are started out- least looking at them, if not calling out every monster, weapon, and NPC was

GAME DEVELOPER DECEMBER 1999 http://www.gdmag.com HALF-LIFE LESSONS

group would find themselves sitting through two or three meetings with no Tips For a Successful Cabal ideas at all, then suddenly see a direc- tion that no one else saw and be the • Include an expert from every func- Maybe they’ll like it next month. main contributor for the remainder of tional area (programming, art, and so on). • Only plan for technical things that the week. Why this happened was Arguing over an issue that no one at the either already work, or that you’re sure unclear, but it became important to meeting actually understands is a sure will work within a reasonable time before have at least five or six people in each way to waste everyone’s time. play testing. Don’t count on anything that meeting so that the meetings wouldn’t • Write down everything. won’t be ready until just before you ship. stall out from lack of input. Brainstorming is fine during the meet- Yes, it’s fun to dream about cool technol- The Cabal met four days a week, six ings, but unless it’s all written down, your ogy, but there’s no point in designing the hours a day for five months straight, best ideas will be forgotten within days. game around elements that may never be and then on and off until the end of The goal is to end up with a document finished, or not polished enough to ship. the project. The meetings were only six that captures as much as is reasonable If it’s not going to happen, get rid of it, hours a day, because after six hours about your game, and more importantly the earlier the better. everyone was emotionally and physi- answers questions about what people • Avoid all one-shot technical ele- cally drained. The people involved need to work on. ments. Anything that requires engineer- weren’t really able to do any other • Not all ideas are good. These include ing work must be used in more than one work during that time, other than read 44 yours. If you have a “great idea” that spot in the game. Engineers are really e-mail and write up their daily notes. everyone thinks is stupid, don’t push it. slow. It takes them months to get any- The initial Cabal group consisted of The others will also have stupid ideas. If thing done. If what they do is only used three engineers, a level designer, a you’re pushy about yours, they’ll be pushy once, it’s a waste of a limited resource. writer, and an animator. This repre- about theirs and you’re just going to get Their main goal should always be to cre- sented all the major groups at Valve into an impasse. If the idea is really good, ate tools and features that can be used and all aspects of the project and was maybe it’s just in the wrong place. Bring it everywhere. If they can spend a month initially weighted towards people with up later. You’re going to be designing and make everyone more productive, the most product experience (though about 30 hours of game play; if you really then it’s a win. If they spend a week for not necessarily game experience). The want it in it’ll probably fit somewhere else. ten seconds of game play, it’s a waste. Cabal consisted only of people that had actual shipping components in the to be introduced, what skills we ster” for quite some time. Other areas game; there were no dedicated design- expected the player to have, and how were created without a specific spot in ers. Every member of the Cabal was we were going to teach them those the game. These designs would sit in someone with the responsibility of skills. As daunting as that sounds, this limbo for a few weeks until either it actually doing the work that their is exactly what we did. We consider became clear that they weren’t going to design specified, or at least had the the Cabal process to have been wildly fit, or that perhaps they would make a ability to do it if need be. successful, and one of the key reasons good segue between two other areas. The first few months of the Cabal for HALF-LIFE’s success. Other portions were created to high- process were somewhat nerve wracking Cabal meetings were semi-structured light a specific technology feature, or for those outside the process. It wasn’t brainstorming sessions usually dedicat- simply to give the game a reason to clear that egos could be suppressed ed to a specific area of the game. During include a cool piece of geometry that enough to get anything done, or that a each session, one person was assigned had been created during a pre-cabal vision of the game filtered through a the job of recording and writing up the experiment. Oddly enough, when try- large number of people would be any- design, and another was assigned to ing to match these artificial constants, thing other than bland. As it turned draw pictures explaining the layout and we would often create our best work. out, the opposite was true; the people other details. A Cabal session would typ- We eventually got into the habit of involved were tired of working in isola- ically consist of a few days coming up placing a number of unrelated require- tion and were energized by the collabo- with a mix of high level concepts for the ments into each area then doing our rative process, and the resulting given area, as well as specific events that best to come up with a rational way to designs had a consistent level of polish sounded fun. fit them together. Often, by the end of and depth that hadn’t been seen Once enough ideas were generated, the session we would find that the ini- before. they would be reorganized into a rough tial idea wasn’t nearly as interesting as Internally, once the success of the storyline and chronology. Once this all the pieces we built around it, and Cabal process was obvious, mini-Cabals was all worked out, a description and the structure we had designed to were formed to come up with answers rough sketch of the geometry would be explain it actually worked better with- to a variety of design problems. These created and labeled with all the key out that initial idea. mini-Cabals would typically include events and where they should take During Cabal sessions, everyone con- people most effected by the decision, place. We knew what we wanted for tributed but we found that not every- as well as try to include people com- some areas of the game from the very one contributed everyday. The meet- pletely outside the problem being start, but other areas stayed as “out- ings were grueling, and we came to addressed in order to keep a fresh per- doors” or “something with a big mon- almost expect that about half of the spective on things. We also kept mem-

GAME DEVELOPER DECEMBER 1999 http://www.gdmag.com The team explored a variety of visual metaphors that resulted in some very unique and effective opponents. bership in the initial Cabal somewhat flexible and we quickly started to rotate people through the process every month or so, always including a few people from the last time, and always 45 making sure we had a cross section of the company. This helped to prevent burn out, and ensured that everyone involved in the process had experience using the results of Cabal decisions. It’s important to include information on the intended path through the level, as The final result was a document of well as rough geometry and character placement. more than 200 pages detailing every- thing in the game from how high but- tons should be to what time of the day it was in any given level. It included rough drawings of all the levels, as well Play-Testing Tips as work items listing any new technol- ogy, sounds, or animations that those • Watch your play-testers and let them of the players who aren’t as good as you. levels would require. do what they want. If they keep trying to Some of those players will be really, real- We also ended up assigning one per- do something silly, don’t get upset — fig- ly bad. Tough — they’ve paid their $50 son to follow the entire story line and ure out why they want to do it and how to and they deserve to be entertained. Make to maintain the entire document. With accommodate them. We originally added the difficult level something you can play a design as large as a 30-hour movie, breakable crates to the game simply as a without too much trouble. Make the easy we ended up creating more detail than technological feature that we wanted to level so easy that you can’t imagine any- could be dealt with on a casual or part- show off. There was nothing in them, the one not being able to win on it. Then, time basis. We found that having a crates just broke. We thought games with make it a bit easier. If you get lucky, half professional writer on staff was key to secrets hidden in crates were lame. After your players will be able to finish. this process. Besides being able to add the tenth play-tester in a row went through personality to all our characters, his and painstakingly broke every single crate ability to keep track of thematic struc- in the entire game and never got any tures, plot twists, pacing, and consis- reward but just kept doing it (because they tency was invaluable. just knew if they just tried long enough they’d get the hidden reward) we caved. We went back and redesigned levels to Pearls Before Swine have crates with goodies in them, and a reason to need those goodies. It was a lot y the second month of the Cabal, of work, but the remaining play-testers B we (the “swine”) had enough of were a lot happier. the game design to begin development • Your game is too hard. It just is. on several areas. By the third month, You’re most likely an expert player at the we had enough put together to begin game you’re developing and it’s doubtful This creature was initially designed play testing. that there are more than a handful of as a friendly character, but play-test- A play-test session consists of one out- players in the world who are better than ing revealed players’ tendencies to side volunteer (Sierra, our publisher, you. You don’t need to care about them, shoot first and ask questions later. pulled play-testers from local people you need to care about the 99.9 percent who had sent in product registration http://www.gdmag.com DECEMBER 1999 GAME DEVELOPER HALF-LIFE LESSONS

cards for other games) play- we automatically saved the ing the game for two hours. game at regular intervals, if Sitting immediately behind the play-testers crashed the them would be one person game we would usually from the Cabal session that have something not too far worked on that area of the from where they encoun- game, as well as the level tered the bug. Since these designer who was currently files would even work if the the “primary” on the level code base they were testing being tested. Occasion- was several versions old, it ally, this would also include made normally rare and an engineer if new AI need- hard to duplicate bugs rela- ed to be tested. tively easy to find and fix. Other than starting the Our save game format game for them and reset- allowed us to add data, ting it if it crashed, the delete data, add and delete observers from Valve were code (we even supported not allowed to say any- function pointers) at will, thing. They had to sit there Letting players see other characters make mistakes that they’ll without breaking anything. 46 quietly taking notes, and need to avoid is an effective way to explain your puzzles and This also allowed us to were not allowed to give add tension and entertainment value. make some fairly major any hints or suggestions. changes after we shipped Nothing is quite so hum- the game without interfer- bling as being forced to watch in and the game could be played most of ing with any of our players’ hard-won silence as some poor play-tester stum- the way through, it became mostly a saved games. bles around your level for 20 minutes, matter of fine-tuning. To do this, we unable to figure out the “obvious” added basic instrumentation to the answer that you now realize is com- game, automatically recording the No Good Deed Goes Unpunished pletely arbitrary and impossible to fig- player’s position, health, weapons, ure out. time, and any major activities such as ntil the Cabal process got under- This was also a sure way to settle any saving the game, dying, being hurt, U way, technology was added to design arguments. It became obvious solving a puzzle, fighting a monster, HALF-LIFE freely. It was assumed that “if that any personal opinion you had and so on. We then took the results we build it, they will come,” meaning given really didn’t mean anything, at from a number of sessions and graphed that any new technology would just least not until the next play-test ses- them together to find any areas where naturally find a creative use by the con- sion. Just because you were sure some- there were problems. These included tent creation folks. A prime example of thing was going to be fun didn’t make areas where the player spent this fallacy was our “beam” effect, basi- it so; the play- cally a technique for doing highly tun- testers could able squiggly glowing lines between two still show up points; stuff like lightning, lasers, and and demon- mysterious glowing beams of ener- strate just how wrong you really were. gy. It was added to the A typical two-hour play-test session engine, the parameters would result in 100 or so “action too were exposed, and an items” — things that needed to be long e-mail was sent out fixed, changed, added, or deleted from without explaining it. The result the game. The first 20 or 30 play-test any encoun- was … nothing. After two sessions were absolutely critical for ters (boring), months only one level teaching us as a company what ele- too long with designer had put it in a ments were fun and what elements too much map. Engineering was were not. Over the course of the pro- health (too easy), baffled. ject we ended up doing more than 200 too long with too During the Cabal process, we real- play-test sessions, about half of them little health (too ized that although the level designers with repeat players. The feedback from hard), all of which knew of the feature, they really had no the sessions was worked back into the gave us a good idea as to where they clear idea of what it was for. The para- Cabal process, allowing us to preemp- were likely to die and which positions meters were all very cryptic, and the tively remove designs that didn’t work would be best for adding goodies. wrong combinations would cause the well, as well as elaborate on designs Another thing that helped with beams to have very ugly-looking that did. debugging was making the “save effects. There were no decent textures Toward the middle of the project, game” format compatible between the to apply to them, and setting them up once the major elements were in place different versions of the engine. Since was a bit of a mystery. It became very

GAME DEVELOPER DECEMBER 1999 http://www.gdmag.com HALF-LIFE LESSONS

seemed to add a bit of overhead to everything, but it had the important Second-Order Effects characteristic of getting everyone involved in the creation process who arly in the development of fact trivial. About an hour later, the char- were personally invested in the design. HALF-LIFE, skeletal animation acters in the game could talk. Once everyone becomes invested in was added solely for compres- Of course, that wasn’t the end of it. the design as a whole, it stops being E sion reasons; we needed to be Since the Cabal had just started, and separate pieces owned by a single per- able to store a lot more frames of anima- since we now had a solution to the prob- son and instead the entire game design tion in fewer bytes than were required by lem of how to explain to the player what becomes “ours.” vertex animation. The DSP effects and the was going on — now other characters This “ours” idea extended to all lev- reworking of the sound system, were could tell them — it was time to rework els. Almost every level in the game added solely for the ability to add echo our existing designs. With the ability to ended up being edited by at least three and other single-processing effects. talk to the player, we now needed some different level designers at some point Adding a mouth to the various humanoid character in the game that the player in its development and some levels models was solely for the humor value of would actually want to talk to instead of were touched by everyone. Though all having the scientists scream while play- just killing right away. We decided that the level designers were good at ing specific scripted sequences. Each by the trigger-happy security guard mon- almost everything, each found they itself was considered complete. ster — originally designed as an easy enjoyed some aspect of level design 48 Then the animator who added the version of the soldiers — should instead more than other aspects. One would mouths asked the programmer who wrote be a supporting character. The scientists do the geometry, one would do the DSP code if there was any way to also went from being fairly ambiguous monster and AI placement, our tex- make the mouth move when the character — good or evil, we had them both ways ture artist would step in and do a tex- talked. He was told it would be easy to — to being definitely on the player’s turing pass, and then one would fin- know when the character was talking but side. It also meant that instead of claim- ish up with a lighting pass, often that there wasn’t any way to automatical- ing we had a story because we included switching roles when needed due to ly move the jaw. He then asked the pro- a bunch of prose in a README.TXT file scheduling conflicts. This became crit- grammer who wrote the skeletal anima- somewhere, we could have a real author ical toward the end of the project tion code if there was any way to make do real dialog with real (within technical when people finished at different the mouth move when the character limits) characters and use real story- times. If a play-test session revealed talked. He was told it would be easy to telling techniques. something that needed to be changed, move the jaw, but that there wasn’t really We’ve come to the conclusion that any available level designer could any way to tell when they were talking. major ideas can come from anyone, and make the changes without the game Independently, both programmers told that most technologies have hidden fea- getting bottlenecked by needing any him that it was impossible to do and to tures in them that will be discovered only specific individual. quit bugging them about it. It wasn’t until after the initial technology is in place. For This idea also extended to all code, several weeks later when the program- this reason, it’s critical to include every- textures, models, animations, sounds, mers were sitting around commenting on one in the design process and create a and so on. All were under source control what new impossible feature the artists mechanism to feed these second-order and any individual was able to synch up wanted that they realized that the part effects back into the development to the sources and make whatever neither one of them understood was in process. changes were necessary. With a little bit of self–control, this isn’t as random as it clear the technology itself was only a groups heavily toward people with a sounds. It had the added benefit in that small part of the work and integration, lot of group design experience, well it was fairly easy to get a daily record of training, and follow-through were ahead of game design experience. Even exactly what was changed and by absolutely necessary to make the tech- so, in the end almost everyone was in a whom. We would then feed this infor- nology useful to the game. Writing the Cabal of one sort or another, and as we mation back into the play-test cycles, code was typically less than half the got more comfortable with this process only testing what had changed, as well problem. and started getting really good results it as helping project scheduling by being was easier to integrate the more reluc- able to monitor the changes and get a tant members. For current projects, pretty good estimate of the stability and Square Pegs such as TEAM FORTRESS 2, the Cabal completeness of any one component. groups are made up of 12 or more peo- This also allowed us to systematically ractically speaking, not everyone ple, and rarely fewer than eight. The add features throughout the process P is suited for the kind of group meetings ended up being shorter, and with minimal impact. Once the techni- design activity we performed in the they also ended up spreading ideas cal portion was completed, the engineer Cabal, at least not initially. People with around a lot quicker, but I’m not sure assigned to the feature was able to strong personalities, people with poor I’d recommend that size of group synch to all the source artwork and verbal skills, or people who just don’t initially. rebuild any and all files (models, tex- like creating in a group setting should- Just about everything in HALF-LIFE tures, levels, and so on) affected by the n’t be forced into it. We weighted our was designed by a Cabal. This at first change.

GAME DEVELOPER DECEMBER 1999 http://www.gdmag.com The skeletal system allowed the team to change its monster By placing traditional combat action in more challenging appearance throughout the development process with mini- environments we were able to intensify the feeling of ten- mal impact on existing animations and AI. sion and suspense. 49

The Workers Control the Means of the game, they would need to start a meet the quality standards we wanted, Production Cabal and try to convince the other regardless of the level of emotional key people involved that their idea was attachment the specific creator may ven with all emphasis on group worth the effort. At the start of the pro- have had to the work. This was one of E activity, most of the major features ject, this was pretty easy as most every- the more initially contentious aspects of HALF-LIFE still only happened one wildly underestimated the total of the Cabal process, but perhaps one through individual initiative. Everyone amount of work that needed to be of the more important. By its very had different ideas as to what exactly done, but toward the middle and end nature, the Cabal process avoided the game should look like, or at least of the project the more disruptive deci- most of the personal conflicts inher- what features we just had to do. The sions tended to get harder and harder ent in other more hierarchical organi- Cabal process gave these ideas a place to push through. It also helped filter zations. Since problems were identi- to be heard, and since it was accepted out all design changes except for the fied in a relatively objective manner that design ideas can come from any- ones with the most player impact for of play-testing, and since their solu- one, it gave people as much authority the least development work. tions were arrived at by consensus or as they wanted to take. If the idea Through constant cycle of play-test- at least by an individual peer, then an required someone other than the ing, feedback, review, and editing, the authority that everyone could rebel inventor to actually do the work, or if Cabal process was also key in remov- against just didn’t exist. the idea had impact on other areas of ing portions of the game that didn’t On a day-to-day basis, the level of detail supplied in even a 200-page design document is vague at best. It doesn’t answer the 1,001 specific Technology Integration Tips details that each area requires, or the countless creative details that are part • Work directly with the artists — new technology, but if the player never of everyday development. Any design level designers, animators, and so on— sees it, then all your work will be wasted. document is really nothing more than for however long it takes to get the tech- Make sure it gets into the game design a framework to work from and some- nology into a sample portion of the document. Maybe it should be used thing to improve the likelihood that game. Sit in their office. Hang out. instead of other effects. Maybe it can be work from multiple people will fit Watch what they do. Watch what they used to enhance an existing portion. together in a seamless fashion. It’s the try. At this point, you will probably need Make sure it gets into as much of the Cabal process that helped spread to simplify, enhance, and/or document game as possible. around all the big picture ideas that the interface better. • Keep track of how the technology is didn’t make it into any document — • Have the artist demo the technology used. After a few months you will proba- things that are critical to the feel of to the rest of their group. When it comes bly notice that the technology is being the game, but too nebulous to put from outside, it’ll be viewed with a certain used to do things you never considered. into words. It also helps maximize amount of skepticism. When it comes Analyze how it’s being used and look for individual strengths and minimize from within, it’ll be viewed as a new tool. improvements or new tools that can make individual weaknesses and sets up a • Reintegrate the technology into the it even better. You’ll need to keep this up framework that allows individuals to world. You’ve spent the time adding the for the entire project. influence as much of the game as pos- sible. In HALF-LIFE, it was the rare area http://www.gdmag.com DECEMBER 1999 GAME DEVELOPER HALF-LIFE LESSONS

of the game that did- n’t include the direct work of more than ten different people, usu- ally all within the same frame. In order for highly hierarchical organiza- tions to be effective, they require one per- son who understands everyone else’s work at least as well as the individuals doing the work, and other peo- ple who are willing to The first incarnation of the game’s main character, now be subordinates yet known affectionately as “Ivan the Space Biker.” are still good enough to actually implement 50 the design. Given the complexity of At Valve, we’re very happy with the most top game titles, this just isn’t results of our Cabal process. Of course, Placing the player in a soldier-vs.- practical — if you were good enough we still suffer from being overly ambi- alien conflict helped reinforce the to do the job, why would you want to tious and having, at times, wildly illusion of an active environment, and be a flunky? On the other hand, com- unrealistic expectations, but these let Valve show off its combat AI with pletely unstructured organizations eventually get straightened out and minimal risk to the player. suffer from lack of information and the Cabal process is very good about control — if everyone just does their coming up with the optimal compro- own thing, the odds that it’ll all fit mise. Given how badly we failed ini- even our most initially reluctant per- together in the end are somewhere tially, and how much the final game son is now a staunch supporter of the around zero. exceeded our individual expectations, process. ■ CODE DESIGN Makig a Beak fm Fagile Cde Deig

by James Boer

s maintaining your game libraries becoming more and more

56 of a challenge? Is your game’s code base becoming increasingly

fragile? This isn’t an uncommon phenomenon. We’ve all

heard about projects that were cancelled due to unmaintain-

able code and runaway bug counts. Perhaps you’ve even

been part of such a project. The key to avoiding this kind of

catastrophe lies in good code design and a willingness to set

a certain level of discipline in your more difficult in the process. The sophisticated as mainstream commer- team’s coding style. ability to design upgradability into cial applications, and many compa- Game development offers a unique your software libraries without sacri- nies feel the pressures that inspired challengeII to programmers because of ficing stability is a rare art today, but more efficient design methodologies its combination of cutting-edge tech- it doesn’t have to be so. To combat such as object-oriented programming nology and traditional software devel- fragile code, this article examines and the concepts of design patterns. opment challenges. Often, traditional some traditional approaches and dis- As programs get larger and more solutions to program design tend to cusses the benefits and limitations of complex, the number of interdepen- fall short because of the rapid evolu- these methods. dencies between code modules tends tion of game development technolo- to increase at an exponential rate, gies. For instance, Microsoft’s DirectX making code reuse or redesign more libraries constantly evolve, and each Ever-Increasing Complexity difficult. Companies that do not new version has new features and feel compelled to design their takes advantage of new hardware and he day of the free-coding, seat-of- software effectively will eventually technologies. But trying to ensure that T your-pants, I-don’t-believe-in- be surpassed in the marketplace by your programs will be able to use the designing-code-before-I-write-it pro- those who do, producing more bug- newest versions of DirectX without grammer is fast drawing to an end. free code with a shorter turnaround having to rewrite lots of code is made Today’s top games have become as time.

James Boer is the designer and one of the programmers who brought you DEER HUNTER and DEER HUNTER II (and he still has never gone hunting). Other game credits include ROCKY MOUNTAIN TROPHY HUNTER, PRO BASS FISHING, MICROSOFT BASEBALL 2000, and MICROSOFT INTERNET HEARTS. He currently is working at WizBang! Software in Seattle, Wash., on a yet unannounced product, and can be reached for comments, questions, or general advice about virtual deer hunting at [email protected].

GAME DEVELOPER DECEMBER 1999 http://www.gdmag.com refactor your software. This is an unre- FIGURE 1. Cohesion between code and data. alistic goal, as no developer can antici- pate changing future requirements to the degree that it will never need to be redesigned at a fundamental level. However, you can strive to maximize Data Code the effective lifespan of code. This goal, achieved through the use of reusable components which encapsulate both code and data, was what object-orient- ed programming (OOP) promised to deliver. Unfortunately, OOP can’t pro- Data Code vide all the answers on its own. (See sidebar, “Code Cohesion,” p. 58)

Shortcomings of OOP

Data Code OP encapsulates code and data O into a single module, which in 57 essence, gives the data a code interface. This means that the underlying data can be changed without modifying the interface to access that data, which Data Code provides an additional level of protec- tion when requirements change. How- ever, just as dependencies between code and data modules can escalate to an unmanageable level, dependencies The Pitfalls of Procedural numerous modules of code might be among different code modules can also Programming looking at a single chunk of data. As create an unmanageable level of cohe- the number of code and data modules sion (Figure 2). n procedural programming, data is a increases, you tend to see data and Using OOP techniques has simply I distinctly separate entity from the code modules become more dependent delayed the progression of the cohe- code that operates on that data (Figure on each other. This web of dependen- sion by combining code and data mod- 1). This creates a situation in which cies, often called “code cohesion,” ules. As programs grow in complexity, makes it increas- however, the code dependencies still FIGURE 2. In OOP, different code modules can become too ingly difficult increase to an undesirable level. To dependent upon each other. to alter any one move away from the abstract a bit, let’s component with- take a look at a real problem and see out adversely how a real solution was implemented. affecting the Class others. When game Real-Life Problem: A DirectX Upgrade code becomes too cohesive, the he issue of using DirectX libraries entire system T effectively is something most PC Class Class must either be game developers have had to face. redesigned or dis- Although these libraries attempt to carded due to its remain backward-compatible with the inherent lack of interfaces of previous versions, there are flexibility. This times when compatibility must be bro- process is known ken in order to introduce new features. Class Class as refactoring, It is at this point that your existing code and it is an becomes incompatible with the new inevitable part of libraries. The typical OOP solution to an any software evolving interface is the creation of a development thin wrapper class for the library, which Class cycle. The prob- uses inline functions to shield the game lem is not how to programmer from the more mundane avoid the need to tasks involved in using the library. http://www.gdmag.com DECEMBER 1999 GAME DEVELOPER CODE DESIGN

unfortunately it has no concept of Code Cohesion default parameters and function over- loading. So you might consider writing hat is code cohesion, 3. ALLOWING MANY SMALL OBJECTS IN DIF- wrapper Blt() functions which are easi- what causes it, and FERENT SUBSECTIONS OF THE CODE TO COMMU- er to use. You also might have several exactly why is it such NICATE DIRECTLY WITH EACH OTHER. Although overloaded Blt() functions for different W a bad thing? Cohesion this is sometimes unavoidable, you situations. Class wrapping like this is the result of too many parts of a pro- should always try to make use of a high- makes an API easier to work with and gram becoming dependent on each other. level interface to communicate between also helps shield the application from Of course, some cohesion happens by subsections of code. Inline function can changes in (for this case) the necessity in any program written, but the alleviate most concerns about addition DirectDraw interface. If function para- degree of cohesion is what’s important. If overhead imposed by the additional meters within Blt() change, a program- the amount of cohesion remains low, it is interface layer. If direct communication mer must only make changes inside easier to replace any particular subsys- between smaller objects absolutely must the wrapper functions instead of tem of code because the impact on other occur, try to utilize some communication throughout the game. portions of the code will be minimal. If, abstraction if possible as a go-between, Unfortunately, this doesn’t provide on the other hand, the code is highly such as a message object. protection from major changes in an dependent upon specific interfaces and Alternatively, here’s three techniques API’s functionality. For instance, in data structures from many other parts of you can use to ensure you’re code doesn’t DirectX 6.0, Microsoft introduced 58 the program, it becomes impossible to become too highly cohesive. Direct3D vertex buffers as an alterna- change without affecting a vast number 1. MAKE GOOD USE OF LIBRARIES. If you tive to execute buffers. This type of of other systems. can separate your code from the applica- change typically has more far-reaching Cohesion is caused by a number of tion and place it into a library, you’ve effects in an application than a simple things, but there are some more obvious established a natural separation that can- change in a function’s parameters. So coding practices to watch out for. Here not easily be breached. Objects in the some solution must be found to pro- are some programming practices which, library have to remain relatively indepen- tect code subsystems from major unless used cautiously, can lead to highly dent of the code in the application. changes in one or more basic compo- cohesive code: 2. FOCUS ON THE “BLACK BOX” INTERFACE OF nents of another system. 1. USING GLOBAL VARIABLES AND DATA YOUR OBJECTS. Your objects should be per- STRUCTURES. There are some instances forming tasks under the hood, without where globals might be necessary, but other programmers having to worry about The Facade Pattern: Half a Solution think long and hard before using them. exactly how the tasks are being imple- More often than not, these types of items mented. This means that you should keep he facade pattern provides a solu- can be encapsulated in a class with little the public function available for use, make T tion to the seemingly inevitable ill effect. Structs, unless used exclusively sure that it’s easily implemented, and doc- cohesion between different modules of inside a particular class, should be used ument it well (including good comments code in a program. The basic premise with caution. Wrapping data and func- within the code). Keep your helper func- of the facade pattern is this: all code tionality into a single class is usually a tions private or protected. If you find the must be logically divided into discreet safer approach. The biggest problem with number of functions growing extremely modules, and these modules should, using a struct to store common data is large, perhaps it’s time for a higher-level whenever possible, communicate to that it’s difficult to manage and track who object to take over the task, or to consoli- each other through the use of an inter- is actually accessing the data and when date a number of the smaller functions face known as a facade. The facade is a they are doing it. into larger, simpler-to-use function. high-level interface to the functionality 2. INCORRECT SCALING OF CLASSES AT 3. HAVE A SOLID DESIGN STRATEGY BEFORE of a complete subsystem of objects DESIGN TIME. It’s a common mistake for CODING STARTS. This sounds a bit too sim- which work together to perform some programmers to design their classes too plistic to be a practical rule, but it’s an related task. There will be times when small and specific, resulting in many important one nonetheless. Don’t resign lower-level functionality of a system smaller interdependent objects, or too yourself to the illusion that you’ll go back must be accessed directly, but often the large, resulting in complex, monolithic later and “do it right.” In my experience, facade can take care of higher-level objects that attempt to do far too much. there’s rarely the time or inclination to do functions more easily than another It’s important to design and use classes that. Once code is written and “working,” solution. at both ends of the size scale, both to it’s hard to convince someone that you These are not radical or even new keep code modules small and readable, need to go back and spend more time to concepts. Most programmers have yet also to keep the overall design rela- rewrite code that essentially does exactly seen the benefits of some sort of man- tively understandable. the same thing. ager class that is used as the interface to the rest of the program. Using a For example, blitting from surface to tion rectangles, a source surface, flags, system such as this helps to insulate surface in DirectDraw requires the pro- and a blit structure. The Component the remainder of a program when the grammer to fill out a number of para- Object Model (COM) structure, on implementation of a subsystem meters in the IDirectDrawSurface4::Blt() which DirectX is based, provides much radically changes under the hood method, including source and destina- in the way of standardization, but (Figure 3).

GAME DEVELOPER DECEMBER 1999 http://www.gdmag.com FIGURE 3. Visual representation of communication between subsystems using flexibility. Here's what the code looks facades. like: // sample code showing a generic manager // class class ManagerBase Class Class { public: ManagerBase(); virtual ~ManagerBase();

Class Facade Facade Class ManagerBase* GetBase() { return m_pBaseObj; }

void SetBase(ManagerBase* pObj) { m_pBaseObj = pObj; } Class Class protected: static ManagerBase* m_pBaseObj; }; The Virtual Manager Alternative class to store as a static member, we We see a simple mechanism for stor- 59 give every piece of code, whether at ing a single object in its own static lthough the facade works well, it the library or application level, the member. Access to the object is A does present some serious limita- ability to access the object that the achieved through the GetBase() func- tions. Let’s assume we wish to build a application has created. This object tion. However, in order to avoid hav- facade over every one of our major may be an instance of the class which ing to type in: subsystems, which we’ve split into resides in the library, or it may actual- ManagerBase::GetBase()->DoSomeFunction(); separate libraries. This means that ly be an instance of a class derived every time we want to call a function, each major library has a facade to from it. From the other library mod- we can simplify the call through the handle communication to and man- ule's point of view, it makes no differ- strategic use of an inline function. agement of the subsystem, creating a ence. The solution is simple and ele- inline ManagerBase* Manager() cleaner interface between each subsys- gant, and provides a good deal of { return ManagerBase::GetBase(); } tem and with the application. How- ever, most applications require some customization of their libraries to one degree or another as the requirements of the application evolve over time and new features are added. If more than one application uses the same set of libraries, then the customizations must occur at the application level, instead of the library level. The prob- lem then boils down to: How can we customize the libraries at the applica- tion level and still allow other libraries to use those customizations? A while back, we discovered a prob- lem when working on specific library modules that needed to access code in other libraries we had written. The UI library, for example, required the use of our Graphics and Input libraries. How can we ensure that the UI library can access those other libraries’ functionali- ty, even though an application may wish to extend the Graphics or Input libraries by deriving new classes from them at the application level? The answer lies in the clever use of a static pointer. By instantiating a class at the application level and passing the pointer of that object back to the CODE DESIGN

At the application level, however, Design Patterns the benefits of overriding the manager class become quickly apparent. For here’s been a lot of talk about a reputation of being a difficult language instance, you may wish to add the design patterns in the world to master due in part to the complex art capabilities of associating some other of object-oriented program- of designing classes that are clean, effi- types of data with some sounds. For a T ming (OOP). In a nutshell, a cient, and expandable. Patterns can help technology demo of an upcoming design pattern is a simply way of shorten this learning curve by describing product we were showing to publish- describing the general object-oriented common programming problems, then ers, we associated a lip-synch data file form of a solution to a specific type of showing how a class or hierarchy of with voice-over recordings. After the programming problem. If this sounds a classes can be used to solve the problem voice-over sounds were loaded, we little vague or abstract to you, it should. with proven, time-honored class could retrieve the associated data file as Patterns only give you a blueprint of designs. well. object interaction to model your own In addition to allowing programmers to A class, which we’ll call classes on. After that, it’s up to you to see practical object-oriented solutions to AppSoundManagerObj, is derived from build the specific classes that solve programming tasks that they may SoundManagerBase. In addition to deriving whatever problem you’re facing. What encounter, patterns also give program- the class from the base class, we’ll also the pattern gives you is a strategy when mers a common frame of reference when create a new accessor function, like deciding which objects to use, and how talking about programming solutions by this: 60 they should work together. naming the patterns. If I describe a class inline AppSoundManagerObj * AppSoundManager() Effective object-oriented design is one utilizing a Factory pattern (a Factory is { return ((AppSoundManagerObj of the more elusive skills a programmer responsible for creating objects and *)SoundManager()); } can master. C++ is really not all that returning interfaces to them), anyone This new accessor gives us a pointer hard to learn at the basic language level. who understands what a Factory pattern to the new AppSoundManagerObj interface, After all, one doesn’t necessarily have to is automatically can relate to the general which of course also includes the inter- use templates, exceptions, and other nature and purpose of the class that I’m face to the original base manager class. fancy language features. However, it has attempting to describe. In addition to adding new members to the derived class, the ability to This function is placed just below the Because the application is responsible derive means that we also gain the abil- class definition in the header file, and for creating and setting the object, it’s ity to change default behavior of the should be used to access the object. possible to try to access the manager manager classes by overriding virtual Code calling the manager then looks without having initialized it. This will functions. This effectively lets us like this: result in an access violation, so it is change the behavior of the manager Manager()->DoSomeFunction(); important to guard against this. Ideal- even when it is called from other This looks quite a bit more friendly, ly, the object should be created at the libraries. and because the function is inline, beginning of the application and requires no additional overhead. destroyed at the end, which will guard You’ll notice that the class was named against this type of error. If for any rea- Migrating Library Code ManagerBase instead of Manager. This was son parts of your code might try to done with the foresight of knowing that access a manager before it has been cre- n advantage of the virtual manag- the inline accessor function, not the ated, it is your responsibility to wrap A er system is that most new code object, should have the name most that code in an if statement which can first be introduced at the applica- closely associated with the actual func- checks to see that a valid object exists tion level without modifying the exist- tionality of the object. For instance, before accessing it. This is the biggest ing libraries. If you want to use those with a sound manager, you should drawback to this system, but with care- features later in other applications name the object SoundManagerBase, which ful planning it doesn’t have to be a sharing the same libraries, then it’s leaves you free to name the accessor problem. simple to migrate the code from the function SoundManager(). application level to the library level The application is responsible for cre- (Figure 4). It’s important to note that ating the manager object and passing A Real-Life Solution when NewFunc(), as shown in the dia- back to the class for storage, like this: gram, moved from App 1 to the // application initialization code or an example of a practical solu- Library, no changes to the interface F tion, let’s look at a sound manager, were apparent to the rest of the pro- ManagerBase* pBase = new ManagerBase; as it’s a relatively simple subsystem. gram. The beauty of this system is that if(!pBase) Most sound managers consist of code migrating code in a virtual manager return Error; that manages a list of sounds, and can class doesn’t affect the interface as seen ManagerBase::SetBase(pBase) load, unload, play, stop, or set proper- by the rest of the program. ties of any of these sounds on demand. In addition to the ease with which // now we’re ready to call the manager Most applications should be able to use you can migrate code from application // functions this set of functions without much to library, the virtual manager also cre- Manager()->DoSomeFunction(); alteration. ates, to a limited extent, a primitive

GAME DEVELOPER DECEMBER 1999 http://www.gdmag.com versioning scheme. You can see how, FIGURE 4. Migration of code from application-level facade to library-level by creating several layers of derived facade. classes, you could easily choose at the application level which version of a library you wished to use. NewFunc() While there certainly is no for- mula to eliminate bugs from a software product, a well-planned and solidly- App 1 App 2 App 3 developed library can certainly go a long way in stabilizing your code. By utilizing well-established object-orient- ed programming principles and solid code management techniques, you’ll find that perhaps you’ll be able to Library focus more energy and spend more time writing new code instead of track- ing down bugs and rewriting old libraries. ■ App 1 App 2 App 3 F O R F U R T H E R I N F O 61

Gamma, Erich; Helm, Richard; Johnson, Ralph; and Vlissides, John Design Patterns: Elements of Reusable Library Object-Oriented Software (Addison-Wesley, 1995) NewFunc() POSTMORTEM Aciii HEAVY GEAR II by Clancy Imislund

fter a long series of successful titles such as MECHWARRIOR

62 2: GHOST BEAR’S LEGACY and MECHWARRIOR 2: MERCEN-

ARIES, held a dominant position in the

giant-robot genre. Due to the commercial success

of this series, though, a tidal wave of similar

products developed by worthy competitors AAbegan to flood the market. Fortunately, Activision found a new and exciting universe in Dream Pod 9’s Heavy Gear pen-and-paper-based

game, and in the fall of 1997, Activision Studios began production on

the futuristic giant-robot simulator HEAVY GEAR II. HEAVY GEAR II allows

game players to suit up in a giant, high-octane, humanesque battle tank

called a “Gear.” The player is then required to outfit a wily band of AI

Gears (called “squadmates”) and arm them to the teeth. Their small but

Beyond the role of volcanic guitarist and avid jai alai analyst, Clancy enjoys all aspects of engine design including 3D graphics, AI, tools, and multiplayer integration. For HEAVY GEAR II, he was responsible for the AI, scripting system, and tools development. Contact him at [email protected].

GAME DEVELOPER DECEMBER 1999 http://www.gdmag.com heavily armed reconnaissance force must infiltrate and over- come a rich variety of environments including swamps, icy wastes, angry red planets, and the weightless reaches of outer space. The action in HEAVY GEAR II is much faster than in other giant robot simulators, as Gears are substantially smaller than Mechs and much more fragile. This requires squads to rely primarily on stealth and cunning rather than brute force and wanton destruction. Players are forced to pick their battles wisely or face annihilation from the superi- or enemy legions that infest the various worlds they tra- verse. When pilots are tired of playing against computer opponents, they can pit themselves against human enemies in multiplayer mode with a number of game types to choose from including “steal the beacon,” “king of the hill,” and good old-fashioned deathmatch. To create such an experience, Activision assembled a new Artist’s concept for the “Asteroid Shipyards.” team of its best and brightest in the areas of programming, art, design, and management. A very aggressive schedule was adopted targeting a fall 1998 release date (a 13-month devel- that point, or publishing a game that had a greater current opment schedule). Our original staff consisted of a lead, market base and little or no novelty by the time it was 63 graphics, AI and tools, multiplayer and shell programmer. released. I suppose it is something all of us developers must We had a lead artist, two 3D modelers, a 3D animator, and deal with in these days of rampant technological change. two 2D artists creating texture maps for the models and ter- The AI system was another great challenge, as it would rain. We also had a lead designer who managed a group of dictate much of the feel of the game. It would also be a key three game designers, all of whom transformed the storyline tool for our design team as they implemented the complex from paper into a computer game. Our management group storyline. We decided at the high level to go with a pure consisted of a director, a producer, and an associate produc- “autopilot” approach, in which enemy and friendly AI alike er, who controlled the schedule and the development and were able to function intelligently without any script at all direction of the game and saw to the many needs of the for individual units. We wanted to be able to put a unit into other production staff. the world and have it go do whatever it thought it needed to We programmers were chartered to create a new game do. Internal to this was a high-level strategic system, a team- engine and I took on the role of AI, scripting system, and based tactical system that employed a knowledge base, and a tools programmer. At the heart of this engine was a rock- low-level, unit-specific order execution system. The goal was solid memory management and leak-tracking class. Yes, to take much of the burden off of the design staff, and give that’s right. Before anyone ever dreamed of fancy graphics or the game a consistent and distinctive feel across all missions. stunning game play, we had to deal with this mundane task. Nonetheless, our scripting system was very effective and Every C++ class and structure used by the Darkside engine had some nice features such as an in-game debugger com- had roots within this base class. This architecture allowed to plete with break points, single-step execution, and variable us to detect memory leaks and overwrites as soon as they watch windows. It was based on LEXX/YACC-based C gram- appeared in a given day’s build, which allowed us to address mar, which hooked into a powerful and easily extensible vir- problems immediately rather than during a grueling cycle at tual machine that resided in the Darkside engine. Our script- the end of the project. I cannot stress the importance of this ing system was hooked in to our custom game API, which in type of planning and execution enough for teams who want turn was coupled to prototypes defined in a file called to craft a state-of-the-art game engine. Focusing on the relia- STDHG2.H, which ostensibly replaces STDIO.H (a file well bility of the application will also greatly increase the immer- known to all of you C programmers out there). Amazingly sion factor of any game that’s created with it. After all, what enough, STDHG2.H was used not only to compile the destroys immersion more than a hard system crash? Hats off to our lead who took us down this path. HEAVY GEAR II The decision was made to target the game only for Activision machines outfitted with 3D-accelerated video cards. This Santa Monica, Calif. issue was hotly disputed within our team for a while, but (310) 255-2000 when our management group realized that in order to pull http://www.activision.com off realistic 3D graphics, software emulation was a dead deal. Release date: July 1999 This had profound effects on the schedule, as it freed our Intended platform: Windows 95/98 artists and programmers from dealing with the time- Project length: 19 months consuming and tiresome work of generating alternate LODs Team size: 20 for such a purpose. This decision also eliminated a huge Critical development hardware: 3D-accelerated 200MHz PC chunk of our QA test plan, which could have pushed back Critical development software: Softimage 3.7, Photoshop, the release date of the title significantly further. We had to Visual C++ 5.0, Visual SourceSafe, and numerous in-house choose between putting out the highest quality game we tools could and targeting a consumer market that barely existed at http://www.gdmag.com DECEMBER 1999 GAME DEVELOPER POSTMORTEM

Mining installation on the wastes of Caprice. Early concept for the destruction at “Peace River.”

scripts, it was also used in the compila- as possible. The autopilot handled all of work that these people put into pro- tion of the Darkside engine itself. This strategic, tactical, and low-level opera- ducing the first prototype. Even more 64 convenient relationship between the tions of unit behavior, yielding control amazing was the fact that most, if not scripting language and the engine only at the request of a script. The all, of this work was of the “keeper” source code, plus the fact that the C autopilot was the default AI handler in variety — nearly all the code used in language is widely documented, easily the engine. Scripts could override this the green-light prototypes exists in the justified our decision use a scripting system by posting event callback Darkside engine today. Our design language based on C. Scripts were used requests as shown in Listing 1. tools were augmented in functionality, mainly to monitor mission progress Our multiplayer system was crafted but the basic underlying technology and objectives, special behaviors (con- using a proven proprietary networking driving these applications remained voys and patrols, for instance), and SDK developed at Activision. This virtually unchanged through the interactive control of the action. Our reliance on preexisting technology entire development cycle. goal was to keep these scripts as simple allowed us to get multiplayer function- THE DARKSIDE ENGINE. The ality in the engine and working very 2.Darkside engine created specifi- LISTING 1. Event callback requests. early on in the development cycle. cally for HEAVY GEAR II was an engi- Designing and integrating multiplayer neering gem. Although game players // A Script.C functionality is often left until the end get a solid dose of its extraordinary void of a project, and that can create all graphics and animation capabilities, at Initialized() manner of problems. Getting this level its core it is nothing but a simple mem- { of complexity into our development ory manager and leak tracker. This // Tell AutoPilot that we want control schedule early probably saved the property of the engine allowed the pro- // back when the unit is killed or HEAVY GEAR II team an additional six grammers to track down and remedy // shot at months of work. most of the nastier bugs in the game AutoBreak(HitPointsExhausted); long before it hit the QA floor. Beyond AutoBreak(ShotAt); its concrete foundation, its modular What Went Right design and expert use of C++ made it a // Turn over control to the autopilot snap to add or delete the different sys- // when this function returns EFFECTIVE PROTOTYPES. When I tems we wished to experiment with. AutoPilot(); 1.began working with Activision’s Most of the foundation code and HEAVY GEAR II production team, it was graphics subsystem was shared with } composed of a lead programmer, a top- our 3D layout tool, saving us a ton of of-the-line 3D graphics programmer, a extra work. This extensibility and prop- void director, a producer, a lead designer, er use of the C++ language was invalu- ShotAt() and a lead artist. At that point, the able as we faced a deluge of changing { team had just been given marching design requirements and additional RegisterString("Ha ha, ya missed"); orders to produce a second prototype game features. Our 3D math library // Resume auto mode of the game for approval by the corpo- was easily modified for Intel’s Katmai AutoPilot(); rate brass. I was hired because this pro- Instruction Set, and this enabled our } totype required functional AI to give a OEM group to strike up some valuable void feel of the intended game play. At this partnerships with external vendors. HitPointsExhausted() early stage, the game already looked Although some HEAVY GEAR II–specific { super and a user-friendly 3D layout code may still lurk in the recesses of RegisterString("Damn! I died!"); tool for the level designers was up and the Darkside, the engine’s debug ability } running. I couldn’t believe the amount and modularity make it a novel choice

GAME DEVELOPER DECEMBER 1999 http://www.gdmag.com for any 3D simulator Activision may game and are actually solicited wish to develop in the future. for new ideas to improve the THEY LET US DO OUR JOBS. Those of design. When the develop- 3.you who have had the experi- ment team and production test ence of a tough supervisor or manage- team feel that the title has ment group breathing down your neck reached beta, Activision’s main as you tiptoed down your critical path QA test group takes over for a will appreciate this: our front-line gov- formalized certification erning body of director and producer process. Concise reports are did a superb job of trusting the profes- painstakingly generated to sionals who worked under them. They ensure that only genuine, made our team aware of upcoming replicable bugs ever make it milestones and the expectations of back to the development Activision’s corporate group without teams. It is this group that is succumbing to the temptations of ultimately responsible for the micro-management and general mega- release of the title, so they take lomania. This held true even when the their work very seriously. team hit roadblocks or missed mile- Beyond Activision’s in-house stones. They maintained their trust in QA department, we were aided us. This contributed to a fertile envi- by an eager external group 65 ronment for new ideas and creative called “Visioneers” who avidly solutions from the team. played any build we furnished Activision’s upper-level management for them. They reported all Early sketches of CEF Heavy Battle Frame. also contributed to the game’s success manner of problems, from by letting the team decide when the hardware compatibility issues game was finished. Management could to boring game play. The size and diver- was kicking off its production cycle, a have released the game early and sity of this group made them an ideal series of first-person action shooters hit announced a patch shortly thereafter, a QA avenue, as they represented a more the streets. Most if not all of the team practice that is becoming common accurate cross-section of the gaming members were avid deathmatch play- with many publishers nowadays. community. Activision also invited ers, and fierce competitions were held Instead, Activision gave game players a people from different age groups to to decide which of us was the top dog. break and released a quality, bug-scarce come into our office and play HEAVY Subconsciously, much of the game- title with a lot of replayability and GEAR II in an observational setting. play feel we experienced while partak- immersion. This is an admirable goal Testers’ responses were noted and given ing of these frag-fests found its way in this era of market-driven develop- to the development team via written into our title. A fun enemy AI unit was ment and patch-laden gaming web surveys. All these channels of software one that somehow evoked the same sites. evaluation greatly streamlined emotional response as the poor slob I GREAT QA the development process had just fragged at lunchtime. 4.WORK. and contributed This held true for the HEAVY GEAR II With Activision’s heavily to the multiplayer experience as well. We business plan, its quality of the fin- tried to translate what we thought was development ished product. fun and exciting in our lunchtime teams enjoy the GOOD GAME PACING. If into experience of fight- luxury of a high- 5.you sit down and ing against hulking Gears. I’m not say- ly organized QA play HEAVY GEAR II, ing that if you want to create a great department. On you will notice a com- title with lots of excitement that you the front lines we pletely different feel should play first-person shooters, but I have a smaller group from other games in the do think that it is important for all known as “produc- genre. The pace is faster game developers to be avid players as tion testers.” These and the action is much well. It is the game player that has the folks deal directly more compelling. This upper hand at identifying the abstract with the develop- was a desired feature notion of “fun” and, isn’t it the job of ment team on a documented in the the developer to create that? daily basis and original specification intercept a of the game, but writ- high percentage ing down that require- What Went Wrong of the bugs before ment in a document they ever make it out to external test doesn’t necessarily TO DEMO OR NOT TO DEMO. I love to groups and Activision’s QA team prop- mean you will pull it 1.play the demo version of any er. Production testers become very inti- off. At about the same game before I buy it. In fact, as a gamer mate with the inner workings of the time that HEAVY GEAR II I purchase games based on how good http://www.gdmag.com DECEMBER 1999 GAME DEVELOPER POSTMORTEM

the demo is. As a developer, however, a bugs and limitations in these systems aggressive. Although we implemented demo version of a game is a tricky cost the team even more time and all of the required features as defined in thing to pull off. In our case, most of generated bushels of frustration. This the original design specification (and the game’s critical systems were not aspect of the turnover phenomenon is many not included), we missed our functioning on all cylinders and many the least respected by developers and final ship date of October 1998 by nine game assets didn’t exist yet. We had to has the most profound and variable months. dedicate most of our time and effect on scheduling. A periodic and ELEVENTH-HOUR SOLUTIONS. During resources to this Cimmerian task, thorough code review process is an 4.the production of HEAVY GEAR although all our schedule called for effective way to defeat this problem. II, many of our game designers and was a small tiger-team consisting of a SCHEDULE TOO AGGRESSIVE. HEAVY external testers began to notice a dis- designer, programmer, and artist who 3.GEAR II was built completely tinct absence of thrilling game play, worked on it a small percentage of from the battleground up, so every which were attributed to several fac- their day for about two weeks. aspect of the game required significant tors: the AI was too vicious, the AI-con- When the smoke cleared and the development time. Unfortunately, the trolled squadmates were disobedient demo was finally posted, the team gave development schedule was too opti- and difficult to deal with, and there a sigh of relief and basked in the mistic about how long it would take to was no noticeable ramp-up in difficulty warmth of a job well done. Unfortun- create the title. and emotion — some missions were ately, this feeling quickly evaporated Here’s an idea of the scope of the frightfully easy and others absolutely when we realized that we had taken game, as specified by our design docu- impossible to complete. (The average 66 almost a three-month departure from ment. HEAVY GEAR II required a brand life expectancy of the player in some of our original development schedule and new game engine and an accompany- our combat scenarios was about four totally exhausted ourselves in the ing suite of design, development, and seconds.) process. I still believe a demo debugging Our design team felt that they didn’t is important to the success of tools. have proper tools and enough control a game, but such a task over the AI and the environ- should be closely correlated ment to adequate- to the production of ly tune the main SKU. their mis- Attempting to factor sions and make the demo development the game fun. time and resources into a Most of this schedule significantly was due to the different from the game fact that we itself can profoundly arrogant affect both the prod- program- uct’s quality and The game had mers designed and implemented most timeliness. more than 40 single- of the game logic without enough con- UNDOCUMENTED player missions, as well as sultation and input from our able 2.TURNOVER. This is a very com- numerous historical and instant-action game design staff. To address these mon yet unpredictable aspect of game missions. Additionally, multiplayer issues, our team had to depart totally development. New and better jobs or functionality (including cooperative from the design document and do a personal issues always seem to snatch play with multiplayer AI) was required whole bunch of wild and creative away even the most loyal and dedicat- for deathmatch, king of the hill, steal thinking. Only after some ad hoc ed teammates. As a result, someone the beacon, and historical settings. We brainstorming sessions and grueling inherits the workload of the fallen were also required to construct three mission-by-mission playability tests comrade, putting the team and the different modes for each and all of did the pieces come together. Much of schedule in a precarious situation. these missions: terrestrial, space, and the kudos we received from the gam- When turnover occurred on the “Gomorrah” (combat in an enclosed, ing community is directly related to HEAVY GEAR II team, we and our multi-level, near-future megacity) gam- these solutions. schedule encountered a nasty surprise. ing modes. However, a situation like this could Many of the systems we inherited The schedule called for a polished have had far worse results. The next were only partially implemented and demo version of the game to be posted time around we will put much more virtually undocumented. To make on all of the top gaming web sites. I thought and detail into our game things worse, much of the code was joined Activision on November 10, design documents and provide a much written to implement advanced ani- 1997, after HEAVY GEAR II’s first proto- more efficient education for our game mation and mathematical methods type, and the final product was initially design staff concerning game play used all over the game engine, and we slated for release for Christmas of the manipulation and control via scripts. didn’t have a technical design docu- following year. This period included a We will also give them a more promi- ment that we could refer to in order to protracted QA run-through, effectively nent role in the initial design of these determine the intended solution for yielding a nine-month development systems to enhance their understand- these systems. Working around the cycle. Unfortunately, it was far too ing of the underlying technology.

GAME DEVELOPER DECEMBER 1999 http://www.gdmag.com MARKETING ISSUES. Christmas season, so we 5.After experienc- decided to shoot for a ing the high quality of more realistic March our second prototype, release. Our marketing people at Activision group did their best to began to get very excited respond to the blow and about the future of attempted to keep interest HEAVY GEAR II. We were in HEAVY GEAR II alive. given a highly favorable March came and went, reception at E3 in 1998, and the release date where we finally revealed became a dancing phan- the game. We subse- tom beyond our reach. We quently released a developers knew we were playable demo that met close to completing the with similar acceptance. Conceptual art for gateship “Celestrus” orbiting barren Caprice. game, but nobody could Our marketing staff, give our marketing team a which had been pushing definite date so that they this title from the start, finally had the factor was the amount of time and could keep the buzz up. Marketing did leverage it needed to differentiate effort we had allocated to creating the what it could to keep whetting the HEAVY GEAR II from its competitors. demo. We had hit roadblocks in the public’s appetite as the weeks rolled by. 67 Magazine articles began to run, OEM past and always rebounded in sterling Missing the targeted ship date is a deals were made, and shelf displays fashion, so nobody on our team serious risk to teams that rely on new were created as everyone anticipated allowed themselves to believe that the and unproven technologies — and it’s the forthcoming release. demo would cause us to miss our target especially perilous for teams working Only the development team knew ship date. under compressed development sched- how alarmingly behind schedule the Then we slipped. Suddenly we were ules. Even the most innocuous develop- game actually was, however. This was plunged into a nearly interminable ment tasks, if underestimated or mis- due in part because of some unfortu- crunch mode. Our slip meant that the handled, can send your schedule flitting nate turnover in our staff, but the main game wouldn’t ship in time for the away beyond your control. POSTMORTEM

We Almost Got It Right… since our development team had the heel. Shipping a quality title is impor- luxury of starting this project from tant, but so is strict adherence to e received great reviews from scratch, we had the opportunity to budget and schedule. The HEAVY GEAR W top gaming publications and learn a wide range of new methods II team learned a great deal from this web sites. Our marketing group and techniques that would otherwise experience; we’ll keep that with us for piqued the interest of the gaming have remained beyond our reach. a long time. At least we left a solid community and our development Alas, our aggressive schedule and and reusable game engine in our team produced a superior title. And risk taking proved to be our Achilles’ wake. ■

ADVERTISER INDEX NAME PAGE NAME PAGE

Alias|Wavefront C3 MathEngine 27 Apple Computer C2,1 Maxi Cassette CD Production 70 Atomic Games 71 Metrowerks Inc. 30 BDDP Corporate 35 Morfit 22 Biomorph 70 Multigen 25 68 Black Ops Entertainment Inc. 71 Musicandsfx.com 70 Busybox.com Inc. 6,7 NewTek Inc. 36 Cinram 69 Numerical Design 2 Conitec Datensysteme GmbH 68 NxN Digital Entertainment 11 The Coriolis Group 67 Okino Computer Graphics 67 Credo Interactive 70 Rad Game Tools Inc. C4 Criterion Software Ltd. 5 Rainbow Studios 59 Diamond Multimedia 39 Savannah College of Art and Design 69 Digimation 17 SN Systems 20,21 Evans & Sutherland 15 Spatial Technology 19 Global Majic Software 29 Template Graphics Software 61 Intel 13 Vancouver Film School 69 Lips Inc. 33 VR 1 50

U.S. Postal Service Statement Of Ownership, Management And Circulation (Required by 39 U.S.C. 3685) (1.) Publication Title: Game Developer (2.) Publication No.: 1073-922X (3.) Date of Filing 1-Oct-99 (4.) Issue Frequency: Monthly (5.) No. of Issues Published Annually: 12 (6.) Annual Subscription Price: $49.95 (7.) Complete Mailing Address of Known Office of Publication: Miller Freeman Inc., 600 Harrison Street, San Francisco, CA 94107 (8.) Complete Mailing Address of the Headquarters of General Business Office of the Publisher: Miller Freeman Inc., 600 Harrison Street, San Francisco, CA 94107 (9.) Full Names and Complete Mailing Addresses of Publisher, Editor, and Managing Editor. Publisher: Cynthia Blair, Miller Freeman Inc., 600 Harrison Street, San Francisco, CA 94107. Editor: Alex Dunne, Miller Freeman Inc., 600 Harrison Street, San Francisco, CA 94107. Managing Editor: Kimberley Van Hooser, Miller Freeman Inc., 600 Harrison Street, San Francisco, CA 94107 (10.) Owner: Miller Freeman Inc., 600 Harrison Street, San Francisco, CA 94107, a wholly owned subsidiary of United News & Media plc, Ludgate House, 245 Blackfriars Road, London SE1 9UY, England (11.) There are no Known Bondholders, Mortgages, or Other Security Holders Owning or Holding 1 percent or More of Total Amount of Bonds, Mortgages, or Other Securities (12.) Does not apply (13.) Publication Name: Game Developer. (14.) Issue Date for Circulation Data Below: October 1999. (15.) Extent and Nature of Circulation / Average No. Copies Each Issue During Preceding 12 Months: A. Total No. Copies (Net Press Run): 44,947 B. Paid and/or Requested Circulation (1.) Sales Through Dealers and Carriers, Street Vendors, and Counter Sales: 2,732 (2.) Paid or Requested Mail Subscriptions: 31,553 C. Total Paid and/or Requested Circulation (Sum of 15B1 and 15B2): 34,284 D. Free Distribution by Mail (Samples, Complimentary, and Other Free): 1,439 E. Free Distribution Outside the Mail (Carriers and Other Means): 1,283 F. Total Free Distribution (Sum of 15C and 15F): 37,007 H. Copies Not Distributed (1.) Office Use, Leftovers, Spoiled: 1,555 (2.) Return from News Agents: 6,385 I. TOTAL (Sum of 15G, 15H(1) and 15H(2): 44,948. Percent Paid and/or Requested Circulation: 92.64%. Actual No. Copies of Single Issue Published Nearest to Filing Date. A. Total No. Copies (Net Press Run): 43,366 B. Paid and/or Requested Circulation (1.) Sales Through Dealers and Carriers, Street Vendors, and Counter Sales: 2,460. Paid or Requested Mail Subscriptions: 32,167 C. Total Paid and/or Requested Circulation (Sum of 15B1 and 15B2: 34,627 D. Free Distribution by Mail (Samples, Complimentary, and Other Free): 1,569 E. Free Distribution Outside the Mail (Carriers and Other Means): 0 F. Total Free Distribution (Sum of 15d and 15e): 1,569 G. Total Distribution (Sum of 15c and 15f): 36,196 H. Copies Not Distributed (1.) Office Use, Leftovers, Spoiled: 1,695 (2.) Return from News Agents: 5,475 I. TOTAL (Sum of 15g, 15h(1) and 15h(2): 43,366. Percent Paid and/or Requested Circulation: 95.67%. I certify that the statements made by me above are true and complete (signed) Kimberley Van Hooser, Managing Editor. SOAPBOX by

Go, Team!

uman nature being what it is, I was hugely credited with those titles — the good and the bad — vaguely embarrassing. flattered to be asked to participate in the It would certainly be the height of arrogance for me to take sole or even September 1999 PC Gamer article about majority credit for them. UNDERWORLD and the 25 most talented people in gaming — would have amounted to nothing — H wouldn’t have happened at all — with- the one they titled “Game Gods,” lead- much of what I dislike about the game out the initial impetus provided by ing to no end of entirely justified rib- business as we approach the millenni- Blue Sky Productions’ founder Paul 72 bing around ’s Austin um. But let me be more specific. Neurath. UW and SHOCK would never offices.... I’ve been credited with the creation of have been as cool or memorable as Ribbing aside, such an honor repre- UNDERWORLD and SYSTEM SHOCK, hon- they were without the inspirational sents an almost unmatchable expres- ored as “The Man” behind VII, leadership of project director Doug sion of respect from journalists, peers PART 2: SERPENT ISLE, cited as the creative Church (the Most Talented Individual and gamers — the sort of thing one force behind the “underappreciated” I’ve worked with in this team-oriented works a lifetime to achieve. It may sur- WINGS OF business, if you must know). And let’s prise you, then, that I almost turned GLORY. not forget the contributions of pro- the opportunity down. grammers like Marc LeBlanc, Rob Why? Fermier, Art Min, Jon Maiara, Dan Well, the crux of the biscuit is that it Schmidt, and James Fleming, or seems unseemly and, more important, designers like Tim Stellmach and inappropriate to single people out for Dorian Hart, or audio guys like Greg “star treatment” in a business as LoPiccolo and Eric Brosius, or testers intensely collaborative as game devel- like Harvey Smith. UNDERWORLD and opment. Before getting into gaming, I SYSTEM SHOCK are their creations, always figured I’d end up making not mine. More accurately, they are movies and spent a lot of time studying our creations, all of us applying our that business — you know, “film, the unique, individual talents to the collaborative art....” Well, I’m here to accomplishment of mutually agreed- tell you that there is no more collabora- upon goals. tive medium than gaming. The movies Similarly, SERPENT ISLE is the product got nothin’ on us, friends. There are so of more than 30 hearts, minds, and few renaissance game creators it’s hard- souls. I came up with a tone and “feel” I ly worth the effort of identifying and wanted to achieve and a story concept. I listing them. set some parameters on the world and In fact, honoring individuals repre- illustration by Jackie Urbanovic characters. But the minute-to-minute sents an almost criminal denial of the As anyone who knows me will tell you, details of the storyline were fleshed out critical contributions of the dozens of I’m intensely proud of those titles and by some amazingly talented designers team members who are, if anything, my contributions to them. All of them — Steve Powers, Dave Beyer, Bill more responsible for the success of the appear on my résumé, points of pride Armintrout, and others. And I watched, games you know and love than the and high-water marks in a career that usually with jaw on ground, as lead individuals typically credited with the also includes some real clinkers. artist and the rest of the creation of those games. And the eleva- (Thankfully, no one much talks about art team brought to life the world and tion of individuals to star status, while the bad ones anymore but buy me a characters of SERPENT ISLE. And without understandable in this increasingly drink sometime, and I’ll tell you hor- testers like Marshall Andrews, the game marketing-driven age, symbolizes ror stories....) Frankly, I find being wouldn’t have been half what it ended up being. I built not one inch of the Warren Spector runs Ion Storm’s Austin, Texas, office. He is currently working on a map, wrote not one line of dialogue, new role-playing game, DEUS EX. In the past, he has produced games for Origin and implemented not one game function. Looking Glass Technologies. You can reach him at [email protected]. So whose game is it? Continued on page 71.

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

Continued from page 72. was largely the same Molyneux, Sid Meier, and some others but put them all together and you’ve thing. I came up with an idea, a feeling in the PC Gamer group. (And, man, did got a package I’ve come to see as pretty I wanted to evoke during play. I worked I geek out and have a great time hang- rare over the years, one that allows me with a design team ultimately led by ing with them!) Maybe I’m the anom- to play to the strengths and help over- Dave Beyer to craft a story and basically aly. I doubt it, though. I’m willing to come the weaknesses of almost any nodded my head a lot in stunned agree- bet we’re all team-oriented guys. team. I’m not being modest. But “Game ment as lead artist Whitney Ayres craft- I suspect the impetus to single out God”? Hmm? ed the perfect look for the game. I one person for credit (or blame) is Anyway, if you’re a producer, project watched, often dumbstruck, as pro- some kind of human need for short- director, or Game God, reflect for a grammers Bill Baldwin, Tony Bratton, hand, a way to separate wheat (good moment as you talk to the press, pub- and John Talley brought to near perfect games) from chaff (bad games) with lishers, and PR people on all the unsung life the vision I had in my head when some simple formula based on past heroes whose names are never men- we started. Who deserves credit for successes. Or maybe the spotlight tioned. Think of their contributions to WINGS OF GLORY? turned on individual game developers, “your” success and to the “individual” When “Warren Spector’s DEUS EX” making some of us “brand names,” is successes of the other lucky folks lauded comes out, will people acknowledge just an easy way for marketing guys to on gaming web sites and in the pages of the incredible contributions of lead earn their salaries. I don’t know. game magazines. Give credit where programmer Chris Norden, lead What I do know is that I’d be credit is due. I know it’s hard. I know designer Harvey Smith, lead artist Jay nowhere without the teams that have the press doesn’t want to hear this. But Lee, and the rest of the team? Odds backed me up and often dragged me, do it anyway because it’s the right thing 71 are, they won’t and I’ll end up writing kicking and screaming, toward success. to do. more articles and posting more Usenet And before anyone starts assuming I’m And if you’re one of the unsung, messages and talking to more journal- being falsely modest, let me assure you I well, all I can say is hang in there. We ists to convince gamers that individu- have quite enough ego for several ordi- may live in a PR world nowadays, but als don’t make great games — great nary mortals. I know I’m a good design- your contributions are appreciated by teams do. er, a good process manager, a good peo- people who “get it.” And maybe — Now, maybe there are a couple of ple manager, a good business guy, and just maybe — if we all start talking guys in the list of “Game Gods” who I’m even O.K. at the PR end of things. about this, someone will start listen- are one-man shows. I certainly find There are certainly others who are better ing and you’ll get your well-earned myself in awe of , Peter than I am at any one of those things, day in the sun. ■

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