FEBRUARY 1999

GAME DEVELOPER MAGAZINE GAME PLAN

600 Harrison Street, San Francisco, CA 94107 t: 415.905.2200 f: 415.905.2228 w: www.gdmag.com Landing the da Vinci Deal Publisher Cynthia A. Blair cblair@mfi.com EDITORIAL Editorial Director ast fall, I had the fortune to Second, decide early whether the fea- Alex Dunne [email protected] find myself in a little town tures or performance gained warrant Managing Editor in France called Amboise, the extra work. If what’s being asked of Tor D. Berg [email protected] Departments Editor L located about two hours you won’t make your game better, the Wesley Hall [email protected] outside of Paris by train. While wan- deal may be skewed substantially in Art Director dering around town one day, I came their favor. You’re lengthening your Laura Pool lpool@mfi.com upon an impressive estate which I development cycle and/or cutting out Editor-At-Large Chris Hecker [email protected] quickly learned was Leonardo da the development of important features Contributing Editors Vinci’s final residence. Da Vinci was in order to implement irrelevant (or Jeff Lander [email protected] given this residence (called Chateau du worse yet, harmful) “features” to the Mel Guymon [email protected] Clos-Luce, or “house of light”) by King game. Remember that by far your most Omid Rahmat [email protected] Advisory Board Francois I in 1516. In return, the king important customer is the player, and Hal Barwood LucasArts wanted da Vinci simply to continue his that all decisions should be made with Noah Falstein The Inspiracy artistic and scientific explorations. If that fact in mind. Brian Hook id Software Susan Lee-Merrow Lucas Learning 6 some invention suited Francois’ mili- Third, find out how exactly your Mark Miller Harmonix tary objectives (as some did), so much patron hardware manufacturer will Paul Steed id Software support your efforts. Will they actually Dan Teven Teven Consulting the better for the king. Essentially, da Rob Wyatt DreamWorks Interactive Vinci was given free creative reign to help code certain sections of the game? do what he was already doing, and in Find out how much documentation ADVERTISING SALES return his patron enjoyed the fruits of and developer support will be provided Western Regional Sales Manager Alicia Langer alanger@mfi.com t: 415.905.2156 da Vinci’s ideas. before you agree to anything. If you hit Eastern Regional Sales Manager/Recruitment While at Clos-Luce, I couldn’t help a roadblock while trying to implement Ayrien Houchin ahouchin@mfi.com t: 415.905.2788 but think about an analogy to this sce- something for this company, you ADVERTISING PRODUCTION nario within our own industry. Like should be able to get answers to techni- Vice President Production Andrew A. Mickus Francois, today’s consumer hardware cal questions quickly and easily. Advertising Production Coordinator Dave Perrotti manufacturers rely on the technical Inquire about the exclusivity of your Reprints Stella Valdez t: 916.983.6971 and creative talents of game developers. deal. If you agree to support the Brand MILLER FREEMAN GAME GROUP MARKETING To a large extent, games are the raison X API, does that preclude you from Group Marketing Manager Gabe Zichermann d’être for these hardware manufacturers. working with another hardware com- MarComm Manager Susan McDonald That’s why these hardware companies pany? Knowing what you cannot do is Marketing Coordinator Izora Garcia de Lillard

throw you parties at trade shows, send as important as knowing what you CIRCULATION you free hardware, help you market must do. Vice President Cirulation Jerry M. Okabe your game, get you retail shelf space, If you are planning to reuse or Assistant Circulation Director Mike Poplardo offer bundling deals, and on occasion a license your game engine to others Circulation Manager Stephanie Blake hardware manufacturer will simply some day, how does an agreement with Circulation Assistant Kausha Jackson-Crain shower you with some cash. In short, a hardware company affect those Newsstand Analyst Joyce Gorsuch

they need your talents. But while incen- strategies? Find out what lasting lega- INTERNATIONAL LICENSING INFORMATION tives can be difficult to refuse, especial- cies you’ll have to live with after the Robert J. Abramson and Associates Inc. ly if you’re a small developer in need of current game ships. President Libby Abramson all of the above, Rob Wyatt of Finally, in the event that you’ve just 720 Post Road, Scarsdale, New York 10583 t: 914.723.4700 f: 914.723.4722 Dreamworks Interactive suggests that finished this column and thought to e: [email protected] you ask the following questions before yourself, “I wish I had the problem of Miller Freeman you sign on the dotted line. too many suitors — where’s my A United News & Media publication The first question you should pose is patron?”, take heart. Remember that Chairman-Miller Freeman Inc. Marshall W. Freeman to yourself: “Why me?” Why do you the universe of game developers is far President/COO Donald A. Pazour think this hardware manufacturer is so larger than the combined developer Senior Vice President/CFO Warren “Andy” Ambrose Senior Vice Presidents H. Ted Bahr, Darrell Denny hot to get your support of its upcoming relations staffs at all of the consumer Galen A. Poss, Wini D. Ragus, Regina Starr product? Sure, you know your game hardware companies out there. Don’t Ridley, Andrew A. Mickus, Jerry M. Okabe will be incredible, but does your wait for them to find you. After all, it Vice President/SD Show Group KoAnn Vikören prospective patron have the same was da Vinci who first introduced him- Senior Vice President/Systems and Software Division Regina Ridley vision for it as you? Understand what self to Francois and offered his services, ■ that company expects from your game not the other way around. BPA International Membership before you agree to implement any Applied for March 1998 changes in it. If there are differing expectations for the game, you’ll have problems down the line.

GAME DEVELOPER FEBRUARY 1999 www.gdmag.com New Products: Kaydara’s Filmbox, Newtek’s Frame Factory, and Credo’s PowerModels p. 9

Industry Watch: Game Grammys, Senators’ ratings, and medical break- throughs p. 10

Product Reviews: Paul Steed reviews News from the World of Game Development Surface Suite Pro pp.12-14

Reality is a cross-platform C++ devel- final output from one desktop system. New Products oper kit designed specifically for the- The package includes an uncom- creation of real-time plug-ins for pressed ITU-R-601 video I/O board, by Wesley Hall Filmbox. Developers have complete Lightwave 3D 5.6, and Aura, Newtek’s access to Kaydara’s performance archi- video paint production software tool tecture, as well as import/export — all optimized to work together on Made Easy access to all major 3D products such Windows NT. as Alias|Wavefront Power Animator/ Newtek's Frame Factory for Intel is KAYDARA is shipping Filmbox 1.5, its Maya, Kinetix 3D Studio Max, Newtek immedeately available for a suggested real-time production software. Lightwave, and Softimage 3D. retail price of $3,995. Minimum sys- 9 A suite of motion capture, anima- Available on both the Windows NT tem requirements are Windows NT tion, and interactive rendering tools, (Intel and Alpha) and Silicon Graphics with service pack 3, a Pentium Filmbox is designed to simplify IRIX operating systems, Filmbox 1.5 is 166MHz, 96MB RAM, drive system motion capture mapping and editing. immediately available with pricing capable of 21MB/Sec sustained data The suite integrates into the produc- starting at $4,995. The Open Reality rate, and available bus mastering PCI tion workflow for game, television, SDK is also available separately, direct- slots for Frame Factory board and and film productions, and supports all ly from Kaydara. SCSI controller. major 3D packages. Feature highlights ■ Kaydara Inc. ■ Newtek in Filmbox 1.5 include: HumanIK, Montreal, Quebec, Canada San Antonio, Tex. Motion Sculpting, and Open Reality. (888) 842-6842 (210) 370-8000 HumanIK is a new tool for automati- http://www.kaydara.com http://www.newtek.com cally attaching motion capture data to skeletons. It connects capture data and character joints for you. Motion Affordable Frame Factory Ready-Made Models Sculpting’s new control curves allow you to apply offsets to captured ani- NEWTEK recently launched and shipped CREDO INTERACTIVE has released mation, and give you a secondary Frame Factory, its first professional Powermodels, a collection of level of animation control. Open hardware and software digital video, ready-to-animate 3D character paint, and anima- models. tion solution. The Powermodels collection includes Frame Factory is 24 multiracial human characters from an affordable hard- Zygote Media Group, 13 human char- ware/software inte- acters from Geo-Metricks, and six origi- grated solution (it nal insects created by Credo sells for under Interactive. With Powermodels, Life $4,000) that is Forms users (as well as users of Max specifically designed and Lightwave) can now populate for 3D animation, their projects with diverse characters, real-time video cap- create multiple character interaction, ture and playback, and quickly create large crowd scenes 2D animation, — even if the crowd is a swarm of video paint, 2D and Pixar-inspired bugs and ants. 3D video manipula- Powermodels is immediately avail- tion, and video pro- able and sells for a suggested retail cessing. It gives you price of $249. The models are compati- complete control ble with Life Forms, 3D Studio Max, over modeling, tex- and Lightwave 3D formats. turing, painting, ■ Credo Interactive Filmbox supports a number of motion capture devices and animating, render- Vancouver, B.C., Canada displays the virtual character in real time. Filmbox also ing, rotoscoping, (604) 291-6717 supports mutiple characters. compositing, and http://www.credo-interactive.com http://www.gdmag.com FEBRUARY 1999 GAME DEVELOPER BIT BLASTS

sale in the U.S. and Europe. A looping patients with stress-induced irritable Industry Watch G-POLICE video, point-of-sale material, bowel syndrome (which you’d be sur- and themed areas will be present in all prised to know affects almost 10 percent by Alex Dunne Diesel stores. This is the second time of the population). The patients were that the two companies have worked treated using a game developed by a GAME GRAMMYS? For all of you com- together to promote a game (they pro- company called ULTRAMIND, which relied posers out there who complain that you moted the original G-POLICE together). on sensitive sensors to monitor stress don’t get enough credit for your work, levels and provide real-time biofeed- maybe a Grammy Award will ease your SENATORS Joseph Lieberman (D-Conn.) back. The more relaxed the patient, the suffering. It was recently revealed that and Herb Kohl (D-Wis.) released the better the progress in the game. The the National Academy of Recording Arts fourth annual “ Report software developers hope that their sys- and Sciences met with about a dozen of Card” on the state of game morality, tem will be help reduce anxiety levels, the game industry's top music profes- which was conducted by the improve workplace performance, train sionals (including George Alistair Minneapolis, Minn.-based National and educate children to deal with vari- Sanger, Bobby Prince, Mark Miller, Rob Institute on Media and the Family. ous situations, and treat a variety of Hubbard, and ) in San Perhaps not surprisingly, the industry psychosomatic disorders. Ah, the won- Francisco, Calif., to discuss the feasibili- took it on the chin once again. Kohl ders of our craft. ty of establishing a Grammy Award for and Lieberman simultaneously praised our industry. Think of something along the industry for adhering to the five- 10 the lines of “Best Original Soundtrack year-old ESRB voluntary ratings system from an Interactive Game.” You can and blasted the gore found in its most thank Chance Thomas, a composer at violent games. In citing the worst Yosemite Entertainment, for getting the offenders on the market this past ball rolling with the Grammys. Christmas, the report gave DUKE NUKEM: TIME TO KILL the lowest “KidScore” rat- MGM INTERACTIVE AND ELECTRONIC ing, followed closely by BIO FREAKS and ARTS entered into a worldwide develop- MORTAL KOMBAT 4. The report, and rat- ment and distribution agreement for ings for individual games, can be found MGM’s next slate of interactive titles. In at http://www.mediaandthefamily.com. the deal, MGM’s upcoming titles, including TOMORROW NEVER DIES and GT INTERACTIVE signed affiliate label ROLLERBALL, will be sold, marketed and agreements with Sega PC and Sega Soft DUKE NUKEM: TIME TO KILL earned the distributed by EA worldwide. Networks, whereby it will handle the lowest “Kidscore” from Senators. North American sales and distribution SEGA SOLD 150,000 DREAMCASTS on of PC titles from both Sega companies. its first day of sales in Japan, and the The agreements cover upcoming Sega company is shooting to sell one mil- games including ENEMY ZERO, VIGILANCE, lion units by the end of March. and SEGA RALLY 2 CHAMPIONSHIP. UPCOMING EVENTS

SOFTIMAGE AND NINTENDO announc- DOCTORS AT THE ROYAL FREE ed a partnership to design and create HOSPITAL in London announced the game development tools for the N64 results of a test they conducted to treat CALENDAR home video game console. Under the development agreement, Nintendo and Softimage will collaborate on defining February 9-12, 1999 NIFF (Nintendo Intermediate File Format) 2.0 and Softimage is adding Milia 99 Palais des Festivals new features to Softimage 3D 3.8 to Cannes, France support N64 development. The Cost: $655 Nintendo NIFF 2.0 development envi- http://www.reedmidem. ronment and the Softimage tools will milia.com ship concurrently to all authorized Nintendo developers in January 1999. February 17-20, 1999 PSYGNOSIS AND CLOTHING FIRM DIESEL announced that they will co- TED 9 promote the upcoming title, G-POLICE Monterey Convention Center WEAPONS OF JUSTICE. Diesel has designed Monterey, Calif. jackets, pants, T-shirts and sweatshirts Psygnosis and Diesel team up to cre- Cost: $2,250 based on the futuristic game world, for ate game fashion. http://www.ted.com

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com BIT BLASTS

and make sure the texture tiles, thus Next, I loaded up Cash’s head model. avoiding any unsightly seams. If, how- After assigning the texture in the ever, the UV coverage needs tweaking, Modifier menu, I assigned Texturizer to I turn to UV Unwrap (a modifier that the head. A standard mapping gizmo of comes free with Max). Always looking the planar variety immediately popped for the next better thing, I got wind of up, oriented from the top. In the man- a nice little third-party plug-in for 3D ual, Sven recommends using a planar Studio Max called SurfaceSuite Pro by projection instead of a cylindrical or Sven Technologies. spherical one (although SurfaceSuite Advertised as the ultimate texture- supports all three types). Although this mapping application, SurfaceSuite Pro is contrary to the technique that I nor- for 3D Studio Max consists of four plug- mally use, the manual explains that a ins: Texturizer, Multimask, Gaussian planar projection works for 95 percent Blend, and Global Map Generation. of the jobs for which you’ll use Texturizer is the main mapping plug-in SurfaceSuite. Hmmm… and allows you to manipulate UV coor- I rotated my viewport so that Cash’s dinates. Multimask and Gaussian Blend untextured head appeared straight on. SurfaceSuite handle the texture-blending features, The manual directs you to apply and Global Map Generation creates a Texturizer in the perspective viewport, 12 Pro for Max single composite map from multiple, but I would have preferred to use a blended, overlapped textures. Sven also front viewport. I clicked on Subobject by Paul Steed offers all these functions in a stand- and brought up Projection. As planar alone application called simply projection is already selected by ver the past six months, I’ve SurfaceSuite Pro. But since Texturizer is default, I clicked on Viewport Align to done quite a bit of research a plug-in for the modeling and anima- align the mapping gizmo to the view- O on the manipulation of UV tion package that I use (Max), I decided port. Finally, selecting Fit expands the coordinates. My goal is to get the most to give it a closer look. gizmo a little to “fit” the object’s front- effective coverage I can on a given Installing Texturizer was easy on dimensions (Figure 2). mesh for our upcoming title, QUAKE 3: enough. After launching Max and So far, so good. Clicking Association ARENA. Because I’m the animation and authorizing the plug-in with Sven, I under the Subobject menu beneath modeling department at id Software, added it to my button set of modifiers. Projection presented me with a menu to speed is of the essence for me to do my For this exercise, I used a prebuilt mesh create association points. As association job effectively. based on the head of John Cash, a pro- points are like making your own UV When creating a character, I typical- grammer here at id. Before loading in points on the fly, this sounded neat. ly use a cylindrical mapping projection the head, though, I had to make a Sven suggests laying down five material to apply to it. I used a points on the object’s mesh and five 256×128 texture created in Adobe corresponding points on the texture Photoshop from front and side shots of that will wrap around it, and then old Cash. I designed the texture to naming them (such as, “Right Eye,” wrap-around the mesh, joining seam- “Left Eye,” and so on). These five mark- lessly at the back of the head (Figure 1). ers, which should correspond to each eye, the nose, and the two corners of the mouth, are used as reference points to apply the texture onto the object properly. Naming these points in that fashion is way too time consuming so, with the Define Texture Points window open, I’d lay a couple points on the texture then a couple points on the mesh. This approach worked fine until I added a point at each ear. Ouch. FIGURE 1. Front- and side-views of Unfortunately Texturizer didn’t like Cash’s head and the resultant seam- FIGURE 2. Fitting the mapping that too much (Figure 3). less texture. gizmo to an object. I was pretty sure that the problem was with the planar mapping, so I thought I’d lump myself into that five Paul Steed has been making low-polygon models and animating since 1992. He’s percent that uses something other than been at id for more than two years now, having worked on QUAKE 2 and the current the planar mapping scheme and give project: QUAKE 3 ARENA. He very much enjoys being a guy and equally enjoys doing cylindrical mapping a poke. I changed very stereotypical guy things. the Projection subobject under the Texturizer modifier from Planar to

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

FIGURE 3. Something’s wrong with FIGURE 4. Switching from planar to FIGURE 5. Assigning new associa- these association points. cylindrical mapping in the middle of tion points with a cylindrical mapping the operation isn’t advisable. type works pretty well.

