Postmortem: Heretic II
April 19, 1999 If Will Shakespeare were around today, I’d like to think he might make the quote "If graphic violence be the food of gaming, then code on". Looking back on Heretic II, I think we can safely say we followed that to the letter. Heretic II was designed as a third person action game from the word go. It had actually been proposed a while back here at Raven but at the time the technology to do it convincingly just wasn’t there, so it was shelved until it could be done right. After seeing what Core had done with Tomb Raider, it was decided to take that proposal from the shelf, dust it off, and see what we could do with the latest Id Quake II engine. The emphasis was always to be an action game, rather than an exploring style ala the good Lara, or even Hexen II; we wanted cool worlds, cool monsters, violence, exciting ways to hand out death, and lots of it. The team.Raven has an onsite complement of about 50 people, and during the development of H2, almost everyone had their fingers in the pie at one point or another. Since this would require some major management, the team ended up with ‘middle managers’ for each of the major disciplines. Jon Zuk handled Mapping, Jeff Butler handled the 2d texturing and skinning, Brian Pelletier handled both the 3d Modeling, and overall project design, Pat Lipo was the programmers’ code god, and I was handling whatever fell off Pats back. The main core coding team consisted of John Scott, who handled the front end, all 3d card support and was our bug finder extraordinare, Mike Gummelt & Josh Weier, who were responsible for the AI and the Buoy system, as well as lots of very pretty special effects, Marcus Whitlock, who dealt with the Client prediction end of things, as well as the Camera itself, Bob Love who handled all object placement, as well as all entity related coding, Josh Heitzman, who implemented the whole client effects system (of which, more later), as well as updating our physics system, Pat Lipo who was herding us all in the direction he wanted us to go as well as implementing our hero Corvus, and me, who handled the software renderer, the EAX and A3D sound systems, and pretty much anything else that no-one else did. The mapping core team consisted of Michael Ramond-Judy, Matt Pinkston, Mike Renner, Tom Odell, Jeremy Statz, Tim Jervis, and our glorious leader Brian Raffel, all being governed by Jon Zuk, the design lead. Its tough to point at any one map and say that it was one persons work, since everyone worked on lots of maps, so it was decided that way that no one persons style would become to prevalent. From the Art standpoint, we had Jeff Butler in charge of texturing, working with Rob Gee, Kim Lathrop, Gina Garren, with help from Mark Nelson, and of course, our project lead, Brian Pelletier. 3D wise, we had Jeff Lampo, Jeff Dewitt, John Payne and Eric Turman creating and animating 3d objects, and special mention should be made of Brian Shubat who stepped up to create the famous Corvus animations, so next time you see Corvus scratching his ass, you know who to blame. The amazing maestro of Kevin Schilder of course handled sound & music. Many other people in Raven helped out with H2, but it would take a complete article to go through them all and their contributions, so a big thank you to them goes here. Implementation.After the decision to go on this project was made, one of the first things that occurred was commissioning the fantasy artist Brom to create some conceptual art. This helped shape the direction and flavor of the worlds that these creatures would inhabit. At this point, a technology demo was commissioned, to ascertain if a 3rd person game could be built within the Quake II engine, with a camera that would be intuitive. This was achieved within a month. The camera was in fact one of the easiest things to build. We knew what we wanted, and went out and did it. Once we demonstrated this demo to Activision, the green light was given, a delivery date was hammered out so we could be done for Christmas, and it was all systems go. Brian Pelletier took over at that point as Project lead, and the project design doc was hammered out. Pat Lipo decided on the critical systems we would need to address, and development commenced. There were lots of discussions about the wisdom of attempting to implement a software renderer, at which point the marketing department at Activision got involved and informed us that it was a requirement, since Europe is traditionally about 2 years behind the States in hardware, so most Europeans would not have 3d acceleration. Since traditionally fantasy games have a strong following in Europe, this was deemed important. Development progressed over the year, as development does, in spurts. E3 came and went with our demo being displayed, to a lot of surprised and enthusiastic reactions. We recorded voice actors to portray Corvus, and the tome, we commissioned a Russian group known as Creat to do our pre-rendered sequences. A pre-release demo was hemmed and hawwed over, until we finally decided to do one, and as it was, we were a couple of days late with it, mainly due to us trying to get the load/save option working correctly. In the end, we figured it was better to have a demo without it, rather than making people wait. After that, we hit crunch time hard to get the game done. Unlike many projects, not much was actually left out from the original design document. We did have some worries with the in-game cinematics, but Rick Johnson came to our rescue with a scripting system he was developing for the fledgling Soldier Of Fortune. When it came to Quality Assurance testing our product, QA at Activision was especially tough on us due to having just released a product that was not as bug free as it might have been. But this was really in our favor, since it forced us to tighten up and examine our code more thoroughly than we might have. Modeling.Our models, as the modders out there can attest to, aren’t your regular run-of the-mill Quake 2 .MD2’s. We modified the whole modeling system so we could have models with a rudimentary backbone. This was required to allow corvus to look around when the camera was moved. It’s a nice bit of realism, and added a lot to the feeling of character immersement. The new format also allowed for the creation of code reference points of the models, so we could create special effects at a specific point on the model, say corvus’s hands or feet. The new model type was called a Flex Model, and was a product of SoftImage. SoftImage was used for almost all our animations, which were not, contrary to popular belief, the product of motion capture. 3DSMAX was used to create all our static world objects, and the simpler animations. One other implementation that came into great effect on the Flex models was the divided animation system. This allowed us to split off animations at Corvus’s waist, so we could have him running and shooting at the same time, without the need for gobs of animation data. As it was, Corvus ended up with almost 1600 frames of animation for the retail version of H2, and that’s not including the cinematic frames… Quake II System refinements / modifications.Some of our biggest modifications were all under the hood so to speak. Obviously the client effects system – our client side special magical effects generator - was one of the biggest. With all the special magical effects that were being planned, it became obvious very quickly that the existing Quake effects code model would not be able to handle it. Besides, the reasoning went, it would be better to have as much of the client system handling the effects as we could offload. That way the server would be freed up to do more important game related stuff. The way it worked was an effect would be fired off from the game code on the server, pass across the network general information, like effect ID, location, its owning entity (so it would follow owners around if they moved), and then effect specific information per effect. The client effects DLL on the client would then handle updating the effects, and removing them when culled off screen or completed. Most effects in fact had no extra info, which helped out quite a lot network packet size wise. Programmatically, this whole system turned out to be a mixed blessing - as we will discuss later – although in game terms, it was a resounding success. Other refinements included modifying the software renderer to handle 16 bit graphics. Originally, we were going to handle 32 bit graphics, and all modes of hardware renderers, and indeed, all the code was written. After viewing the slide show that resulted, we decided to scale that back a little. MMX implementation helped a lot, but still, it required some major re-writing of the very tight and very fast original Id code. We will always be indebted to our Chief Technologist Gil Gribb for helping out here. The client prediction system required a major overhaul, bearing in mind that seeing Corvus perform his animations smoothly was critical to a fun multiplayer experience, not mention the fact that most of Corvus’s activity code was animation driven. Marcus Whitlock had his hands full of that particular activity, with a little help from Gil Gribb. We added quite considerably to the whole sound system, splitting sound support off into a separate DLL. The idea was to have three separate DLL’s, one for the Default Quake II sound system, one for A3D support, and the last for Creative EAX support. We didn’t get to the EAX one before release dates where upon us, but with a lot of help from Micah Mason and Suneil at Aureal, we did get a 1.0 implementation of A3D in there. Ways we kicked ass.
Ways we didn’t kick ass.
The EP.Once the game was released, the decision was made to go ahead with a glorified patch referred to as the Enhancement Pack. The idea behind this was that H2 was pretty much free of major bugs, and as such didn’t really require a patch to fix anything. However, there were some bugs in the code. The first being a joystick mistake we made. This was fixed almost immediately, and released on the net. After that, most of the team was disbanded into other projects, leaving Pat Lipo, Marcus Whitlock and myself to complete the EP. We started out fixing the small bugs we knew were out there, and then moved into expanding the feature set of H2 to what we would have liked it to have shipped with. Most notably we added a female model, custom skin selection, autodownloading of skins, models, maps and so on, A3D 2.0 support, EAX support, some new deathmatch levels, correct prediction of Corvus related effects and sounds, a couple of new spells and a plethora of other smaller helpful additions. Once we were comfortable with all the additions we had made, we decided to try a small public beta test of the EP. This was an extremely successful thing to do it turned out, with much helpful commentary coming back from those involved. In fact, we ran into feature creep quite a lot at the end of this burst of activity, which mainly came from the extremely helpful and cool suggestions we got from the beta testers, some of which where obviously too good not to include. We did suffer a bit from the existing H2 community over the EP, since we thought we’d be done just after Christmas. That was a bit optimistic as it turned out, but our mistake was announcing an approximate release date for the EP. The Heretic II community was not best pleased about this, and made no bones about announcing it. Part of the reason for the lateness was due to the construction of the female model. With 1600 frames to build, and all done from scratch due to the limitations of the model format, it took longer to get it right than we estimated. Lessons to be learned.
Discuss this article in the forums
See Also: © 1999-2011 Gamedev.net. All rights reserved. Terms of Use Privacy Policy
|