Cylindrical, and as you can see, the results weren’t pretty (Figure 4). So I numbering is simply a temporary However, I found that attempts to cor- deleted the old association points and name for you to change. It’d be nice if rect the hairline came at a cost: the created new ones using the new cylin- the numbering tied itself directly to glasses started looking kind of droopy. 13 drical mapping type. Starting over the association points. So I decided to delete the current asso- again, I laid down the prescribed five Adding more association points tight- ciation points at the hairline and cre- points in the Define Texture Points ens up the map-to-mesh relationship ate new ones at the different spots, but window, and did the same on the even more, but I found that knowing that didn’t work. The glasses still mesh. That did the trick (Figure 5). where to create these points is an drooped (Figure 7). Okay. I have a few small complaints acquired skill. I created some points at So I tried adding more association with this process up to now. First, each ear, but that caused the mapping points around the glasses. Here, I got although the texture I was previously to go haywire yet again. I was more suc- to play with one of the more interest- editing in the Define Texture Points cessful when I tried tightening up the ing aspects of Texturizer: the Move to window was still loaded when I went forehead by creating two points at the Surface button. When it’s on, this fea- back to it, Texturizer didn’t remember front hairline. By creating a point at the ture lets you select and move associa- my previous window setting (I previ- back of the head, I was able to remove tion points while staying “glued” to ously had a zoom factor setting of 2:1 some weird texture-mapping effects at the mesh. This deforms and changes on the source image). The second the side of the mesh. Overall, the cylin- the texture as the points are moved quirk I noticed was that, while I could drical mapping method worked well, around. Unfortunately, it didn’t do me delete editing points on the mesh except at the top of the mesh, where much good because I couldn’t figure using my keyboard’s [Delete] button, cylindrical mapping schemes invariably out a comfortable correspondence deleting association points in the have problems (Figure 6). between moving the association points Define Texture Points window didn’t In an attempt to fix problems associ- in the Define Texture Points window support the [Delete] key. You have to ated with the placement of the charac- and moving points on the surface of use the Delete button in Texturizer. ter’s hairline, I moved some association the mesh. When do you need to move Finally, when you create a point in the points around. It’s interesting to see one and not the other? Define Texture Points window, it’s what happens when you move these I decided to live with the droopy given a number value that is consecu- points: the entire mapping outline of glasses for the time being and concen- tive from the number value of the last the mesh seen in the window moves trate on a problem on the side of the point created. When a point is deleted, around and is updated in the viewport. head. In the process of wrapping the the numbering system still marches texture around the object, an ear disap- on. I guess this is because the random peared. Because my last attempt to cre- ate an association point at the ears turned out to be a failure, I trod careful- ly, cursor near the Undo button. I creat- ed a point by the right ear of our texture subject, but I simply couldn’t get the ear to align to the mesh properly. At this point, I deduced that the default naming of the association points had to do with the dilemma. More specifically, the default names FIGURE 7. Manipulating association given to the points on the mesh had FIGURE 6. Relative success using points at the hairline led to problems to correspond to the like-named associ- the cylindrical mapping method. around the glasses. ation points on the texture. And because I’d been adding and deleting http://www.gdmag.com FEBRUARY 1999 GAME DEVELOPER BIT BLASTS

JUDGES SAY… In my opinion, Texturizer promising, but ultimately outmatched is a decent tool, but it has some by UV Unwrap. However, if you’re not annoying aspects to it. I found the using Max and don’t have a utility of necessity to name association points in this nature, you should check out order to get better mapping results to Sven’s stand-alone version of be a bad time sink. This product does SurfaceSuite. Softimage, Lightwave, feature some powerful multitexture Maya, and Photoshop files can be easily blending capabilities and animatable brought into SurfaceSuite Pro, and the texture mapping, but I don’t find these package offers the same features as the compelling enough to switch from UV set of plug-ins — Texturizer, Multimask, Unwrap. While SurfaceSuite possesses Gaussian Blend, and Global Map FIGURE 8. Synching up association some pretty good functionality, it did Generation — without tying you to points still didn’t fix the ear problem. nothing to boost my productivity. Max. Texturizer has promise, but for Overall, I think SurfaceSuite’s now, my money’s on UV Unwrap for points haphazardly during the course of Texturizer plug-in for 3D Studio Max is UV manipulation in 3D Studio Max. ■ fitting the texture to the object, default names for corresponding points on the mesh and texture were being assigned SurfaceSuite Pro for 3D Studio Max: different numbers. Company: Sven Technologies Pros Cons 14 To solve the problem, I went to the Palo Alto, Calif. 1. Easy to set up. 1. Tutorials are a little weak. mesh and created a series of points and (650) 852-9242 then deleted them to resynchronize the http://www.sven-tech.com 2. Four plug-ins instead of 2. The editing window default point names. However, even one. doesn’t remember Price: $495 (stand-alone with this problem solved, the results settings. version is $595) 3. Moving association points weren’t great, as you can see (Figure 8). around on the mesh is 3. Naming infinitely num- System Requirements: Finally, I decided to cut my losses and very slick. bered association points Windows 95/98/NT, 3D accept the fact that using Texturizer, slows down the work flow. Studio Max, 32MB RAM poor Cash would have a permanent bad and an SVGA video card hair day on the right side of his head.

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

When Two Hearts Collide

ebruary is Valentine’s month. Spring is in the air. People can meet, fall in love, and have their hearts broken all before their first cup of coffee. I don’t think we’ve reached the point, yet, where we can adequately simulate a broken heart. However, I do think we can reasonably detect F whether two people are close enough for their hearts to collide. Last month, I discussed the use of the whether a point has entered the box The noteworthy line in this code is the dot product and cross product to han- involves only a trivial calculation. MultVectorByMatrix() call. This function dle collision detection for 2D applica- With OBBs, checking for collisions is transforms each vertex coordinate of 19 tions. This month we’ll look at how to more complicated. In many applica- apply the same principles to 3D. Most tions, OBBs may be worth pursuing discussions of collision detection for further, but for a quick first check, I real-time game applications begin with want to stick with AABBs. bounding spheres and bounding boxes. So what are the main problems with These two tests are very rough indica- coding up AABBs? Well, the biggest tors of whether or not a collision has issue with using AABBs is that they occurred. Bounding spheres are a very need to be recreated every time the fast method for testing collisions. object changes orientation. This means However, as we saw last month, that every vertex must be transformed bounding spheres don’t generally pro- by the object’s matrix and the mini- vide the best approximation of an mum and maximum extents must be object’s extents. calculated. Listing 1 contains a routine that calculates an AABB for an object. Don’t Box Me In FIGURE 2. Axis-aligned bounding n axis-aligned bounding box box on a rotated object. A (AABB) is also a very quick way of determining collisions. The fit is gen- erally better than a bounding sphere (especially if the object you are bounding is a box itself). You can see an AABB on an object in Figure 1. However, once you rotate the object a little, the bounding box may not be nearly as efficient, as you can see in Figure 2. This discrepancy could clearly lead to cases in which you mistakenly assume that a collision has occurred. But, as a first step, calculating an AABB may not be too bad. We could allow the original bounding box as calculat- ed in Figure 1 to orient along with the FIGURE 1. Axis-aligned bounding FIGURE 3. Oriented bounding box object (Figure 3). This is called an ori- box on an object. on a rotated object. ented bounding box (OBB). It’s defi- nitely a better fit than Figure 2, howev- Jeff watches over a vast empire at Darwin 3D. He is also responsible for any collisions er, I have lost the key benefit of AABBs. involving his e-mail box at [email protected]. Test his collision response efficiency Aligned axes make AABBs easy to use by sending him questions and comments. in collision detection. Checking http://www.gdmag.com FEBRUARY 1999 GAME DEVELOPER GRAPHIC CONTENT

the object into world space, given the current object orientation. In the best case, this transformation can be reused when it comes to draw- ing the model. However, in the worst case, you’ll be duplicating transforma- tion work. In any case, the CPU is han- dling the matrix transformation for these bounding boxes. With the appearance of transformation hardware on graphics cards (such as the 3Dlabs Glint GMX and Diamond Fire GL 5000), this is a very costly operation. As this kind of hardware begins to dip into the consumer 3D hardware space, programmers need to be very careful to avoid using techniques that require vertex transformation by the CPU. Calculating a bounding box for a FIGURE 4. Fast and slow methods for calculating AABBs. 20 model with many vertices is a fairly expensive process. If your models are large, this can be a big frame-rate vam- LISTING 1. Calculate an axis-aligned bounding box for an object. pire that sucks the life right out of your game. /////////////////////////////////////////////////////////////////////////////// // Procedure: RecalcFullBBox // Purpose: Recalculates the BBox associated with a bone based on the Getting More Bang For My Buck // new position for the vertices. Tighter fit in // most cases. However, has to process all vertices ou may wonder if there is any /////////////////////////////////////////////////////////////////////////////// Y way to avoid having to transform GLvoid COGLView::RecalcFullBBox(t_Bone *curBone, tVector *min,tVector *max) every vertex into world space in order { to find the bounding box. There is a /// Local Variables /////////////////////////////////////////////////////////// way. However, like many things in tVector *temp,tempRes; // X,Y,Z VECTORS computer game programming, there is tNormalVertex *nvData; // VERTEX WITH NX,NY,NZ,X,Y,Z a trade-off. Because I’ve already calcu- t_Visual *visual; lated the bounding box of the object /////////////////////////////////////////////////////////////////////////////// in its rest position, it’s possible to visual = curBone->visuals; // GET AT THE VISUAL ATTACHED TO A BONE transform only those extreme points nvData = (tNormalVertex *)visual->vertexData; // THE ACTUAL INTERLEAVED VERTEX DATA by the current orientation and get a for (int loop = 0; loop < visual->faceCnt * visual->vPerFace; loop++) new bounding box. In other words, I { can take the vertices of the object’s temp = (tVector *)&nvData->x; // POINTER TO THE VERTEX XYZ VALUES OBB and use the maximum and mini- MultVectorByMatrix(&curBone->matrix, temp,&tempRes); // MULT BY THE BONE MATRIX mum of those positions to create a // FIRST VERTEX, SET IT AS THE MAX AND MIN new AABB. I’m guaranteed that the if (loop == 0) new bounding box will completely { contain the object because I’ve used memcpy(min,&tempRes,sizeof(tVector)); the extreme extents of the initial posi- memcpy(max,&tempRes,sizeof(tVector)); tion to create this new box. It may not } be a tight fit, but it will fit. The good else part is that this solution only takes { eight transformations to calculate this if (tempRes.x > max->x) max->x = tempRes.x; new box — quite a bit of savings if if (tempRes.y > max->y) max->y = tempRes.y; your model contains many vertices. if (tempRes.z > max->z) max->z = tempRes.z; You can see the difference in Figure 4. if (tempRes.x < min->x) min->x = tempRes.x; The image on the right is the true if (tempRes.y < min->y) min->y = tempRes.y; AABB for the object. The image on the if (tempRes.z < min->z) min->z = tempRes.z; left is created using the yellow OBB as } the source for the AABB. Listing 2 con- nvData++; tains the code for calculating a bound- } ing box this way. } Obviously, for some cases, this

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

method doesn’t result in nearly as the two objects, then I know for certain completely separates the two objects. snug a fit as our original AABB calcula- that the objects are not colliding. I’ll In order to test this separation plane, tion. However, it’s certainly faster, begin by considering each face of each I need to make sure that all the vertices and on a system with hardware vertex object as the separating plane. It should of the right object are on the other side transformation, you may prefer it. be clear that the face highlighted in yel- of this plane from the test object on Which method is right for your game? low in Figure 6 defines a plane that the left. It’s helpful to have a normal How should I know? Try them both defined for each face in the model. If and see. If you’re using bounding you don’t have face normals defined in boxes as a quick early check and have more sophisticated methods in follow- up tests, this quicker method may be good enough. When creating the initial bounding box for the faster AABB method, it’s easiest to calculate the AABB of the object in its initial rest position. However, the initial bounding box doesn’t have to be axis-aligned. You can achieve a better fit by defining an 22 OBB in the modeling program when FIGURE 5. Two objects near a colli- FIGURE 6. Finding a separating the object is built. The method will sion. plane. then use the OBB to calculate the cur- rent AABB. Depending on the model, an initial OBB may really help. LISTING 2. Faster AABB calculation using starting OBB. Certainly, a box built on a diagonal is a perfect candidate for an initial OBB. /////////////////////////////////////////////////////////////////////////////// // Procedure: RecalcBBox When Two Boxes Collide // Purpose: Recalculates the BBox associated with a bone based on the // original bounding box. This is faster then the true BBox in y nice new bounding boxes // most cases. However, this BBox is not as tight a fit. M overlap in two of my objects. /////////////////////////////////////////////////////////////////////////////// Chances are, I have a collision occur- GLvoid COGLView::RecalcBBox(t_Bone *curBone, tVector *min,tVector *max) ring between them. But I have to make { sure. Also, in order to do some inter- /// Local Variables /////////////////////////////////////////////////////////// esting things, I need to determine tVector tempRes; exactly where they are touching. Take int loop; a look at Figure 5. /////////////////////////////////////////////////////////////////////////////// The bounding box of the two objects for (loop = 0; loop < 8; loop++) // LOOP THROUGH ALL 8 BBOX COORDS clearly are colliding. It’s also just as { clear that the objects themselves are MultVectorByMatrix(&curBone->matrix, &curBone->visuals->bbox[loop],&tempRes); not. This is why being a human is great and being a game programmer is diffi- memcpy(&curBone->visuals->transBBox[loop],&tempRes,sizeof(tVector)); cult. A child can easily determine that if (loop == 0) the two objects in the picture are not { actually hitting each other. If a game memcpy(min,&tempRes,sizeof(tVector)); relies solely on bounding boxes for col- memcpy(max,&tempRes,sizeof(tVector)); lision detection, players may feel } cheated when two objects “hit” when else it appears as if they didn’t. So, how can { the computer determine that this is if (tempRes.x > max->x) max->x = tempRes.x; really not a hit? Notice that both of if (tempRes.y > max->y) max->y = tempRes.y; these objects are convex. This distinc- if (tempRes.z > max->z) max->z = tempRes.z; tion is very important. I’ll talk about what to do if your object is concave if (tempRes.x < min->x) min->x = tempRes.x; later, but for now, let me only consider if (tempRes.y < min->y) min->y = tempRes.y; the case where the two objects being if (tempRes.z < min->z) min->z = tempRes.z; tested are convex. } Last month, I talked about the idea of } separating lines. When dealing with } 3D, if I can find a plane that separates

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

the model file, you can create them by and edges to find a plane is obviously R E F E R E N C E S : averaging the vertex normals or by tak- pretty expensive to calculate. By saving Collision detection is a very active area ing the cross product of two of the vec- the separating plane from the previous of research. This method represents tors that make up the face. I can begin frame, I can take advantage of the fact only one. once I have a face normal to test with that the separating plane tends to — such as N in Figure 6. I create a vec- remain the same over several frames. • Gottschalk, Lin, and Manocha. tor between a vertex on the test face As I mentioned earlier, all of these “OBBTree: A Hierarchical and each vertex on the colliding tests only handle convex objects. It is Representation for Rapid Interference object. For example, I create a vector much easier to determine collision on Detection.” University of North between points A and B in Figure 6 and convex objects. If your objects are Carolina, Chapel Hill. call it Vector AB. Then I take the dot concave, you will need a method for http://www.cs.unc.edu/~geom/OBB/ product of that vector and the face nor- creating a convex hull around the OBBT.html mal, N • Vector AB. If this value is posi- object. You can do this through a vari- I mentioned the use of oriented bound- tive, vertex A is not colliding with the ety of methods. The concave object ing boxes. This paper extends this object. If all the vertices in the collid- can be broken into several convex method to include a hierarchy of OBBs. ing object are on the far side of the sep- objects. There are also automatic Also, several sources discuss the use of arating plane, then I definitely don’t methods of generating a convex hull tracking the closest features of two have a collision, and I’m done. around a concave object. One of the objects in order to determine when a What happens if I’ve gone through most popular methods is called QHull. collision occurs. 24 all of the faces and cannot find a sepa- You can find a link to it in the refer- rating plane? Do I definitely have a col- ences. However, it may be much more • Gilbert, Johnson, and Keerthi. “A fast lision? Unfortunately, no. There may efficient to have the artists create a procedure for computing the distance be a separating plane that’s not a face convex collision object for every between complex objects in three- on either object. An infinite number of object in the game. That way, the dimensional space.” IEEE Transactions planes exist, so how can I find one that artist can make the decisions about on Robotics and Automation, April separates the two objects? exactly what features are important to 1988, pp. 193-203. define as part of the collision bound- ary. This approach abides well by the • Lin, M. C. “Efficient Collision Detection game developer’s philosophy: “Do as Balancing on a Polygon Edge for Animation and Robotics.” Ph.D. much work up front as possible, espe- Thesis, University of California, uckily for me, I don’t have to try cially if it saves run time.” Berkeley, December 1993. L arbitrary planes to see if they sep- arate the objects. It turns out that if • Baraff, David, and Andrew Witkin, the separating plane is made up of a Boom, Boom, Out Go the Lights “Physically Based Modeling,” SIG- face on the object, then it must con- GRAPH Course Notes, July, 1998, pp. tain an edge in the object. Figure 7 hat’s all the time for this month. D32-D40. This paper also describes a displays two objects that cannot be The sample application will allow T method for using bounding box frame separated by any face in either object. you to load an object and play around coherence to achieve more efficiency. In this case, I create a plane com- with bounding boxes. When two posed of edge A and vertex B. If all of objects have overlapping bounding • Barber, Dobkin, and Huhdanpaa, “The the vertices of Object 1, with the boxes, a separating plane will be found, Quickhull algorithm for convex hulls,” exception of those that make up edge if possible. If not, a collision will be ACM Transactions on Mathematical A, are on one side of the plane, and all reported. Next month, I’ll take up the Software, Dec. 1996. This is the QHull of the vertices of Object 2, with the issue of collision response so we can library for calculating convex hulls. You exception of vertex B, are on the other find out what to do once a collision can find more info at side, then I may have found a separat- has happened. ■ http://www.geom.umn.edu/ ing plane. One last check has to be software/qhull/ made in order to make sure that vertex B isn’t actually on edge A. If they were • There are also several libraries of col- collinear, that would obviously be a lision routines available for use in non- collision. Once that possibility is ruled commercial applications. Commercial out, I can mark this as the separating applications may require a fee, so be plane. sure to contact the source before using Once I’ve tried every edge/vertex any library in a game application. These pair as well as all the faces, then the include I-Collide, V-Collide, Enhanced objects must be colliding. However, GJK, and others. A good link for all of once I’ve found this separating plane, I these is at the University of North can be sure that the objects are not col- Carolina, Chapel Hill web site, liding and I can move on. After the FIGURE 7. Separating two objects by http://www.cs.unc.edu/~geom. separating plane is found, it should be an edge-plane. stored. Going through all of the faces

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

Playing God: Creating Convincing Environments in RT3D

n last-month’s column, part one of the “Playing God” series, I outlined a process for streamlining the production of game-play–critical objects. This time around, we’ll look at the problem on a larger scale. Instead of focusing on the creation of I each individual model, we’ll examine how to assemble the separate component parts so that the result is a convincing, overhead while maintaining a coher- floating islands suspended in the immersive world. We’ll look at ways to ent look-and-feel for game-play–criti- clouds. The important thing to remem- 27 populate the environment with vast cal objects. If the environmental art ber is that you will be building your detail (with minimal effort), as well as serves to define the aesthetic for the world literally from the ground up, so go over some general tips and tricks on game, and the art bible outlines that isolating a consistent technique early creating the world itself. aesthetic, it therefore follows that on is critical. Because the rest of your when it comes to creating convincing objects need to fit within this land- environments, the art bible remains scape, it is a good idea to spend extra The Art Bible the single-most critical document to time tweaking the style and composi- which the artists will refer. Please see tion, otherwise you may find yourself n January, we discussed the impor- my column in last month’s issue of redesigning work that was based on a I tance of the art bible as it per- Game Developer for more discussion different aesthetic. The techniques for tained to game-play–critical objects. about putting together a solid, evolv- creating terrain are often specialized We saw how the art bible served as a ing art bible. In short, a solid art bible and unique to the rendering package guide to both designers and artists should have enough information, being used, although with standardized when trying to apply form to func- organized intelligently, to completely hardware acceleration, the playing field tion and minimize the development familiarize new art team member with is becoming increasingly level. This the game in only a few days. topic alone could fill an entire article, FIGURE 1. Environmental object cre- so we’re going to assume uniform com- ation flowchart. petency and move on to the next part What Constitutes an Environment? of the process. ARCHITECTURE. All artificial structures Environmental Object n the most general sense, environ- that game play takes place in or Creation I mental art includes all those around constitute architecture. resources necessary to create a graphi- Usually, these spaces are separate from Art Bible cally convincing world. It is critical to the world topography and can be plan for and identify those items that developed concurrently. If the topog- are the minimum required for creating raphy determines the overall atmos- Architectural Concepts an immersive RT3D experience because phere for the world, then the architec- time and personnel are both limited. ture determines its character. And Model Construction These critical environmental items fall because most game-play objectives into three basic categories: depend on some sort of artificial struc- Object Placement TOPOGRAPHY. Potentially the most time- tures to give them functionality, the intensive part of the project, this is the architectural style for the world must Ambient Object Assembly underlying structure within which all be outlined before the game-play–criti- game play takes place. Depending on cal items can be created. Final Lighting and Effects Pass the genre of your game, the topogra- AMBIENT OBJECTS. These are the little phy can be anything from a corridor- things that are used to fill out the based underground maze to a string of environment. Though not critical to

Mel has worked in the games industry for several years, with past experience at Eidos and Zombie. Currently, he is working as the art lead on DRAKAN (http://www.surreal.com). Mel can be reached via e-mail at [email protected].

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

game play, these items are essential in creations looking really cool and problem we’re going to be working that they make the world believable. If diverse, you need to bring out the with object databases. the architecture objects in a level are expansion sets. Organizing the ambi- analogous to a basic set of Legos, then ent objects in a way that is intuitive to the ambient objects in the level are use for artists and level designers can Working with Object Databases analogous to the Lego expansion sets. be a problem in itself, not to mention Sure, you could do some pretty cool the mammoth task of creating all the reating a sufficient level of com- stuff with the basic set, but to get your objects themselves. To address this C plexity in the environment is a task that can be tedious and time-con- suming. One of the most efficient methods for creating detail in the envi- ronment is by means of object databas- es. An object database consists of a group of objects that can be used to cre- ate isolated pockets of detail, or to bring coherence to existing game-play areas. Let’s say, for example, that you want to create several villages, each using the same style of architecture. The object 28 database for the villages would contain three or four different buildings, plus an assortment of crates, barrels, wood- piles, curing sheds, outhouses, and so on. By using these objects in different combinations, a large degree of varia- tion can be achieved with minimal overhead. The goal of the object data- base is to provide artists and level designers with a goody-bag full of generic building blocks with which to populate the world. Figure 1 shows an example flowchart for the Environmental Creation FIGURE 2. Architectural concept sketches from DRAKAN. Process. While these steps apply specifi- cally to creating ambient game-play areas, the basic precepts can be applied to almost any part of the RT3D devel- opment process. The important thing is that you develop a process and stick to it. To examine the process more closely, let’s look at an example, a farmhouse in the mountainous region of Surreal’s world of DRAKAN.

Architectural Concepts

nce the basic architectural style is O delineated in the art bible, each individual structure needs to be created on paper and then tested against the original concept. As the designs are being fleshed out, the art team can gen- erate feedback for each individual piece. And since you are still working on paper, this is the point in the process where changes to the design can be made with rapid turnaround and little or no work loss. Figure 2 shows an FIGURE 3. Modeled house. example of a set of design sketches for human-based architecture.

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

Model Construction benchmark against which to measure the original concept, the results the effectiveness of your process. While become less predictable, reducing your fter the concept has been mas- each step brings an evolution of the ability maintain a coherent artistic A saged and checked against the aesthetic, if there are large style gaps vision throughout the game. overall aesthetic, the structures can between each step, you are probably actually be built in 3D. Figure 3 shows not spending enough time in the early the model of a farmer’s house based on phases of the game. When a deadline Object Placement the previous architectural concept looms, the processes tend to fall to the sketches. Note that there is little devia- wayside due to time pressures. This can n Figure 4, we can see the first pass tion from the concept sketch to the cause problems later on because as the I at creating the farm. Note that the completed model. This is a good aesthetic for each phase diverges from only things present at this point are the topography with its associated textures and the farmhouse. While the house is well designed and readily identifiable, the overall effect is not very convincing. The house lacks con- text. At this point it’s time to go to the object database and begin assem- bling the individual pieces to add to 30 the scene.

Ambient Object Assembly

n Figure 5, we can start to see the I beginnings of a realistic outdoor scene. From our mountain world object database, some trees have been added to help achieve the effect of a mountainous forest. In this case, instancing and object redundancy have been exploited — there are, in reality, only two unique tree models in this scene, but they have been FIGURE 4. Structure placed in landscape. scaled and rotated to create variation and hide the similarities. Here again, we are getting the maximum amount of use out of our objects because we are using instancing. Note, also, that the farmhouse now has a better size reference, where before there was none. Still, the effect is not complete; the house appears in the scene as the only man-made object, and looks out of place. Now it’s time to dip into the farm- house object database goody-bag and customize our farm. To do so, we will add four objects: a barrel, a crate, a cart, and a section of fence. With the addition of these ambient objects, the farmhouse is unmistakable (Figure 6). Not only do the ambient objects serve to give variation and diversity to each individual structure, the additional objects serve to cement firmly the structure’s place in the landscape, while filling out the scene with inter- esting eye candy. This aids in game FIGURE 5. Farmhouse with trees. play as well because now that there is a fence, the player is funneled directly

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

this does take time to get right, so do some experimentation and schedule yourself enough time to tweak it. OBJECT DATABASE USAGE. One of best ways to take advantage of the object data- base is to have a junior level designer or artist simply go over the levels and drop in objects where they see fit. This is a good experience for the artist or designer and it doesn’t tie up your key people on a job that is somewhat tedious and mundane. USE MOCKUPS WHERE POSSIBLE. If your team is coding their own engine, there will probably be some dead time until the art path is solidified and you can actu- ally get your resources into the game. In the mean time, try setting up your environments in whatever modeling 32 package you’re using in-house (Softimage, 3D Studio Max, and so on). This works especially well when FIGURE 6. Additional object placement. trying to come up with special effects routines in whatever engine you’re using. By sitting down with an engi- towards front side of the house. Most lighting routines slightly modify neer and playing around with the par- Finally, with the addition of a cow or the existing RGB values of the texture, ticle system in your modeling package, two, the scale of the building becomes which boosts the already existing hues. for example, you can work together to even more recognizable, so that the This means that dark textures tend to visualize the effect you’re trying to overall effect is very convincing. stay dark, which basically defeats the achieve before any time is wasted lighting process. moving in the wrong direction. ■ LIGHTING. As we demonstrated in the Final Lighting and Effects Pass above examples, taking the time to S P E C I A L T H A N K S : light your levels with dynamic color Alan Patmore, Hans Piwenitzky, and nce you’ve got all the models combinations can yield a tremendous Louise Smith. O assembled in your world, it’s time return on the time invested. However, to add the finishing touches to the area to give it some atmosphere (Figure 7). We’ve adjusted the lighting in the world to mimic the ruddy glow of a set- ting sun, with a small amount of blue in the shadows. We’ve also added a small campfire in front of the house to give it some additional character. Most engines that support hardware acceler- ators also support colored lighting, so it’s a good bet you’ll be able to get your scene looking something like this. Now, go back and compare this result with the image in Figure 4, and you can see that with just a little prepara- tion and attention to detail, a few objects can make a huge difference.

Tips and Tricks

TEXTURES AND LIGHTING. When creating textures that are going to be lit with in- game lighting, you’ll need to be careful FIGURE 7. Final lighting and polish. to avoid textures that are too dark.

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com HARD TARGETS

3Dfx Against the Rest

o graphics chip or board company has reigned supreme over its competi- tors for very long. Usually, once a company achieves the exalted position of Number One, it can look forward to a short stay at the top. And no Ngraphics chip or board company has built as strong a consumer brand, in as short a period of time, as 3Dfx. In end version targeted at the retail market channels, you will find both versions of 1999, 3Dfx will have to transition from a where Voodoo and Voodoo2 have done the chipset, although PC OEMs probably 3D-only game players’ brand to a fully so well. The differences between the two won’t want to integrate the Voodoo3 fledged graphics company that competes Voodoo3 chips and Banshee are quite 3000 because of its higher cost. in both OEM and retail markets. How straightforward. The Voodoo3 has the While Voodoo and Voodoo2 gave 3Dfx competes, and how the competi- dual texture engines of a Voodoo2; it 3Dfx a unique position in the retail 34 tion behaves, will define the landscape supports AGP 2X, with planned support market, the emergence of Voodoo3 puts of 3D graphics for PC game developers. for AGP 4X in the works. 3Dfx claims them squarely in the same market as Voodoo3 delivers performance in excess any number of other chip vendors. At of Voodoo2 SLI configurations, but in a one point, they could have remained Voodoo3: A Miss or a Direct Hit? 2D/3D integrated package. The aloof from the fray, but now 3Dfx must Voodoo3 3000 is the much more inter- duke it out in the same mud pit with t Fall Comdex 1998, 3Dfx esting part of the two; it’s capable of everyone else. It’s a no-holds-barred A announced Voodoo3. In many supporting resolutions of up to contest that 3Dfx may not be equipped ways, Voodoo3 is what Banshee could 2048×1536 at 75Hz refresh rates. to win, even with the best technology. have been, and in some ways it’s a However, Voodoo3 is an 8.2 million descendant of Voodoo. However, transistor titan of a chip. That makes it Voodoo3 certainly isn’t a clear-cut win- as complex as any high-end CPU on the The Competition ner for the company because it puts market today, and 3Dfx will have its 3Dfx in the same 2D/3D graphics chip work cut out to deliver the highest per- n direct competition with 3Dfx are category as everyone else in the business. formance versions of the chips by its I Nvidia and 3Dlabs. These two com- First, Voodoo3 is not one chip or mid-1999 deadlines. The most likely panies compete via technologies that chipset. It comes in two packages: the scenario is that the Voodoo3 2000 will are supposed to drive their products 2000 and 3000 versions. The Voodoo3 be the first chipset to ship in full pro- into the mainstream from the upper 2000 is targeted at the OEM market, duction, followed by the Voodoo3 end of the multimedia PC spectrum. while the Voodoo3 3000 is a more high- 3000. It’s also likely that in the retail What these companies covet most is the

3Dfx’s quarter by quarter growth. In 1996 the company made in excess of $6 million. *The company noted $13 million as income, primarily due to its successful court case against Sega and NEC/Videologic. (Source: company financial statements; figures are in thousands).

Q4 1996 Q1 1997 Q2 1997 Q3 1997 Q4 1997 Q1 1998 Q2 1998 Q3 1998

Revenue $4,503 $5,247 $6,507 $10,018 $22,296 $50,008 $58,643 $33,206

Cost of 3,404 2,582 3,278 5,352 11,399 25,730 30,443 24,971 product

Gross profit 1,099 2,665 3,229 4,666 10,897 24,278 28,200 8,235

Research and 2,288 1,953 2,397 3,201 4,860 5,826 8,308 10,038 development

Selling, general and 2,422 1,846 2,521 2,684 4,338 9,638 8,041 6,971 administrative

Net income (loss) ($3,598) ($1,161) ($1,753) ($872) $2,704 $7,462 $9,032 $3,118*

Omid Rahmat works for Doodah Marketing as a copywriter, consultant, tea boy, and sole employee. He also writes regularly on the computer graphics and entertainment markets for online and print publications. Contact him at [email protected].

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com by Omid Rahmat

Board makers’ shares of 3Dfx revenues 3Dfx stands to gain the high ground if profit margins than boards. True, you for the first three quarters of 1998. — much as Nvidia has to date — it can can make more money with boards, but get its foot into both corporate and con- there is also the question of support, and sumer multimedia systems on the basis sales and marketing through indirect of performance, reliability, and support. channels (retailers and distributors). Creative Elitetron 20% Presently, 3Dfx is focused on its technol- 15% ogy and is leveraging its brand among Creative and Diamond at the Door game enthusiasts to drive its retail pres- Diamond The Rest ence and with strong brand recognition. 35% 30% nother threat looms for 3Dfx. An PC OEMs continue as customers. In the A outside chance exists that 3Dfx final part of 1998, only Nvidia and 3Dfx will merge or be acquired by a third were setting the world on fire with new party. So goes the general thinking in graphics chips. It’s a sellers’ market for the industry, at least. The reason for now, and game players’ appetites for this speculation can be traced to 3Dfx products — diminished though slot occupied by companies such as ATI attempts by Diamond and 3Dfx to form they may be — are still sufficient to keep and Matrox, but the technological area a joint venture in late 1998. The story the momentum going. that they have gone after is the 3D per- goes something like this: Diamond and formance of Voodoo. By contrast, 3Dfx started discussing ways of binding Matrox, despite some poor showings in themselves to each other. The rumor News Flash 35 the 3D performance stakes, continues to mill spoke of mergers and joint ven- dominate PC OEMs product segments tures, but we may never know for sure. s this article was going to press, where 2D performance is still the prima- What is known is that Diamond initial- A 3Dfx announced its intention to ry driving force. As a result, Matrox has ly benefited significantly from its rela- acquire STB Systems, and to become a a strong position in the entry-level tionship with 3Dfx, but then saw its fully-fledged provider of graphics chips Windows NT workstation lines of profits from sales of Voodoo and and boards. This deal is expected to go Compaq and Hewlett-Packard, product Voodoo2 get eaten up by the force of through by March 1999. Among the lines that are squarely aimed at financial numbers of other 3Dfx add-in board benefits of this deal (as told by 3Dfx) are markets and standard corporate users. customers, particularly Creative Labs. providing PC OEM and retail customers Both ATI and Matrox, however, have Creative, in turn, got wind of Diamond a single source for 3Dfx branded add-in- enough branding to make it onto most and 3Dfx’s machinations and did what boards for greater price stability and of the major retail shelves and, as a any company with deep pockets would smoother product transitions; the provi- result, they have a strong consumer fol- do: it voraciously consumed 3Dfx sion of reliable manufacturing capabili- lowing. S3, Trident, and even Intel (with shares, making sure that any chance of ties as prequalified supplier to the top its agenda to sew up the low-cost PC a Diamond and 3Dfx partnership ten PC-OEM manufacturers; a more market) don’t possess the same perfor- would raise the specter of its own bid tightly integrated chip, software, and mance advantages of 3Dfx or Nvidia. for the company. That’s the story, but it board-level layout and design for faster These companies all need the volumes doesn’t end there. Diamond knows that time-to-market and the most cost-effec- that PC OEMs bring in order to fuel it needs technology and intellectual tive graphics solutions; and a more con- future developments — and their ambi- property to succeed. Creative Labs trolled and focused brand investment tions. In the midst of all this, PC OEMs doesn’t want Diamond to get its way. for an even stronger retail presence. This just want to make sure that sockets are As a result, all chip companies are up stirs things up big time in the graphics filled in the confusing array of product for grabs at the right price, and consoli- industry, and confirms what the indus- segments and lines they produce. dation in the 3D consumer graphics try believed would happen to 3Dfx. The 3Dfx and Nvidia found some solace arena is only a matter of time. 3Dfx just outlook for Creative and Diamond is in the fourth quarter of 1998 when happens to be the juiciest target. not clear, and probably by the time you Matrox, ATI, S3, and 3Dlabs failed to read this Nvidia and other chip vendors deliver products competing products. By will have made their own strategic the time Voodoo3 is supposed to come Entertainment: Make it Less Fun? moves as a counterpoint. So, now we out, the competition may be stronger. have ATI, Matrox, 3Dfx/STB, S3 has plans for a follow up to fx has transcended the image 3Dlabs/Dynamic Pictures, and Evans Savage3D, ATI is expected to be in full 3D of other graphics chips, and and Sutherland/AccelGraphics as chip swing with the Rage 128, and 3Dlabs firmly embedded itself in the minds of and board vendors against Creative and could still make it with Permedia 3. On consumers. With so much brand equity Diamond as brand name board makers paper, all these chipsets have an equal built among end users, 3Dfx could quite with chip agnosticism. Not too long chance of succeeding against the others, easily do away with the middleman and ago, there was really only ATI and and in truth, if they all work as they sell boards into the market directly. Matrox. So now, as far as game develop- should, they will all find a home some- However, there are some issues that, ers are concerned, the board is the plat- where. No PC maker wants to sell the from the company’s perspective, dimin- form, and whoever has the market clout same components as a competitor, so ish the possibility of such an event. reaps the accelerated titles. Should be there’s plenty of business to go around. First, graphics chips still deliver better fun to watch. ■ http://www.gdmag.com FEBRUARY 1999 GAME DEVELOPER Remodeling RPGs for the New Millennium

by Warren Spector

espite working in a truly remarkable

medium, one that provides powerful tools 37 for the simulation of fantastic worlds and

Dmyriad ways to immerse players in them, many RPG design-

ers these days seem content to recreate the glories of earlier

computer games. Worse, many designers seem content to

recreate experiences that they (and we, as players) first

enjoyed in other media.

As I stated in my recent Soapbox column (“It’s ROLE-play-

ing, Stupid!”, September 1998), we RPG designers are setting

our sights too low. Look at the best RPGs of the last several

years. As great as DIABLO, FALLOUT, DAGGERFALL, and MIGHT &

MAGIC VI are, they really aren’t anything that we couldn’t

have designed ten years ago. Do they represent significant

advances over WASTELAND or ULTIMA IV or the UNDERWORLD

games? And were these older games striving for much more

than a recreation of the tabletop role-playing experiences of

their creators? It’s as if we can’t see beyond our early

Dungeons & Dragons game experiences. It’s time

to move beyond simply borrowing game concepts and

establish computer RPGs as an independent medium.

Warren Spector runs Ion Storm’s Austin, Texas, office. He is currently working on a new role-playing game, DEUS EX. In the past, he has produced such RPGs as ULTIMA VI, ULTIMA VII, PART 2: SERPENT ISLE, UNDERWORLD 1, UNDERWORLD 2, and SYSTEM SHOCK for Origin and Looking Glass Technologies. You can reach him at [email protected] Illustration by Robert Zammarchi ROLE-PLAYING GAMES

My intent with this article is to lay itself in terms of previous media. So it’s How do we identify a computer out the abundant variety of choices not surprising that we RPG developers RPG? For the purposes of this article, a available to would-be and practicing borrow from our forebears. In fact, computer RPG is a game in which RPG designers. Only by analyzing the every RPG developer today really owes character development and character tools that we all use in the creation of his or her job to Dave Arneson and interaction take precedence over other our games, discussing the ways in Gary Gygax, the creators of Dungeons & factors and where each player’s experi- which these tools have been and can Dragons. Our debt to these two men is ence of the story is determined by be used, and identifying the ramifica- worth noting here if only to force a individual choice rather than designer tions of those uses, can we take this recognition of how little we’ve moved fiat. Though broad, this definition genre forward. beyond the realm of 20-sided dice, the clearly eliminates real-time and turn- It’s probably not an overstatement to concept of character class, and those based puzzle and strategy games (lack say that every new medium begins, cre- familiar core attributes of strength, wis- of character development and interac- atively and aesthetically, by defining dom, dexterity, and so on. tion), as well as shooters and platform action games (lack of individual choice). Of greatest importance, this definition eliminates adventure games, which share with the RPG an RPG Commandments emphasis on story and character. What adventure games lack — and 38 this is a critical point — is the capabil- Each player’s path through the The central character must grow ity for players to grow and develop 1. story must be unique. This doesn’t 4. and change in ways that matter to their characters, and to affect, if not mean a branching-tree structure with players in an obvious and personal way. the outcome of the story, than the winning and losing paths but, rather, that During the course of play, you’ll become way in which the story unfolds. players will have the freedom to decide more powerful, acquire more items, and Without both character development how they’ll overcome game obstacles. A develop new skills, of course. However, and genuine choice placed within a world simulation must be deep enough so you’ll also make unique friends and ene- player’s control, a game cannot be that each game problem is open to a vari- mies, accomplish tasks and missions dif- called a role-playing game, as I choose ety of solution strategies, from the most ferently, overhear different conversa- to define the genre. thoughtful and low-key to the most obvi- tions, and see different events unfold. By Someday, we will concentrate on ous and violent. And the solution you game’s end, each player must control an those aspects of computer RPGs that choose to any given problem must have alter ego that is distinct from that of all set them apart and we will leave our clear consequences, both immediate other players. paper gaming roots behind. To do so, (killing a guard sets off an alarm, attract- we have to be more daring in our ing more guards) and long-term (killing a The game must be about some- designs — or, in the terminology of guard may result in “wanted” posters 5. thing more than killing things, this article, in our selection of design being posted, causing civilians to fear solving puzzles, and maxing out a char- tools. And to select the right tools, we you and be less cooperative). acter’s statistics. Remember all those need a better understanding of these hours you spent in school analyzing the tools and how they define the genre. Players must always have clear underlying meaning of novels, poems, The term “tool” seems, at first, odd 2. goals. Though free to stray from and movies? Guess what: RPGs lend to use in the context of game design. the storyline at will, players must know themselves to the same kind of analysis. When I use this term, I’m talking what they’re supposed to be doing, Games can and must have an impact on about the conventional elements that minute to minute and, if appropriate, mis- players. That impact may be the simple are sure to appear in any work that sion to mission. The fun of the game is in adrenaline rush of DIABLO, fleeting and defines itself, or is defined, as a com- overcoming obstacles and solving prob- soon forgotten (nothing wrong with puter RPG. Any designer contemplat- lems; the fun is in how you solve a prob- that), or it may be the never-to-be-for- ing an RPG must take a stance with lem, not in guessing what problem you’re gotten (and, in some cases, life-chang- regard to all of these tools, even if that supposed to solve. ing) experience of becoming the Avatar stance is to deemphasize one or more in ULTIMA IV. If all you’re doing is throw- of them. What follows are the defin- The level of interactivity must be ing wave after wave of monsters at play- ing characteristics that must be pre- 3. high, with NPCs about whom you ers so that they can kill lots of stuff so sent in any RPG. really care and with a densely populat- that they can increase some arbitrary ed, object-rich world that looks and statistics so that they can feel powerful, behaves like the real world (or, at least, you’re doing yourself, your players and Story a believable, internally consistent world your medium a disservice. of your own creation). A big, empty PGs are story driven. There’s a world is boring. Players must be free to R reason for talking to or killing explore a cool and instantly understand- people and monsters, a reason to build able world. or destroy things. Unfortunately, though it goes without saying that

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com RPGs must tell a tale, it’s unclear think through the implications whether the quality of that tale has of that decision. much, if anything, to do with a game’s Often, making one choice — success. One would be hard-pressed to picking one branch over another describe the Avatar vs. Guardian (a.k.a. — means that a player can’t go “kill the evil foozle”) stories of recent back to the branch not chosen. If ULTIMA games as on a par with what we I may be prescriptive for a demand from books and movies. moment, if picking a branch does DIABLO’s plot hardly qualifies as com- not limit players’ later options in pelling. UNDERWORLD’s story of a hero some way, the branch is unneces- locked in a dungeon until he can res- sary and a waste of valuable cue a kidnapped princess hardly quali- development time. The illusion of fies as narrative genius. player freedom isn’t worth the devel- None of Currently, the kinds of stories we can opment price. this is to say tell seem to be limited by the expres- However, assuming branching offers that branching sive capabilities of our medium — it’s real choices (meaning, choices that isn’t worth all that tough to tell a great story when you limit player options even as the player extra effort. Though not vital to success can’t recreate a young lover’s shy smile moves forward through the plot), the (aesthetic or commercial) it’s impor- or allow players to tell a joke rather approach can be worth the cost. Done tant that players talk about their expe- than bludgeon somebody. Right now, well, branching can provide a powerful riences playing your RPG and, when 39 what we do most easily and best is illusion of freedom for players. But, they do, it’s powerful when their direct, one-on-one conflict (typically that’s all it can provide — an illusion. descriptions differ, seemingly based on combat interactions), a fact that limits The reality is that, if we don’t put individual choices. As in all develop- our narrative range just a tad. This is something in the game, on the screen, ment-oriented decisions, it’s important not to say we shouldn’t strive for great- in the mouths of nonplayer characters to weigh that power against the cost of ness in our stories, but we must find (NPCs), it doesn’t happen — and no achieving it. greatness in the strength of universal amount of branching can allow players It’s also important to realize that themes and in the ways in which we to do things we don’t allow them to once you do spend your development tell our necessarily simple stories. do. What this means is that the choices dollars on giving the player power over Players of RPGs must have some available to players solely as a result of the way in which your story unfolds, degree of freedom in how they follow branching are false, because eventually that should become the emphasis of the threads of the plot and, in some players are forced back onto one of the your game. You should try to give your cases, how the plot resolves itself. They paths that we’ve created for them. players a big, contiguous world to can often pick the order in which they The first factor to consider when explore and you should let them accept quests or even which quests assessing whether branching is appro- explore it freely and in any way they they take and which ones they ignore. priate and/or necessary for your pro- want — even at the expense of charac- Further, how they conduct themselves ject is whether it’s worth sinking valu- ter development. during a quest, and how they interact able development resources into the The alternative to branching is to tell with other characters, can alter the creation of content that many, if not a more traditional linear story. But course of the story and its outcome. most, players will never see. And bear telling a story in the way that stories The first and, arguably, most critical in mind that you’re going to be have always been told isn’t the answer. decision RPG developers must make spending time and money to ensure So what are the advantages of telling a with regard to story is whether to use that the game makes sense regardless linear story and how is this best a branching structure or to tell a story of the order in which each player sees achieved? Let’s start with the biggest in a more conventional, linear fash- each portion of the story. That’s a lot and most obvious advantage of the lin- ion. The temptation is strong simply of extra flags to set and check and a ear narrative, the story itself. to say, “We’re making a computer lot of extra art to create on the off- Clearly, you can tell a better story if game. Computers allow branching in chance that players will stray from the you don’t have to worry about and/or a way and at a level no other medium logical path. deal with all the ways in which players allows. Of course, we should use a But what about replayability? can screw up your carefully crafted branching structure.” This argument, Doesn’t branching encourage players epic narrative. It’s generally accepted one I’ve made myself, goes back to the to keep playing a game? My first that a linear story in a game almost moral imperative to maximize the response would be, “Nah. By the time inevitably means a more powerful unique capabilities of the medium they finish your 100-hour epic, they’re story. Given the cost of achieving the and to turn away from the techniques probably looking for The Next New illusory freedom offered by branching more appropriate to other media. It’s Thing.” Only the most zealous players storylines, the linear story seems to be perfectly understandable that comput- replay games at all, and they’re sure to a pretty good deal. In addition, er RPG developers would want a see that a big percentage of their depending on how you implement branching structure if for no other adventure differs not at all on subse- your linear story, you may find it pos- reason than to differentiate games quent playthroughs no matter which sible to give players some genuine free- from books and movies. But let’s plot branches they follow. dom to personalize their experience http://www.gdmag.com FEBRUARY 1999 GAME DEVELOPER ROLE-PLAYING GAMES

is necessarily a better need to play a role is in role-playing game than games, and how controversial the sub- DAGGERFALL (a non- ject can be, let me describe some per- linear game if there sonal experiences. In recent months, I ever was one) — just found myself embroiled in a controver- that the designers sy that I never could have imagined. clearly thought The issue involved the nature of role- through the implica- playing and character identification. tions of the critical It occurred at Ion Storm, where I’m design decision to tell currently working on the game DEUS a linear story. EX. My development team, which is Here, as in most fairly united on role-playing design design decisions, issues, suddenly found itself on the there’s no right or brink of civil war over whether players wrong answer. Linear should be allowed to name their char- narratives, expertly acters. My original plan had been to implemented, are no give the character a name and a back- better or worse than story to go along with it. That would branching narratives allow us to give the character signifi- 40 implemented equally cant relationships and, perhaps most well. However, it’s important, a voice. worth pointing out Half of the team felt that the prede- that perceived freedom termined name and identity offered FIGURE 1. DIABLO’s character statistics screen. is more important too many dramatic advantages to pass than actual freedom. up, particularly nowadays when full If the players thinks speech is expected and voice synthesis rather than the illusion of freedom they’re in control, it’s as good as if technology is still in its infancy. The offered by branching narratives and they are. other half of the team was appalled. “If huge worlds to explore. you can’t name your character,” said What I’m getting at is that a linear one developer, “you’re not making an story must have two characteristics. As Character Differentiation & RPG at all. You’re making an adventure the creator of a linear RPG, you must Development game.” Several people commented that offer the player flexibility within they find it annoying when they are episodes or narrative segments or on a PGs are character-driven. Unlike forced to do or say things because the single map or within a single mission. R any other game genre, they rely designer thinks their character would Combine this flexibility with a focus on differentiated player characters. As do or say that thing. To cut short this on something other than narrative such, unique, personal char- debate, I came up with a solution that, (such as character development) as acter growth is vital. Players I believe, satisfied both camps. (You the driving principle behind your must feel that they control can tell me how successful my solution game, and players won’t notice the destiny of their alter was when the game ships!) In any that they’re on rails, narrative- egos and that their event, this argument about character ly speaking. choices throughout the names shows just how critical player FINAL FANTASY VII does a game result in increasing identification with his or her character wonderful job of allowing you stature and a growing abili- can be to the success of an RPG. to explore each of its locations ty to impact the game world with some degree of freedom. and its denizens. Players rarely feel constrained or stuck Every design decision you Statistics, Skills and/or Trackable to a path, even though they are. The make when crafting an RPG should Abilities reason lies in the game’s emphasis on first be filtered through the following character development. The designers simple screens: s tools, names are useful but not recognized that freedom of movement • Does each game system, design phi- A critical. In contrast, there are two would eventually interfere with the losophy, or mission help the charac- core character identification and devel- advancing plot, so they emphasized ter play his or her role more effective- opment tools: statistically driven and systems that allow players to create ly? experientially driven story and world unique alter egos who respond to • Does each serve to differentiate one building. Regardless of whether you scripted events in ways that are often character from another? allow players to develop their charac- within the player’s control. This fea- If we as game designers allow each ters through statistics or direct experi- ture allowed them to tell a better story player’s character to be unique, and ence (or some combination of the two), with more interesting characters than thus differentiate each player’s experi- you have to take a stance on the sub- would be present in a nonlinear game. ence of the game, we have been suc- ject before you put the last period on I’m not saying that FINAL FANTASY VII cessful. To illustrate how important the your design document.

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com In games such as FALLOUT, DIABLO (Figure 1), DAGGERFALL, FINAL FANTASY VII, and MIGHT & MAGIC VI, numbers typically define your character’s funda- mental attributes (such as strength, dexterity, intelligence, and luck) and/or your character’s level of accom- plishment in a set of skills (such as lock picking, marksmanship, and first aid). When players run into a game problem or obstacle, they use one or more of these attributes or skills, resulting in behind-the-scenes die rolls that deter- mine success or failure in overcoming the problem. Development (increases in individ- ual statistics) often comes through the expenditure of abstract skill points given by the designer for solving indi- vidual problems or for solving enough 41 such problems to go up an arbitrary level (the rewards model). In other games, development comes through the actual use of specific capabilities in FIGURE 2. FALLOUT’s character statistics screen. game situations (the practice model). However implemented, statistics are terrific tools for setting one character too. As easy as it is to say two charac- FALLOUT takes the idea of tailoring apart from another — there’s a reason ters are different — and as easy as it is experience through statistics even fur- they’ve been a staple of role-playing to indicate these differences on a char- ther than WASTELAND and DIABLO — a since the birth of D&D. acter description screen — it is player who puts his or her points into Why are numeric systems terrific extremely difficult to communicate to stealth and communication skills, for tools? For one thing, they’re instantly players the reasons why they succeeded example, is likely to solve game prob- parsable by normal human beings. Any or failed at a given task. Can players lems very differently than one who player can tell immediately that first ever really know why they succeeded puts those points into weapons skills. level isn’t as good as second level, and or failed when behind the scenes die Looking at most games that use the that a strength score of 65 is better rolls determine success of failure? Can statistical character definition than a score of 37. In addition, die-rolls we make players feel their contribu- approach, you quickly get the impres- introduce tension, suspense, and vari- tions to character accomplishment are sion that designers like to track numer- ety into computer RPGs. significant? If you choose a statistical ous character statistics, and like to Statistical systems do have associated approach, you need to provide obvious track them to a fine degree. Logically, costs, though. The one that I find most and immediate feedback when a statis- this seems to be the best way to differ- damning, if only because a thoughtful tic affects problem resolution. entiate one character from another. designer can so easily avoid Games such as WASTELAND and However, if you’re going to track statis- the problem, is that typi- DIABLO, though separated by tics based on skill values, adjustments cally, by game’s end, char- many years, are extremely to these values have to be meaningful acters tend to end up look- good examples of games enough so that changing them makes ing more alike that use statistics and obvious changes in the game play. than different. skills effectively. In these Hand out too many statistical improve- But the trick to games, statistics, in addi- ment rewards and characters start to avoiding this is tion to being rewards, look more alike than different. Create simply to allow players to refine their enough statistics and skills and players impose limits characters with a great deal quickly figure out which ones matter on the number of control and precision and which don’t, causing characters to of skills players and to individualize their look more similar. My advice is to be can select play experience in ways appropriately and thoughtfully stingy and/or to limit the games’ limited story- with rewards and with the number and the number of lines don’t offer. FALLOUT types of statistics you provide. reward points we is a more recent example But are all of these statistics really hand out. of effective use of statistics to necessary? Of course not. There’s But using statistics differentiate characters from another way. In recent years, a small, poses other problems, one another (Figure 2). But very vocal and extremely persuasive http://www.gdmag.com FEBRUARY 1999 GAME DEVELOPER ROLE-PLAYING GAMES

items notwithstand- making the inventory limitation moot. ing), the more solu- Item and weapon differentiation must tions are likely to sug- be thought of in terms of economy. gest themselves, as In a real-world economy, more isn’t long as your simula- always better. The same is true in gam- tion is robust enough ing. Just because you can offer players — or your designers 4,000 weapons doesn’t mean that you clever enough — to should. The choice should have mean- support them. ing. Ask yourself whether you can real- In addition to their ly differentiate two weapons; if the two use in problem solv- items offer no legitimate, significant, ing, objects and and obvious game play difference in weapons can be pow- your game world, why bother? When erful tools for charac- pondering inventory issues, think of ter differentiation. If yourself as the game design equivalent you load up your of Alan Greenspan of the Federal inventory with Reserve Board — you have to open and weapons and I load close the object floodgates to match mine up with keys, players’ capabilities to the tasks at 42 lockpicks, and inviso- hand. Release too much “item power” suits, our characters and tasks become too easy. Interest in look, feel, and, of the game wanes. Release too little necessity, behave dif- “item power” and tasks become too FIGURE 3. DIABLO’s character inventory screen. ferently from one hard. Frustration sets in. Either way, another. players stop playing. The key to making Not all systems of skills and abilities minority of the design community has inventory a character differentiation depend on statistical resolution; there begun to argue in favor of statistics-free tool is to limit, in some way, the num- are plenty of other ways to structure a RPGs or, as some call it, the immersive ber of items that a character can carry. system. In DEUS EX, we use a binary experience. They feel that hidden die In a statistics-based system, this can be action resolution scheme in which rolls and finely tracked statistics are accomplished by giving items weight your skill level, tracked in a gross fash- unnecessary hold-overs from paper and then tying inventory capacity to ion (rather than a granular one) is gaming. These designers pose a number strength — how much weight a charac- compared to the difficulty of the task of interesting questions. Why use a ter can carry therefore becomes the at hand. If your skill level is higher crutch from another medium, one with limiting factor. In a statistics-free sys- than the difficulty factor — which, in limited simulation capabilities, in com- tem, the same goal can be accom- most cases, you’ll know before you puter gaming, which has far more pow- plished by giving each item a size and attempt a task — then you succeed. If erful simulation tools available? Why then limiting the number of things a your skill level is lower than the task’s not let player choices determine char- character can lug around. Clearly, com- difficulty factor, you have to find acter differences? Does anyone think binations of these another solution. the difference between a 17 and an 18 ideas work, too — wit- In a deeply simulated world (or even in strength or between an 89 and a 90 ness DIABLO (Figure 3) a modestly simulated one, such as DEUS in lock picking should have an impact — and there are EX) each game problem should be solv- on game play? undoubtedly several able in a variety of ways. In such a So what do these statistics-foes offer other viable schemes. simulation, a skill system like our as an alternative in terms of character For inventory to binary action resolution model differentiation and the player’s ability work as a character and makes perfect sense. If you’re to impact a story? The two most impor- experience differentiation not a good enough tant alternative tools available are tool, we must find ways to lock picker to Inventory and Skills/Special Abilities. force players to make choic- open a vault, Most, if not all, RPGs support the es. Which implies limiting maybe you’re a accumulation and use of items by play- characters’ capabilities. We master with ers. In most, you can pick up anything as designers must be disci- explosives, or that isn’t specifically nailed down and plined enough to parcel out maybe you can use it later, possibly even in ways the items of increasing power — charm a bank clerk designers never imagined. In extreme things that make characters more into opening it for you. cases, you end up with characters haul- effective — in a careful, well If you’re still thinking in ing around useless candy wrappers and thought-out manner. If you dumped terms of puzzles rather than soda cans. In the end, problem resolu- an infinite variety of weapons in obstacles, and if your world is tion is what RPGs are all about. The front of a character, most players two-dimensional rather than more tools you give the player (useless would grab the most powerful one, deeply simulated, stick with statistics.

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com So where does tension come into the tage of your character class’s unique ways other than shooting weapons and picture? To offer levels of suspense like and clearly defined capabilities.” opening doors. This may be as limited statistics-based systems, a statistics-free Character classes are not a bad way as picking up objects and manipulating game must emphasize consequence to ensure experiential differences, but switches and levers or it may be as lim- and reward. Here’s one way it can they’re a little inelegant. I view them as itless as, well, interactions in the real work. First, players may know in a form of “remedial role-playing”; char- world. (I can dream, can’t I?) advance the outcome of a specific acter classes have been a crutch for Finally, in the best RPGs, obstacles action (whether they do or not is large- novice role-players since the 1970s. If aren’t limited to monsters or arbitrary ly a result of how much attention reaching the mass market is your goal, puzzles. The solution to a particular they’ve been paying — the designers character classes could be appropriate. game situation isn’t as predictable as in aren’t trying to hide anything). If you’re going for the Dungeons & more focused game categories and, Second, players should have a fair Dragons audience, character classes are often, more than one solution exists degree of certainty about the reward a necessity. I’ve noticed that the use of for each problem that you confront. for acting in a particular manner (for character classes is waning, but if the example, a player should know that if upcoming title BALDUR’S GATE proves as he or she gets through the vault door, successful as most industry watchers Combat he or she will get a million dollars). expect, it could revitalize the notion of Most critically, players must not be class distinctions in role-playing. he effectiveness of your combat able to do more than make an educated T system depends on your under- guess at the consequences of acting in standing of the concept of “economy.” 43 a specific manner (for example, picking Varied Interaction Giving the player a big gun with the lock on the vault door might or unlimited ammo and then throwing a might not set off an alarm, blowing the ne of the million hideous monsters at him or her door off it’s hinges might attract the O defining isn’t going to buy you much sweat and attention of the night watchmen or characteristics of adrenaline. However, try giving the destroy the money in the vault, and role-playing is the player an ordinary gun with three charming a bank teller might allow the player’s ability to shots and then send two villains teller to identify you when the police impact the outcome of at him or her and see what show up). All actions — all choices — the story through his or happens. must reward players and, equally her actions during the important, all must have conse- game. One of the most quences. There can be no right and powerful and effective wrong, no better and worse. ways to give players this Whether statistics or experience is power is to offer and reward a variety used to differentiate characters, some of interaction styles. tangible measurement of character When you play an ULTIMA, or even a Make sure each weapon and each prowess and progress is necessary if a hack-and-slash game such as DIABLO, enemy is radically different than all game is to be considered an RPG. In you meet computer-controlled people others. There’s no point offering a RPGs, arbitrary limitations are often and creatures — NPCs — who don’t 1911 Colt, a Glock, and a Browning Hi- placed on what your character can and necessarily want to kill you. In a con- Power unless there’s some major game cannot do. The idea of defining your sole game such as SUIKODEN, you build play difference between them. Hey, character’s abilities statistically is just a base of operations and forge alliances they’re all automatic pistols and serve one such arbitrary limitation. with the NPCs you choose. Together, about the same purpose in the real Another is the notion of the charac- these activities have a dramatic impact. world. In your game, players won’t ter class. In the past, distinguishing In almost any RPG you can name, play- know that the stocks feel different, the characters using character classes has ers can kill, talk to, buy prevented mages from wearing armor, or sell from, maybe impaired warriors’ use of magic, even learn from NPCs. restricted clerics’ use of offensive The interaction can magic, and let thieves move quietly come in the form of and do double damage from behind. one-sided info-dumps This is the brute-force solution to the or in complex, branch- problem of differentiating characters, ing tree conversations. applicable in either statistics- or experi- Whatever form it takes, ence-based games (though fitting more some nonviolent inter- easily into the former). Character class- action is a necessary, es tell players, “Here’s a problem. Your defining characteristic character can’t solve this problem in of RPGs. ways X, Y, and Z because those meth- Furthermore, you ods aren’t appropriate to your class. can interact with the FIGURE 4. ULTIMA VI’S BRANCHING tree dialogue. Find another solution that takes advan- game environment in http://www.gdmag.com FEBRUARY 1999 GAME DEVELOPER ROLE-PLAYING GAMES

response options (or are given the opportunity to type in whatever they want). Picking one of these options or typing in a likely keyword sends the NPC into another speech. Making a selection typically prevents the player from getting the information he or she would have gotten by picking another of the available response options. Eventually, the NPC runs out of things to say along a particular branch and the conversation ends, leaving the player either to start the whole conver- sation over and make different response option choices in an attempt to elicit additional information from the NPC, or to go talk to someone else. The problem is that clicking through a bunch of conversation 44 options doesn’t feel much like a con- versation — an interrogation, perhaps, but not a conversation. Additionally, FIGURE 5. Branching dialogue in FALLOUT. keywords and branching trees turn the conversations themselves into puzzles. Can you guess which branch weight is different, and so on. And tiny Conversing with NPCs the designer wanted you to go down? variations in accuracy and kickback The opportunity and, more often, the and the like probably won’t be notice- o one has yet devised and/or necessity of talking to each NPC mul- able even if you bother trying to simu- N implemented an artful, com- tiple times to be sure you ferreted out late them. Don’t bother. Just put one pelling, interesting, or believable con- the critical nugget of information or of them in your game and be done versation system in a computer RPG. set the one necessary conversation with it. If your game fiction can sup- That includes everything I’ve done flag is a pain and drains conversations port it, make certain weapons particu- and everything you’ve done. No one of their emotional impact. larly useful against certain enemies. has come up with a system that Another way to handle NPC interac- Weapon differences must be obvious doesn’t draw you out of the game tion is through linear conversations. and instantly apparent. world and remind you that you’re just This is sometimes called the “NPC as Wherever possible, differentiate your manipulating pixels on a screen. In the signpost” approach to conversation. It’s enemies as much as (or more than) you absence of anything better, let’s look most commonly used in console RPGs, do your player characters. If, again, at some of the approaches that we’ve where input options are limited and your game fiction supports it, give each tried in the past. storage space for branching conversa- enemy an attack that has a specific First, there are branching-tree/key- tions is at a premium. Basically, this effect (or effects) on the player’s ability word systems. If you’ve to move, see, hear, or otherwise inter- played just about any act with the game. computer RPG of the Do these, and you have last 15 years, you’re a winning combat familiar with these. recipe. Because com- Any ULTIMA game bat is easy to simu- (Figure 4) and, more late on computers, recently, FALLOUT and very little else is, will introduce you to I suspect (for better or the concept, if you’re worse) combat will unfamiliar with it remain a large part of (Figure 5). In this sys- RPGs, and tem, players read much of our or listen to a bit design of dialogue effort will “spoken” by continue to an NPC and go into are then FIGURE 6. Binary decision point conversation in crafting new offered a SUIKODEN. combat systems. number of

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com method boils down to walking up to an think we may have NPC and having them tell you some- gone a little overboard thing and that’s it. No interaction. Talk — it was the right deci- to them again and, unless the game sion for that game at state has been advanced somehow that time, but we failed and/or the designer is particularly to take into account sharp, the NPC will simply repeat what the power of consisten- he or she said the last time. cy and convention.) Linear conversations typically point Perhaps the best you to your next goal, but they can do thing that can be said much more. In the best examples, about conversation in NPCs can tell you about themselves computer gaming is and their lives. They can describe in that players have convincing terms how you know them grown accustomed to and how they feel about you. It’s possi- inelegant, unrealistic, FIGURE 7. ULTIMA VII uses a top-down, third-person ble to evoke real emotions in a linear basically unbelievable perspective. conversation, and about all the writer systems and cardboard has to worry about is the role the cut-out NPCs. Until speaker plays in the story. someone comes up with something to interact with anything), but that A third communication solution is better, you can always fall back on con- begs the question of whether it’s any 45 the use of binary decision points. This vention, a fact that Doug and the fun to walk around for ten hours. is a compromise between branching SYSTEM SHOCK team didn’t consider Additionally, game players are increas- and linear conversation approaches. very seriously. Players “get” branching- ingly pressed for time or anxious to fin- Most often seen in console games such tree/keyword systems — they’re so ish one game so they can move on to as SUIKODEN (Figure 6) and just about familiar with them that they don’t the next. As a result, many seem to anything developed by Square, binary even think about them much anymore. want smaller worlds, shorter play times, decision point conversations are linear And that’s about the best that you can and more frequent pats on the back. I except where a yes/no decision (and hope for — that conversation won’t know there are still hardcore game associated branch) will reveal some- drag players out of your carefully craft- players out there who always want thing about the character, the player, ed alternate world too badly. I await more, but you must decide whether or the NPC speaking. I think this is a the day when voice recognition, natur- there are enough of these consumers to most promising approach. al language processors, basic knowl- support your development budget. A fourth communication method is edge databases, and speech synthesis Recent trends favor smaller, deeply reaction-based conversations A few become realistic options. simulated worlds over large, contigu- designers over the years have tried a ous spaces an inch deep and miles system in which NPCs speak and the wide, at least in terms of depth of sim- player gets to pick the tone of his or Exploration vs. Action ulation. Further, many RPGs these days her response but not the specific con- — my own DEUS EX, THIEF: THE DARK tent (wording) of the response. This aving dealt with combat and con- PROJECT, DIABLO, and others — are doesn’t seem to offer much advantage H versation, there’s only one defin- adopting a mission orientation. They over other, more popular systems, but ing characteristic of role-playing left to break the world up into more manage- it is an option. discuss: exploration. In the typical RPG, able sections to minimize walking The last communication option is you can fully explore a simply denial. Back when Doug huge, contiguous world Church and I first started talking about in real time. Every SYSTEM SHOCK, we were dissatisfied with ULTIMA, both the conversation approach taken in UNDERWORLDS, UNDERWORLD, traditional and conven- DAGGERFALL, and count- tional though it may have been. And less other games have though it pained us to admit it, even to taken this approach. ourselves, we had no idea how to do Uncovering all of a any better. So the team designed world’s secrets is fun. around the unsolvable problem — we Clearly, the explo- killed everyone off. The inhabitants of ration model works in Citadel station would exist, for the RPGs, but it’s both a player, only through e-mail and video blessing and a curse. logs. It was an elegant solution to an It’s great to be able to intractable problem: if we can’t make say it takes a player you believe you’re talking to a real hours to traverse your FIGURE 8. Standard game play window in MIGHT & human being, we just won’t have any game’s world (and MAGIC VI, showing the first-person gaming experience. in our game world. (In retrospect, I that’s if you don’t stop http://www.gdmag.com FEBRUARY 1999 GAME DEVELOPER ROLE-PLAYING GAMES

around and maximize fun. Mission paper game character sheets crawling ate an alter ego, you should do every- structure also goes hand-in-hand with with attributes, skills, and numbers, thing possible to increase a player’s linearity and, together, they allow us to first-person could be the worst choice identification with his or her character. tell the best stories possible. for your game. When controlling a party, player iden- If you’re trying to recreate the paper tification with a single character is his- gaming experience or the experience tory — as is role-playing, in my opin- Variables you get when you read a great novel or ion. At that point, you’re playing a watch a film — the fiction experience boardgame. Second, AI limitations ow that we’ve dis- — a third-person view may be just mean you’re inevitably going to be N cussed the defin- what you need. To capture that slowed down by teammates who can’t ing characteristics — “fiction feel,” it’s good to let play- think quickly on their feet and, even the rules of role- ers guide their characters rather slowly, can’t respond the way real peo- playing, if you than be their characters. You ple would. will — what of want a bit of distance between If you subscribe to the ideal that the variables? player and character. players should describe their adven- There are certainly A third-person perspective is tures by saying “I did” something characteristics of also ideal for tactical decision- rather than “Lara Croft did” some- role-playing that are making, particularly when com- thing or the “The Avatar did” some- 46 not universal, that you bined with a turn-based combat sys- thing, controlling a party is a prob- can adopt or ignore, as you wish. Here tem, a character sheet, and a separate lem. In recent years, more and more are some of them. conversation screen. Each of these ele- designers seem to be coming around CAMERA POSITION. I’m the last person ments contributes to the player’s abili- to this mode of thinking. (Recent qualified to address technology, but ty to make informed decisions about ULTIMAs, UNDERWORLD, DIABLO, and camera positioning is an important how to develop his or her character. DAGGERFALL have all adopted the solo enough issue to cover briefly. There are The trade-off is that it’s tough to care model, often to the chagrin of fans.) several ways to approach camera posi- much about NPCs that are obviously Solo play is simpler to implement, tioning and player point of view in nothing more than bunches of pixels speeds up game play, and fosters a role-playing. The most common per- an inch high when you’re looking at direct connection between player and spectives are: first-person, three-quar- them from a bird’s perspective. character that seems critical to RPG ters-overhead third-person (as in, an LONE ADVENTURER OR PARTY? If you’re success. isometric viewpoint), and top-down working on an RPG, there’s one ques- If you choose to include full-party third-person (Figure 7). For the purpos- tion I guarantee you’ve been asked: “Is control in your single-player game, rec- es of this discussion, and for the sake of there gonna be multiplayer support?” ognize that you’ll reduce player brevity, I’ll treat the third-person per- Everybody seems to want to go explor- involvement and turn off people who spectives as the same. ing with a party. In a paper game, value tactical thinking in games, and In a genre that, at some level, boils where players gather around a table, use it in conjunction with turn-based down to providing the player with the engage in collective acts of imagina- combat and a third-person perspective. ultimate “I did this” experience, what tion, and push lead miniatures repre- A real-time, first-person party-based could be more compelling than enter- senting their characters around on game is just asking for trouble. ing a new world and seeing it through tabletops, the party idea works just your own eyes? The UNDERWORLD and fine. Certainly, a case could be made MIGHT & MAGIC series (Figure 8), not to that allowing a party of adventurers to It’s Time to mention many others, offer fine first- go through your story together, linked Advance the Genre person role-playing experiences. If via modem, LAN, or the Internet, is a what you’re after is simulating a world, worthy pursuit despite the problems of omputer role-playing games are a first-person view goes a long way communication and coordination C no longer just an infant medium toward making the player feel as among party members. learning to crawl. They’ve been though he or she is “there.” You’re But what of the single-player RPG? around for a while, and now we, their reducing the distance between player Does the party make sense in that con- designers, must start figuring out what and character to almost nothing. text? Many classic RPGs indicate that it we are, and what we can do to make One drawback to the first-person does. The early ULTIMAs (among many the most of them. I’ve got no beef perspective is that it puts players at a others) allow a single player to take with folks who want to continue tactical disadvantage by limiting their control of a party of adventurers. recreating the past. Just don’t count awareness of what’s going on behind However, I think controlling parties in me among the people who think and to the sides of their characters. single-player, story-based RPG is a bad that’s good enough. Our goal should And if you’re committed to turn- idea, particularly when it’s a real-time be to create games that are simple to based, tactically challenging combat, game. There are several reasons I feel learn and play, accessible to the convoluted conversations that take this way. broadest possible audience, and yet place on a separate conversation First, if one of the primary goals of offer enough depth that hardcore screen, and the video equivalent of role-playing is to allow players to cre- game players will flock to them. ■

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com COORDINATED MOVEMENT Imlemeig Cdiaed Meme by Dave C. Pottinger

art of the fun of working in the game industry is

the constant demand for technical innovations 48 that will allow designers to create better games.

In the real-time strategy (RTS) genre, most

developers are focusing on improving group

movement for their next round of games. I’m not

talking about the relatively low-tech methods cur-

rently in use. Instead, I’m referring to to solve some classic, complex move- A game can have terrific pathfinding coordinated group movement, where ment problems. While we will spend that never fails to find the optimum units cooperate with each other to most of our time talking about these path. But, if the movement system isn’t move around the map with intelli- features through the RTS microscope, up to par, the overall appearance to the gencePP and cohesion. Any RTS game they can easily be applied to other players is going to be that the units are developer that wants to be competitive types of games. stupid and can’t figure out where to go. needs to look beyond simple unit One of the key components to any movement; only the games that weigh good movement system is the collision in with solid coordinated movement Catching Up determination system. The collision systems will go the distance. system really just needs to provide In this article, the second and final ast month, we discussed a lot of accurate information about when and part of my coordinated unit move- L the low-level issues of coordinated where units will collide. A more ment series, we’ll take a look at how unit movement. While pathfinding advanced collision system will be con- to use the systems that we considered (the act of finding a route from point A tinuous rather than discrete. Most in the first article to satisfy our coordi- to point B) gets all of the press, the games scale the length of the unit nated group movement goal. We’ll movement code (the execution of a movement based on the length of the also examine how we can use our unit along a path) is just as important game update loop. As the length of coordinated movement fundamentals in creating a positive game experience. that update loop increases, the gap between point A and point B can get After several close calls, Dave managed to avoid getting a “real job” and joined pretty large. Discrete collision systems Ensemble Studios straight out of college a few years ago (just in time to the do the ignore that gap, whereas continuous computer player AI for a little game called AGE OF EMPIRES). These days, Dave spends systems check the gap to make sure his time either leading the development of Ensemble Studios’ engines or with his love- there isn’t anything in between the ly wife Kristen. Dave can be reached at [email protected]. two points that would have created a collision with the unit being moved.

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com Continuous collision determination convenience. Each unit will path and see that there are varying degrees of systems are more accurate and more move as if the player had issued indi- group movement cohesion. realistic. They’re more difficult to vidual commands to each group mem- UNITS IN A GROUP JUST MOVE AT THE SAME write, though. ber. As we look at how to improve on SPEED. Usually, this sort of organization Another important element for coor- the organization of our groups, we can moves the group at the maximum dinated unit movement is position prediction. We need to know where our units are trying to go so that we can make intelligent decisions about Units, Groups, and Formations how to avoid collisions. Although Unit. A game entity that has the ability to move around the map. Players expect their building a fast position-prediction sys- units to act intelligently. tem presents us with a number of Group. A general collection of units that have been grouped together by the user for issues, for this article, we can assume convenience (usually to issue the same order to all of the units in the group). Other that our collision determination sys- than a desire to keep its units together, groups don’t place any other restrictions on tem has been augmented to tell us unit movement. about future collisions in addition to Formation. A more complex group. A formation has an orientation (a front, a back, a current collisions. Thus, each unit in right flank, and a left flank). Each unit in the formation tries to maintain a unique rela- the game will know with which units tive position within the formation. More complex models provide an individualized unit it’s currently in collision with and facing within the overall formation and support for wheeling during movement. which units it will collide with in the 49 near future. We presented several rules for getting two units out of collision in FIGURE02.move1.gd 1. All grouped units should be kept together. last month’s article. All of these elements work together Base speed Same speed to create the basis for a solid, first-order Time speed addition (single unit to single unit) coordinated movement system. The core thing to S S F keep in mind for this article is that we have an accurate, continuous collision F determination system that tells us S Slow S Fast units when and where units will collide. units We’ll use that collision system in con- F F junction with the collision resolution S rules to create second order (three or S Direction of more units/groups in collision) coordi- Allow these units to move movement Once all units are close enough, nation. faster to catch up to fast units all units move at the same speed.

02.move2.gd Group Movement FIGURE 2. Units in a group should follow the same path.

ooking at the definition of a group L (see the sidebar, “Units, Groups, and Formations”), we can immediately see that we need to store several pieces of data. We need a list of the units that Obstruction make up our group, and we need the maximum speed at which the group can move while still keeping together. Additionally, we probably want to Goal store the centroid of the group, which will give us a handy reference point for the group. We also want to store a commander for the group. For most games, it doesn’t matter how the com- mander is selected; it’s just important to have one. Obstruction One basic question needs to be answered before we proceed, though. Do we need to keep the units together as they move across the board? If not, Goal then the group is just a user interface http://www.gdmag.com FEBRUARY 1999 GAME DEVELOPER COORDINATED MOVEMENT

speed of its slowest unit, but some- AND TAKE THE SAME PATH. This sort of orga- most complex behavior that we’ll times it’s better to let a slow unit move nization prevents half of the group’s apply to our group definition. In addi- a little faster when it’s in a group units from walking one way around the tion to combining the previous two (Figure 1). Designers generally give forest while the other half takes a com- options, it also requires that units far- units a slow movement speed for a rea- pletely different route (Figure 2). Later, ther ahead wait for other units to catch son, though; altering that speed can we’ll look at an easy way to implement up and possibly allows slower units to often create unbalanced game play by this sort of organization. get a temporary speed boost in order to allowing a powerful unit to move UNITS IN A GROUP MOVE AT THE SAME SPEED, catch up. around the map too quickly. TAKE THE SAME PATH, AND ARRIVE AT THE SAME So, how can we achieve the last UNITS IN A GROUP MOVE AT THE SAME SPEED TIME. This organization exhibits the option? By implementing a hierarchi- cal movement system, we can manage LISTING 1. The BUnitGroup class. individual unit movement in a way that allows us to consider a group of //***************************************************************************** units together. If we group units // BUnitGroup together to create a group object, we //***************************************************************************** can store all of the necessary data, cal- class BUnitGroup culate the maximum speed for the { group as a whole, and provide the basic public: decision making regarding when units 50 BUnitGroup( void ); will wait for other units (Listing 1). ~BUnitGroup( void ); The BGroup class manages the unit interactions within itself. At any point //Returns the ID for this group instance. in time, it should be able to develop a int getID( void ) const { return(mID); } schedule for resolving collisions between its units. It needs to be able to //Various get and set functions. Type designates the type of the group control or modify the unit movement //(and is thus game specific). Centroid, maxSpeed, and commander are through the use of parameter settings //obvious. FormationID is the id lookup for any formation attached to and priority manipulation. If your unit //the group (will be some sentinel value if not set). system only has support for one move- int getType( void ) const { return(mType); } ment priority, you’ll want to track a void setType( int v ) { mType=v; } secondary movement priority within BVector& getCentroid( void ) const { return(mCentroid); } the group for each unit in the group. float getMaxSpeed( void ) const { return(mMaxSpeed); } Thus, to the outside world, the group int getCommanderID( void ) const { return(mCommanderID); } can behave as a single entity with a sin- BOOL getFormationID( void ) const { return(mFormationID); } gle movement priority, but still have BOOL setFormationID( int fID ); an internal prioritization. Essentially, the BGroup class is another complete, //Standard update and render functions. Update generates all of the closed movement system. //decision making within the group. Render is here for graphical The commander of the group is the //debugging. unit that will be doing the pathfinding BOOL update( void ); for the group. The commander will BOOL render( BMatrix& viewMatrix ); decide which route the group as a whole will take. For basic group move- //Basic unit addition and removal functions. ment, this may not mean much more BOOL addUnit( int unitID ); than the commander being the object BOOL removeUnit( int unitID ); that generates the pathfinding call. As int getNumberUnits( void ) const { return(mNumberUnits); } we’ll see in the next section, though, int getUnit( int index ); there’s a lot more that the commander can do. protected: int mID; int mType; Basic Formation Movement BVector mCentroid; float mMaxSpeed; ormations build on the group sys- int mCommanderID; F tem. Formations are a more restric- int mFormationID; tive version of groups because we have int mNumberUnits; to define a very specific position for BVector* mUnitPositions; each unit within the group. All of the BVector* mDesiredPositions; units must stay together during group }; movement in terms of speed, path, and relative distance; it doesn’t do any

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com good to have a column of units if there are huge gaps in that column while it’s LISTING 2. The BFormation class. moving around the map. //***************************************************************************** The BFormation class (Listing 2) man- // BFormation Class ages the definition of the desired posi- //***************************************************************************** tions (the positions and orientations class BFormation that we want for each unit in the for- { mation), the orientation, and the state public: of the formation. Most formations that //The three formation states. a game uses are predefined; it’s useful enum to make these easy to edit during { development (via a text file or some- cStateBroken=0, thing else that a nonprogrammer can cStateForming, manipulate). We do want the ability to cStateFormed create a formation definition on the }; fly, though, so we’ll take the memory hit and have each formation instance BFormation( void ); in the game maintain a copy of its ~BFormation( void ); own definition. Under this model, we must also track //Accessors for the formation’s orientation and state. The expectation 51 the state of a formation. The state //is that BFormation is really a data storage class; BGroup drives the cStateBroken means that the formation //state by calling the set method as needed. isn’t formed and isn’t trying to form. BVector& getOrientation( void ) { return(mOrientation); } cStateForming signifies that our forma- void setOrientation( BVector& v ) { mOrientation=v; } tion is trying to form up, but hasn’t yet int getState( void ) const { return(mState); } reached cStateFormed. Once all of our void setState( int v ) { mState=v; } units are in their desired positions, we change the formation state to //The unit management functions. These all return information for the cStateFormed. To make the movement //canonical definition of the formation. It would probably be a good considerably easier, we can say that a //idea to package the unit information into a class itself. BOOL setUnits( int num, BVector* pos, BVector* ori, int* types ); formation can’t move until it’s formed. int getNumberUnits( void ) const { return(mNumberUnits); } When we’re ready to use a forma- BVector& getUnitPosition( int index ); tion, our first task is to form the forma- BVector& getUnitOrientation( int index ); tion. When given a formation, BGroup int getUnitType( int index ); enforces the formation’s desired posi- tions. These positions are calculated protected: relative to the current orientation of BVector mOrientation; the formation. When the formation’s int mState; orientation is rotated, then the forma- int mNumberUnits; tion’s desired positions will automati- BVector* mPositions; cally wheel in the proper direction. BVector* mOrientations; To form the units into a formation, int* mTypes; we use scheduled positioning. Each }; position in the formation has a sched- uling value (either by simple definition 02.move3.gd or algorithmic calculation) that will FIGURE 3. Start forming the formation from the inside out. prioritize the order in which units need to form. For starters, it works well to Initial unit positions If 9 is the last unit to form from the inside and work out- 2 1 2 3 9 get into formation, then ward in order to minimize collisions 1 3 9 4 5 some other unit has to and formation time (Figure 3). The move out of its formed 6 8 6 group code manages the forming with 5 7 8 position to let 9 through. 4 the algorithm shown in Listing 3. 7 So, now that we have all of our swordsmen in place, what do we do 2 5 Desired unit positions 1 If we start with 9 , then all with them? We can start moving 3 1 2 3 other units can move into them around the board. We can 4 position without any press. assume that our pathfinding has 4 9 5 9 found a viable path (a path that can 6 7 8 8 be followed) for our formation’s cur- 6 7 rent size and shape (Figure 4). If we http://www.gdmag.com FEBRUARY 1999 GAME DEVELOPER COORDINATED MOVEMENT

LISTING 3. The formation algorithm. FIGURE 4. The pathfinding needs to find a path that’s usable given the Set all units’ internal group movement priorities to the same low priority value. 02.move4.gdformation’s size and shape. Set state to cStateForming. o While state is cStateForming: b Path that's valid { s t for one unit, Find the unfilled position that’s closest to the center of the formation. r but not for a u If no unit was available c line of units. Set the state to cStateFormed and break out of forming loop. t i o n Goal Select a unit to fill that slot using a game specific heuristic that: Minimizes the distance the unit has to travel. Will collide with the fewest number of other formation members. Has the lowest overall travel time. Path that Set unit’s movement priority to a medium priority value. should Wait (across multiple game updates) until unit is in position. be taken. Set unit’s movement priority to highest possible value. This ensures that subsequently formed units will not dislodge this unit. 52 } We have a couple of ways to deal with direction changes for a formation: we can ignore the direction change or don’t have a viable path, we’ll have to formation. As the commander we can wheel the formation to face in manipulate our formation (we’ll talk changes direction to follow the path, the new direction. Ignoring the direc- about how to do this shortly). As we the rest of our units will also change tion change is simple and is actually move around the map, we designate direction to match the commander’s; appropriate for something such as a one unit as the commander of our this is commonly called flocking. box formation (Figure 5). Wheeling isn’t much more complicated and is FIGURE02.move5.gd 5. Wheeling doesn’t apply to every formation. very appropriate for something such as a line. When we want to wheel, our first step is to stop the formation from moving. After rotating the orientation of the formation, we recalculate the desired positions (Figure 6). When that’s done, we just go back to the cStateForming state, which causes the group code to move our units to their new positions and sets us back to A box is essentially the same no matter which cStateFormed when it’s done (at which way it's rotated. point, we can continue to move).

Advanced Formation Movement

02.move7.gd FIGURE 6. Recalculate the desired FIGURE 7. Scaling desired positions o, now we’ve got formations mov- ing around the map. Because our positions02.move6.gd after the formation’s orien- to fit through small gaps. S tation has changed. game map is dynamic and complex, it’s possible that our planned path will be invalidated. If that happens, we’ll need to manipulate the formation in one of three ways. SCALING UNIT POSITIONS. Because the desired positions are really just vector offsets within a formation, we can apply a scaling factor to the entire for- mation to make it smaller. And a small- Recalculate Same vector er formation can fit through small gaps desired with a smaller in walls or treelines (Figure 7). This magnitude positions method works well for formations in here Vector offset Desired positions from center which the units are spread out, but it’s pretty useless for formations where the

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com COORDINATED MOVEMENT

FIGURE 8. Reform the formation after the obstacles. FIGURE 9. Split the formation in two to get around an obstacle.

Split point Tree

Split Tree point Tree

Tree Split Tree point Tree

units are already shoulder to shoulder with the reforma- (as in a line). Scaling the offsets down tion of your group, in that case would just make our then you should swordsmen stand on top of each other, just repath your 54 which isn’t at all what we want. formation. SIMPLE ORDERED OBSTACLE AVOIDANCE. If we’re HALVING AND REJOIN- moving a formation and we encounter a ING. While simple avoidance is a good unit is following, the current waypoint collision with another game entity solution, it does dilute the visual the unit is moving toward, and (either a current collision or a future col- impact of seeing a formation move effi- whether or not the unit is on a patrol. lision), we can assume that our path is ciently around the map. Halving can A path stack suits our needs in two sig- still viable, with the exception of this preserve the visual impact of well- nificant ways. entity being in the way. The simple formed troops. When we encounter an First, it facilitates a hierarchical solution is to find the first place along obstacle that’s within the front projec- pathfinding setup (Figure 11). Game our formation’s path where it will not tion of the formation (Figure 9), we can developers are beginning to realize that be in collision with the entity and pick a split point and create two forma- there are two distinctly different types reform our formation at that spot tions out of our single formation. of pathfinding: high-level and low- (Figure 8). Thus, the line of infantry will These formations then move to the level. A high-level path routes a unit break, walk around the obstacle, and rejoin position and then merge back around major terrain obstacles and reform on the other side. This solution into one formation. Halving is a simple chokepoints on a map, similarly to can fall apart fairly easily, though, so it’s calculation that dramatically increases how a human player might manually important to realize when the reforma- the visual appeal of formations. set waypoints for a unit. A low-level tion position is too far along the path to path deals with avoidance of smaller be of use. If the distance around the obstacles and is much more accurate obstacle is far enough that it interferes Path Stacks on details. A path stack is the ideal method for storing this high- and low- path stack is a simple stack-based level information. We can find a high- 2.move10.gdFIGURE 10. Path stack. A (last in, first out) method for stor- level path and stuff that into the stack. ing the movement route information When we need to find a low-level path Adding a path to the stack for a unit (Figure 10). The path stack (to avoid a future collision with that tracks information such as the path the single tree in the big field), we can stuff Path 3 Path 3

FIGURE 11. Hierarchical paths. Path 2 Path 2 Start Game Map

Path Scale Path 1 Path 1 Low- level Path Low-level Path Path 0 Path 0 Goal High-level When Path 3 is done being Path followed, pop it off the stack High-level Path and start following Path 2

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com COORDINATED MOVEMENT

we pass those two units into the colli- FIGURE 12. Push a temporary avoidance path onto the path stack sion resolution system. As soon as the collision between the After Avoidance Path Push first two units is resolved (Figure 14), we need to reevaluate the collision and Avoidance Path Avoidance update the unit involvement. A more Units as Path complex system could handle the addi- Path Stack tion of new units to the collision at this AB point, but you can get good results by Low-level Low-level Path Path simply removing units as they resolve their collisions with the original units. Low-level Path Once we’ve updated the units in the High-level High-level collision, we go back to find two more Path Path units to resolve; we repeat this process until no more units are involved in the collision (Figure 15). more paths onto the stack and execute have them easily and immediately You can implement this system in those. When we’re done executing a integrated into the unit’s movement two different areas: the collision resolu- path on the stack, we pop it off the (Figure 12). tion rules or the collision determina- 56 stack and continue moving along the tion system. The collision resolution path that’s now at the top of the stack. rules would need to be changed in the Second, a path stack enables high- Solving a Compound Collision way in which they units higher and level path reuse. If you recall, one of lower priority; these rules aren’t partic- the key components to good group and or our purposes, compound colli- ularly difficult to change, but this mod- formation movement is that all of the F sions are defined as simultaneous ification does increase the complexity units take the same route around the collisions between more than two of that code. Alternatively, you can map. If we write our path stack system units. Most games will have a practical change the collision determination sys- so that multiple units can reference the upper limit to how many units can be tem so that it only generates collisions same path, then we can easily allow involved in a compound collision. Still, that involve two units at a time; you units to reuse the same high-level path. as soon as a collision involves more still have to find all of the units in a A formation commander would find a than two units, programmers generally collision, though, before you can make high-level path and pass that path on end up writing a lot of spaghetti logic this decision. to the rest of the units in his formation that breaks way too easily. But we’ll without any of them having to do any avoid that situation by reusing the extra work. movement priorities and doing some Solving the Stacked Canyon Problem Structuring the path storage in this simple scheduling. manner offers us several other benefits. If we have a compound collision ne of the ultimate goals of any By breaking up a high-level path into between three units (Figure 13), our O movement system is to create several low-level paths, we can refine first task is to find the highest-priority intelligent movement. Nothing looks future low-level segments before we unit involved in the collision. Once more intelligent than a system that execute them. We can also delay find- we’ve identified that unit, we need to solves the stacked canyon problem ing a future low-level path segment if look at the other units in the collision (Figure 16). The stacked canyon isn’t a we can reasonably trust that the high- and find the most important collision simple problem to solve upon first level path is viable. If we’re doing high- for the highest priority unit to resolve inspection, but we can reuse some ly coordinated unit movement, a path (this may or may not be a collision simple scheduling to solve it once we stack allows us to push temporary with the next highest-priority unit in have our coordinated unit movement avoidance paths onto the stack and the collision). Once we have two units, in place. 3g The first step is to identify that you FIGURE 13. Solving a compound collision. The order of priority is A>B>C. have a stacked canyon problem. This step is important because it’s needed to propagate the movement priority of A. Initial State B. After A/B collision is resolved C. Done the driving unit (the unit trying to move through the stacked canyon) A B A B A B through to the rest of the units. We could just let each unit ask other units to move out of the way based on its C C C own priority, but a better solution to use the priority of the driving unit — Resolve collisison Resolve collisison after all, that’s the unit that we really between A & B. between A & C. want to get through the canyon. Identifying a stacked canyon problem

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com COORDINATED MOVEMENT

can be done in a couple of ways: notic- cases. You’re better off simply writing ing that the driving unit will push the code that can deal with the problem FIGURE 14. Solving the Stacked first unit into a second unit or looking early. Your game will be a lot more Canyon Problem. at the driving unit’s future collision list playable throughout its development. A. Classic Stacked Canyon Problem to find multiple collisions. Whichever GAME MAPS ARE GETTING MORE AND MORE COM- method is used, the pushed unit PLEX. Random maps are going to be one E should move with the same priority as of the key discriminating features in the driving unit. RTS games for some time to come. The D Once we’ve identified the problem, better movement systems will handle we have a fairly simple recursive execu- random maps and also take changing C tion using the coordinated movement map circumstances into account. (Figure 17). We treat the first pushed UNDERSTAND HOW THE UPDATE AFFECTS UNIT B unit as the driving unit for the second MOVEMENT. Variable update lengths are a A pushed unit, and so on. Each unit is necessary evil that your movement code pushed away from its driving unit until will have to be able to handle. Use a Unit A is trying to walk it can move to the side. When the last simple update smoothing algorithm to through a Stacked Canyon. unit moves to the side (Figure 18), the make the most of the problems go away. original driving unit has a clear path by SINGLE UPDATE FRAMES OF REFERENCE ARE A which to move through the canyon. THING OF THE PAST. It’s impossible to do B. Each unit pushes the unit next in line. 58 A nice touch is to restore the canyon coordinated unit movement without E units to their original states. To do planning. It’s impossible to do plan- this, we simply need to track the push- ning if you don’t track past decisions D ing and execute the moves in the and look at what’s likely to happen in reverse order from which the units the future. Any generalized coordinat- Pushes D moved to the side (Figure 19). It’s also ed unit movement system needs to be C useful to have the movement code rec- able to recall past collision informa- Pushes C B ognize when the driving unit is part of tion and have future collision informa- Pushes B a group so that the rest of the group’s tion available at all times. Remember A units can move through the canyon that minor variations during the exe- before the canyon units resume their cution of a collision resolution plan Unit A is trying to walk original positions. can be ignored. through a Stacked Canyon.

C. When each unit can move to the side, Tips No Stupid Swordsmen it does so.

PTIMIZE THIS GENERAL SYSTEM TO YOUR imple unit movement is, well, C B O GAME. A lot of extra computation S simple. Good, coordinated unit can be eliminated or simplified if movement is something that we E D you’re only doing a 2D game. should be working on in order to raise Regardless of whether you’re doing a our games to the next level and make 2D or 3D game, your collision detec- our players a lot happier in the tion system will need a good, highly process. With these articles, we’ve laid A optimized object culling system; the foundation for a coordinated unit they’re not just for graphics anymore. movement system by talking about USE DIFFERENT METHODS FOR HIGH- AND LOW- topics such as planning across multi- LEVEL PATHING. To date, most games have ple updates and using a set of collision used the same system for both solu- resolution rules that can handle any tions. Using a low-level solution for two-unit collision. Don’t settle for stu- D. Reverse order to rebuild situation. high-level pathfinding generally results pid swordsman movement again! ■ in high-level pathfinding that’s slow E and not able to find long paths. F O R F U R T H E R I N F O Conversely, a high-level pathfinder • Archer Jones. The Art of War in the D used for low-level pathfinding creates Western World. Oxford University Press, paths that don’t take all of the obsta- 1987. ISBN 0-252-01380-8. This is a cles into account or are forced to allow C great book if you’re looking for informa- units to move completely through each tion on historical formation usage. other. Bite the bullet and do two sepa- • Bjorn Reese’s page of pathfinding/ B rate systems. navigation links is at NO MATTER WHAT YOU DO, UNITS WILL OVERLAP. http://www.imada.ou.dk/~breese/ Unit overlap is unavoidable or, at best, navigation.html Replace this unit first. incredibly difficult to prevent in all

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com POSTMORTEM Shi Eeaime WILD 9

by Didier Malenfant

60 hiny Entertainment is well known for its suc-

cessful console platform games. And yet, huge

hits such as and its sequel have

resulted in huge expectations for future pro-

jects within this genre. Game players who

might forgive minor imperfections in an innovative SSPC title, such as Shiny’s MDK, are less understanding of faults in a plat- form game. The Golden Age of platform games, ushered in by the NES,

the Super NES, and the Megadrives con-

soles, established some very high standards

for this genre. In this environment, our

team at Shiny launched the development of

WILD 9.

Didier Malenfant is a programmer at . Even being French he is only mildly rude and enjoys snowboarding, driving his yellow car, researching in all aspects of 3D programming and running linux boxes. He can be reached at [email protected].

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com Like None Before

e were fortunate in that Tom Tanaka, WILD 9’s lead W designer, had been one of EARTHWORM JIM’s designers. His experience and love for the platform genre guided the project’s efforts from the beginning. During some of the early design meetings, we decided that one way to differentiate our would be to come up with creative ways of get- ting rid of the enemies — most platform games involve some form of the player jumping onto the enemies’ heads. So from the very start, we designed WILD 9 to be different in this respect. From this beginning point, we realized that the main character would have to possess some kind of weapon that could eliminate the baddies in a lot of different ways. David Perry, Shiny’s president, took an interest in our ini- tial design and challenged us to create a weapon like none that had been attempted before in a videogame. Our first The WILD 9 team — Standing up from left to right: Erik ideas centered on a female character wielding a glove that Drageset, Jean-Michel Ringuet, Scott Herrington, Malachy could remotely vaporize enemies or objects. This glove Duffin, Tom Tanaka, Gavin James. Sitting down from left to would deliver the same kind of actions you could perform right: Lori Perkins, Rich Neves, Kevin Munroe. Not pictured: 61 with your own hands, only with a thousand times more Klaus Lyngeled, Stuart Roch, Lloyd Murphy, Didier strength. And then, somewhere in the early design stages, Malenfant. And the Big Grub guys: John Alvarado, Brandon we realized that this wasn’t a weapon at all. The glove Humphreys, Mike Winfield, Ron Nakada, Neil Hong. evolved into a beam that came out of the back of the main character’s suit. This system was to take center stage in the game’s design and eventually was dubbed “The Rig.” WILD 9 B’Angus; Nitro, who is allergic to everything and has a bad was to become one of the most violent games around, but tendency to explode when he sneezes; Henry, who helps ironically the main character was to have no weapon. navigate the water levels (Wex doesn’t know how to swim); Kevin Munroe, character and story designer and lead ani- Crystal and Boomer, the game’s female characters; the mul- mator on the project, expanded Tom’s first attempts and cre- tiple bad guys grunts Wex encounters along the way; Karn, ated a whole universe and storyline for the game. The main the evil giant who faces Wex at the end of the game; the character became Wex Major, a male teenager lost in anoth- famous Little Evil Green Men (or LEGM as we later called the er galaxy. Wex’s encounter with The Rig gives him the tiny, single-eyed green pests); Filbert the sniper; and many opportunity to fight the evil creature controlling the planet other characters, as well as the world they inhabit. upon which he’s just landed. As Kevin described his own The initial game bible only served as WILD 9’s starting design, “Imagine if George Lucas co-wrote with point, because we added a number of elements to the design Lewis Carroll. And imagine if George Lucas then codirected as we went along (we even managed to finish some of it with Tex Avery.” Wex soon finds allies (eight of them), them). Still, this document proved to be such a valuable and together the Wild 9 embark upon a “David vs. Goliath” resource that all of Shiny’s future titles will start with the battle against Karn, a 376-year-old being with the power of a development of a game bible. Many times, titles are late god and the temperament of a toddler. Karn has set his because certain gaps in the original design were overlooked sights on harnessing the ultimate power of The Glove and and the full design was never really laid down on paper Rig, as well as the only being capable of using them: Wex before development started. Writing down design details Major. From his humble anti-hero beginnings as a pizza boy forces the designers to make all the micro-decisions that the in earlier designs, Wex was now the planet’s only hope, and design encompasses and leaves less room for interpretation the task ahead of him was nothing short of incredible. or hesitations from the rest of the team. Because Shiny had had luck with licensing its properties in the past, we created a game bible that contained the char- WILD 9 acter profiles, as well as multiple sketches of all the charac- Shiny Entertainment ters in the game. This document was then used to show pro- Laguna Beach, Calif. duction studios and other interested parties the game (949) 494-0772 universe from which TV shows or toy lines could eventually http://www.shiny.com or http://www.wild9.com draw. As David had the chance to say in multiple speeches Team Size: Thirteen full-time developers at Shiny. Five contrac- he made on the subject, a game bible is invaluable in the tors from Big Grub. quest to license your game worlds and characters. In our Release date: October 1998. case, it was also a useful reference to the huge database from Intended platform: Sony PlayStation which we were going to create a game. Kevin and Tom Hardware used: Loads of very powerful PCs and PSY-Q devkits. designed a lot of game content — to the point where we Software used: 3D Studio Max, Photoshop, Painter, PSY-Q nearly had to lock them in Shiny’s basement to stop them development system, Slick Edit, Codewright, Visual C++, from adding anything else. In addition to the main charac- Sourcesafe, and custom tools. ter Wex, the designers came up with a sidekick named http://www.gdmag.com FEBRUARY 1999 GAME DEVELOPER POSTMORTEM

of the dangers ahead by panning the camera one way or another. While WILD 9’s design was challeng- ing from the start, we also wanted the game to push new limits on the techni- cal front. We wanted to deliver not only great and innovative game play, but also amazing visuals. The results were a mixed bag, and our technologi- cal effort was probably the most tumul- tuous part of the game’s development.

the screen made the popping from one The Tools and the Talent LOD to another minimal. The levels and characters also con- ILD 9 was originally targeted at tain various invisible bits of informa- W two platforms; the Sony tion, such as trigger points, reference PlayStation and the . We points, and collision boxes. A level’s eventually dropped the Saturn version, trigger points generate monsters and 62 much to the disappointment of many powers ups. A model’s reference points Sega fans worldwide. Still, our original provide anchors for multiple effects. If B’Angus plan influenced the technical side of a character, such as the alien beast in the project throughout the course of the Beast Engine level, has smoke com- the game’s development. ing out of its nostrils, then these will WILD 9’s development began around Characters and levels in the game be generated from a reference point the time that the first all-around 3D were modeled in 3D Studio Max and placed on the character model. The ref- platform games had started to appear. then exported using a proprietary plug- erence point can be hidden and shown Faced with this emerging trend, we had in that Malachy Duffin wrote. In order according to a visibility track placed in to make a choice whether to follow it to account for both platforms, Malachy the model’s animation in 3D Studio or to stick to more traditional 2D-based first wrote the export plug-in to handle Max, which makes editing them sim- game play, even if it meant evolving in both output formats, and the scripts ple. Of course, things are never too a 3D environment. The second solu- that drove the export process con- simple. We encountered some prob- tion was chosen mainly because of The tained lines referring to both the lems toward the end of the project Rig. We wanted full freedom for the PlayStation and the Saturn. When we when time came to get the PAL version beam to move, and that meant using dropped the Saturn version, half of the of WILD 9 going. The game’s final level, the full range of joypad inputs just to data in these scripts became obsolete; which features an encounter between achieve that goal, never mind running from that point on, only the Wex and Karn, involves Karn trying to around in 3D. So we decided that the PlayStation side continued to evolve. catch up to a running Wex. Because main character would travel on a pre- The export plug-in handles the char- Karn is such an imposing fellow, his defined path that would roam through acter’s geometry, which is stored as a a 3D universe, involving changes of certain number of limbs, and anima- direction and multiple camera angles. tion, which is stored as translation and This decision also allowed the level rotations of those limbs. This system designers to carefully place camera has a small memory footprint while angles along the character’s path, thus remaining flexible enough for our pur- enabling dramatic scenes and varied poses. (We didn’t use single skin mesh- views of the scenery. Later, we used the es in the game because the on-screen camera to give players more awareness size of our characters would have ren- of their surroundings and warn them dered this refinement invisible.) One of the game engine’s features was the abil- ity to hide and unhide specific limbs, which was pretty handy in optimizing the game’s rendering time. One of the tricks we used was to produce multiple level of detail (LOD) models of certain objects, and store those LODs as sepa- rate limbs within the same character file. We could then hide and unhide LOD limbs depending on an object’s distance from the viewpoint; once Filbert again, the small size of our objects on

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com footsteps generate a puff of smoke and with only a few kilobytes of memory realistic ripples into the water — all a loud bang; we generated these foot- and a few bytes of video memory left done using different types of particles. steps with reference points placed on when this level was running. However, Two factors led to the literal flourish- Karn’s feet. A problem arose with the toward the end of the project, when ing of particles everywhere in the PAL version because the animations we’d add a game element that would game. Gregg Tavares, who started as a played at a different speed to compen- appear on all the levels (such as the in- programmer but left the project mid- sate for the 50Hz frame rate. Some of game information panel), Wreckage way through development, added the the reference points were skipped alto- would be the first level to break and ability to create and use particles from gether, and Karn would appear to limp run out of memory. We used the parti- inside the game’s scripting language. as only one leg would make a sound. cle system extensively throughout the Furthermore, John Alvarado built his We solved this problem by making the game for explosions and various now famous Particle Studio module. reference points active for multiple pyrotechnics. Here too, unexpected This module allowed us to preview the frames and preventing the game usage of the particle system proved effects of the particle system’s many engine from processing those two very effective in the Drench level, parameters while modifying them in frames in a row. If one reference point where raindrops fall and create very real-time using the joypad. was skipped, we were sure to catch at least one another from the same group. It wasn’t a very elegant solution, but it served its purpose late in the project. All in all, 3D Studio Max was a decent editing environment for Stuart Roch, Lori Perkins, and Rich Neves to work with, although a dedicated editor would probably have been better in some cases. 3D Studio Max offered near-total layout freedom, but was lacking in the ease-of-use department, considering that we weren’t even using a tenth of its features for our level-building and real- time character purposes. One feature that was very useful to us, however, was the user-defined properties it allows you to input for each object. By including a lot of keywords and properties within each game object, we could easily pass on the information that the export plug-in needed to and process its output accurately and efficiently. My assignment for the project was to program the game’s intermediate lev- els, which consisted of jetbike races chasing bad guys in various landscapes, falling down a huge tube trying to avoid projectiles, and the game’s final encounter between Wex and Karn. The tools and the game engine also allowed for animated textures and par- ticles, which the team’s artists used extensively. Jean-Michel Ringuet used animated textures in the Crystal Maze level, for example, to give crystals a extremely realistic glow. Erik Drageset provided levels such as Drench, which featured a series of multiple water falls and water effects — it had us all in awe the first time we saw it. In the mean- time, Lloyd Murphy was working on Wreckage with the secret intention of making it the most graphically inten- sive level in the whole game. He kept that record to the end of the project http://www.gdmag.com FEBRUARY 1999 GAME DEVELOPER POSTMORTEM

trusted version of the game was always contains all the different classes of char- living on Gavin James’s computer. acters in the game and the correspond- Gavin personally made sure that he’d ing collision types allowed to occur incorporated every change we made to between them. The system can thus the game by keeping track of every- trivially reject collision tests between body’s progress and updates. For future objects that should never collide with projects, we hope to implement some each other, such as two static objects. kind of registry or database where all As Gavin continued to improve the the game elements can be recorded. game engine, we kept extending the Our hope is that such a system would scripting, adding new features and allow us to better see how changing allowing access to just about any low- some part affects all of the other parts. level function through C function These kinds of tools, together with Our programmers developed a script- calls. Though imperfect, the scripting our scripting language, offered our ing language to enable easy implemen- language was fairly easy to use once all artists a creative freedom that paid off tation of the characters’ AI. The lan- its loopholes were known, and it for us in a big way; it’s likely to serve as guage is based on a byte code, which is enabled faster prototyping than a model for our future development interpreted in real-time during the game straight C. A testament to the versatili- efforts. Great and unexpected things and specifies three main threads for ty of the scripting language is the fact resulted when the artists were able to each character. The intelligence, anima- that even the menu system that 64 try out new ideas out without involv- tion, and movement threads control the Malachy wrote is, in fact, treated as a ing the programmers. A typical scene actor’s behavior and also have the abili- normal game level by the engine. Every involved a bunch of programmers ty to spawn additional threads, if neces- menu item that the players see on the looking at the artist’s screen and saying sary. The scripting language also han- screen is a game actor and the back- something along the lines of, “I didn’t dles collision events using a table that ground is a huge game level. know it could even do that.” On the other side, every time a task required the programmers’ help, syn- chronization became a major problem, with the programmers trying to fit these extra tasks into an already busy schedule and artists waiting around for a very long time before they could wrap up their levels. One perfect example of this was the game’s enemy AI. Even though the artists could place enemy actors any- where in their levels, they always needed a programmer to code at least a place holder AI routine so that the artists could preview their work. As a solution, we built a test level that we could use as an object viewer. Artists could drop their models into this test level to get a pre- view of what they would look like in their final, real-time, PlayStation form. While the test level helped, it didn’t solve completely solve our work syn- chronization problem. Enemy behavior still needed to be coded in for the level to be fully tested and polished. Still, a really effective solution to many of the problems that we experi- enced involved not only extra organiza- tion and proper scheduling, but also better communication. If a programmer is unaware that another team member is waiting on a certain feature, then the process would end up in a gridlock situ- ation. So, while the organization we chose worked, it was never perfect. We used Microsoft Sourcesafe to share code The Little Evil Green Men between the programmers, but the only

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com Progress to anticipate what people would need in under incredible pressure and extreme- order to be productive and gave, where ly tight deadlines. And yet through all ILD 9’s development was divid- possible, top priority to other people’s this, we get along well with one anoth- W ed into two relatively distinct needs to avoid gridlock and keep things er, and no homicides took place. periods (more on the reasons for this moving. He also helped a lot by sorting Joking aside, the chemistry among the later). The first team that worked on out small and easily definable tasks and second team was incredible, and I WILD 9 had most of the game engine handing them to people who were think I can safely say that everyone written, a few levels started, and some learning parts of the system, thus mak- had a great time working on this title. game play mechanics implemented, ing their learning curve easier. A great atmosphere meant suggestions but the game itself was not what we If the first team’s working atmos- on each other’s work were well-taken, could call playable. When the second phere was not perfect, that of the sec- spirits were up, and productivity was team took over, Gavin spend most of ond team was a completely different positively influenced. his time cleaning up the engine, while story. People were gradually added to THE SCRIPTING LANGUAGE. As I men- the artists and level designers focused the team as development progressed, 2. tioned earlier, we used the script- on finishing one level. This was the and the last few months were spent ing language for just about everything long birthing of Gulag, which took a full two months to finish; more than any other level in the game. To the team’s credit, a second level, called Bombopolis, was started during the last few weeks of Gulag. Then things started to really snowball. People were getting used to the tools and the limita- tions of the engine, and we spent the remainder of the project making progress at an extremely scary pace. At this point, the engine was getting pretty stable, and we were able to start adding new features. Levels started popping out of nowhere, and before we knew it, we were playing a full-blown game.

What Went Right

THE SECOND TEAM. Shiny had origi- 1. nally wanted to release WILD 9 last year. Back then, another team was working on the project. But following a major staff upheaval, the only people left from the original staff were Tom and Kevin; the rest of the first WILD 9 team, in one way or another, left Shiny. I’ll elaborate on this in the “What Went Wrong” section, but needless to say, inheriting a project, engine, graphical work, and early levels from another team is indeed not an easy task. A constant tension exists between trying to work with old stuff and wanting to redo it all over again. Most credits must go to Gavin, who had to abide by technical decisions made by other programmers before him; he spent a lot of time trying to make sense of the game engine’s fea- tures and inner workings. Word is that even though the game is now finished, he’s still somewhere back there trying to make sense of part of it. In truth, he spent a lot of time trying http://www.gdmag.com FEBRUARY 1999 GAME DEVELOPER POSTMORTEM

in the game. In fact, the language turned out to be rather easy to learn, and it was very powerful once some key features were added to it. It was a great way to prototype certain actors very quickly and work with the anima- tor and the level designer to polish up behaviors and attack patterns. The interpretation of the byte code wasn’t the fastest thing around, but it turned out to be a positive trade-off for flexi- bility and ease of use. Also, most of the low-level functions were performed by straight C code that was triggered by scripting commands from within the actors’ AI code. STUART ROCH STEPPING UP AS A PRO- 3. DUCER. During a rough patch in the second team’s initiation, when we thought things couldn’t get much worse, WILD 9 lost Scott Herrington (it’s producer), who had to replace the departing Simon Cox as Shiny’s PR manager. Stuart Roch had been hired initially as an assistant designer, but he quickly stepped up to full-blown pro- ducer, even though he only officially earned the title later on in the project. Stuart’s attention truly helped keep the project on track, as he did an awesome job at keeping everything together, organizing schedules, and making sure that we as the team had everything we needed. It’s no surprise that now, after WILD 9, Stuart will go on to produce other Shiny titles. THE ADDITION OF BIG GRUB. Toward 4. the end of the project, it became clear that we weren’t going to finish all the ideas that we had had for this game if we didn’t get serious help in the form of extra manpower. We needed art for the menu system, a closing movie for the end of the game, and a dozen pro- grammers to implement the behavior of all the actors that the level designers had in mind for their levels. We didn’t get a dozen programmers, but we did decide to flout Brook’s Law and add more people to the project. Learning from past mistakes, we looked for peo- ple who were not only talented, but work well with the rest of the team. Nobody fit this bill better than the Big Grub guys. Big Grub is a small company from Irvine, Calif., whose talents we con- tracted to help us out with all the con- tent ideas we had for the game. John Alvarado, Ron Nakada, and Mike Winfield helped program the AI for

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com POSTMORTEM

Although it ended up being very use- ful, it became clear early on that the language and its op-codes had mas- sive loopholes and “gotchas” waiting to jump on us. To help other pro- grammers with their first steps, Gregg started maintaining a document as he was learning the AI system. This doc- ument described all the major prob- lems that he’d encountered and ways around them that he’d discovered. When Gregg left the project , Gavin among us ten-fold. One early prob- and the rest of the programmers took lem with the project involved assign- over the responsibility of updating this ing tasks to the individual team document as new problems appeared members and keeping abreast of who or new solutions were found. many of the game’s characters, was up to what. Weekly meetings This process continued until the very Brandon Humphreys worked on the going over everybody’s schedules and a end of the project. The document was interface art and the end movie, while lot of direct and constant communica- invaluable in getting somebody up to 68 Neil Hong designed the second falling tion among us (most of the time with- speed on the system, such as when the level and helped with the end movie. out even leaving our desks) directly new programmers from Big Grub came We couldn’t have finished the game in addressed this problem. to the rescue. Overall, the language’s time without them, but we also took a design was, in some places, question- big risk bringing on new people toward able; for instance, the actor registers the end of the project. What Went Wrong were called params and the virtual KEEPING EVERYBODY IN CLOSE QUARTERS. processor’s variables were called regs, 5.Shiny is housed in a three-floor THE FIRST TEAM. I once heard David which was greatly confusing. building. The first floor is mainly 1. Perry say that the first WILD 9 THE PHYSICS ENGINE. The physics administrative, the third floor houses team was a great collection of talented 3.engine turned out to be one of the MESSIAH and SACRIFICE teams, which individuals, while the second was a tal- Gavin’s biggest nightmares during the leaves the second floor for WILD 9 and ented team. This statement alone sums WILD 9’s development. He inherited STUNT RC COPTER. Shiny has no private up the main problem encountered by offices, so to speak; both development the first team. As we found out later in floors are organized in an open space the project, communication and good layout, with separating half-walls in atmosphere were two factors that made some cases. STUNT RC COPTER is only a this project move forward; it’s now three-person team, so the rest of the obvious that the best thing to do was space was occupied by the WILD 9 team. to start over rather than try to salvage a While we weren’t cramped, it’s safe to situation that was going nowhere. say that some people got to know their A LACK OF EXISTING DOCUMENTATION. neighboring coworkers rather well. 2. I’ve already sung the praises of This proximity became invaluable our scripting language, but not every- because it enhanced communications thing was totally perfect in this picture.

GAME DEVELOPER FEBRUARY 1999 http://www.gdmag.com this code from the previous program- fellows. The material they came up supposed to populate the Wreckage mers, and he spent more time trying to with is enough to fill up three or four level. In fact, Lloyd’s tank became sort unravel, optimize, and just get that part games like this one. In addition, the of a myth, which we would bring up at of the code functioning than on any whole team took this game to heart various meetings: “So we don’t have other identifiable part of the game. His and ended up coming up with sugges- time to fit even a tiny little tank then? advice to engine inheritors: unless the tions of their own. We were thus faced Are you sure? What if I pretend it’s a physics are perfect and written exactly with a situation toward the end of the background?” The need to stop devel- as you want them, grow your own. project: we could not fit everything opment at some point made it impossi- DEAL ME IN. Our tools programmer into the game. ble to use it all the ideas and content 4.and resident Irish person Malachy Wex’s weapon, The Rig, is normally that we had, although I hear from reli- once decided to bring us a little multi- blue. But it possesses a red mode, which able sources that the cow did eventual- player game he was working on in his is greatly under-used in the game. The ly make it in there somewhere. spare time. The game was called DEAL red mode was initially meant to be a ME IN, and he wanted us to help him more powerful blue beam, but this cre- beta test it. DEAL ME IN is best described ated game play issues, as a player will We Did Our Best as a very addictive cross between sometimes want to transport enemies Scrabble and Poker. Actually, “addic- in the beam from one point of the level t’s an amazing feeling after working tive” doesn’t even begin to describe the to another. The red beam would vapor- I so hard on a game to sit back and darn thing. ize just about everything on contact, start playing it. In our case, the general Everyone at Shiny plays games. So which was obviously a problem. This is feeling was that WILD 9 turned out 69 when it comes to testing a very addic- one of the only design issues that was amazingly well, especially in light of its tive game, we are very thorough. The never truly fixed and the red beam, rocky development history. One of the game became an obsession, to the point even though it made it into the game, best feelings was to see the press reac- where it was affecting our productivity. isn’t used to its full potential. tion at E3 this year, and to hear the It turns out, after extensive research, Many other great actor ideas never comments that WILD 9 had come a long that there is no such thing as a “quick made it into WILD 9: for instance, the way. If you ever saw anything from game of Deal Me In.” 3D cow that was intended as a refer- WILD 9 a year ago, go and check out the THINGS THAT DID NOT MAKE IT. Tom ence to EARTHWORM JIM, or the tank final version. We did our best to make 5. and Kevin are two very creative that Lloyd Murphy modeled that was sure you will have a pleasant surprise. ■

http://www.gdmag.com FEBRUARY 1999 GAME DEVELOPER SOAPBOX by Luke Ahearn

Garage Developers are Not Dead

1. Write your game idea on paper. 2. et me start by clarifying some terms, particu- Build a prototype. 3. Submit it to a pub- lisher. 4. Develop the game. 5. Detail larly “Garage Developer” and “Suit.” Do not everything you did right and wrong in steps one through four and write a confuse a “Garage Developer” with a Postmortem for Game Developer. 6. Start at step one and repeat this process until “Geek.” Likewise, do not mistake a good you succeed. L Dare to take these steps and repeat “Businessman” for “Suit.” These terms revealed that many (who wish to them until you succeed. Each time are about opposing mindsets. remain anonymous for fear of appear- around you will make progress towards Those of the Garage Developer mind- ing “unprofessional”) are active in the producing a successful game. This goes 72 set, given any limits, would rather work production of 3D models, animation, for the professional game developers as their asses off and achieve something music, and even design. The small guys well. Is your company or development than do nothing and achieve nothing. are always rising to the top. It’s a cycle; team reinventing itself, stretching Garage Developer, as I use the term, the small guy succeeds, becomes a big itself, and daring new heights each describes the innovative, self-starting, guy, and another small guy pops up to time you start a new project? If not, and hard-working mindset of the indi- do things even better. then you are moving backwards. vidual who has a strong inner vision and People will latch on to a statement Whether you’re a true Garage follows it. A Geek lacks these qualities. such as “Garage Developers are dead” Developer or not, have a mindset of The Suit mindset, as I use the term, and misconstrue it for their own pur- quality and innovation. It’s a mindset would rather rip-off an idea than inno- poses — usually to justify their own vital to the game development com- vate. He is not like the honorable failings. People have been echoing munity. If you decide to take this dar- Businessman, as his goal is to crank out this sentiment about garage develop- ing journey, you will not be alone. crap (such as all the MYSt rip-offs), ers and other innovators for hundreds You’ll find plenty of help and informa- dump it in a box, and sell it. This mind- of years. The American patent office tion online, in news groups and web set believes that pulling ads is saving declared that everything that could be sites. The Internet has hooked all of money, and that lying on the box will invented, had been, in the late our garages together. We now have promote sales. This mindset has a 1800s.Obviously, a few new inven- tools and information at our disposal short-term view of things. tions have appearedon the horizon undreamed of only a few years ago. What we have in the industry now is since that time. Garage Developers have never been a great number of Geeks and Suits cre- This statement reflects more than just more powerful. ■ ating rip-off garbage, screwing each a pessimistic view of our industry, but a 3D scene by Nicholas Marks of Goldtree other over, and filling the bargain bins core problem of humanity. It says to me to critical capacity. What we need are that some people believe that all inno- Garage Developers and Businessmen vation, individual achievement, and working together to create innovative accomplishment is over. That people and profitable games. believe that there will be no more dar- So, I am sick to death of the state- ing startup businesses based solely on a ment “Garage Developers are dead.” I grand vision and some elbow grease. think the statement was originally That people believe that there will be intended to mean that the days of one no more technological breakthroughs guy developing an entire game by him- based on imagination and perspiration. self are over (and I don’t even agree In short, that there will be no more with that). You’d be surprised at the great works by great people. Everything number of two- and three-person shops has been done, discovered, and dared out there that are responsible for huge — so why try? “So why try?” is the pure chunks of the development process on essence of the loser mindset. some major titles. And it’s not just pro- So what’s my advice for making it as grammers. An informal survey of mine a Garage Developer? It‘s easy to detail.

Luke Ahearn is lead designer and producer at Goldtree. He is currently developing Goldtree’s next two titles. He can be reached at [email protected].

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