Postmortem: Epic Games' Unreal Tournament
June 9, 2000 Page 1 of 4
Unreal Tournament, released in November 1999, was, in a way, an accident. After the original Unreal was completed, Epic wanted to follow up the project with some sort of add-on pack. Unreal multiplayer code was very poor, so the team felt that an expansion that improved multiplayer would be ideal. As feature lists grew and patches to Unreal were released, the add-on turned into a complete and independent game.
Unreal Tournament has certainly seen a very nontraditional development cycle, one that I feel would not have succeeded in any other genre. Ultimately, our decisions paid off, because the game earned more than five "Game of the Year" awards and is consistently rated in the top ninetieth percentile in reviews. The online community is producing excellent expansions and modifications to the game and we feel that Unreal Tournament will be around for a long time to come.
>A proper look at the development of Unreal Tournament begins with the completion of Unreal. The Unreal engine was four years under development and the team was wearing down. When the game shipped, it met with a large amount of acclaim, but that positive image was tarnished over time as hardcore players began to complain about the terrible network support. The Unreal team was now faced with several more months of work on the game, essentially to bring it to the point it should have been at when it was put on shelves.
Early in the process, plans were discussed to work on an official Epic add-on to Unreal. The add-on would introduce much-improved network play, new maps, and probably some new game features. The original ideas for the add-on were never put on paper and it never had a name. I was hired by Epic in August 1998 to assist with patching Unreal. Eventually I started to write new code for the add-on with Steve Polge.
Initial work on the add-on in early summer 1998 was made difficult by the fact that Epic was a virtual company. The last year of Unreal's development took place in Canada, with the U.S.-based Epic team flying back and forth to work with Digital Extremes in London, Ontario. When Unreal was finished, no one at Epic wanted to travel anywhere, but at the same time the team recognized that they needed to move to a central location. The team decided to relocate all of its employees to Raleigh, N.C.
By September 1998 everyone was together or had a travel plan. Work started to come together rapidly on the add-on project. Steve Polge had laid the groundwork for several new game types, including Capture the Flag and Domination. The level designers had five or six good maps ready for testing. Throughout sporadic but intense meetings, the team agreed to focus the add-on entirely on improving the multiplayer aspect of the game with new features and better net code.
A close-up shot of the Black Thunder skin on Shane Caudle's Male1 model. This was one of the first new skins developed for Unreal Tournament.
The amount of content grew and we soon realized we had a much larger project on our hands than we had originally thought. In November, after meetings with our publisher GT Interactive, Mark Rein suggested we turn the add-on into a separate game. Initially, the team opposed the idea. We wanted to finish the project quickly and move on to something fresh. The promise of a much higher profit potential, coupled with our recognition of the state of the project finally led us to agree with GT. In December, the name Unreal: Tournament Edition was chosen, with "Edition" subsequently dropped from the title.
A Game Takes Shape
Epic's internal structure is extremely liberal, probably the most liberal in the entire gaming industry. Programmers work on the projects they want to work on, with major features being assigned to whoever steps forward to take on the task. Artists work with level designers but are given significant design freedom. Level designers work on the kinds of maps they think would be cool. This design philosophy pervaded Unreal Tournament's development.
In December, I downloaded a sample of a new Unreal mod under development by an Australian named Jack Porter. The mod, UBrowser, was a server browser using a Windows-like GUI. It was impressive, so I showed it to James Schmalz, lead designer at Digital Extremes, who said, "We need that, we need to hire this guy." A few weeks later Jack was a part of the team, expanding his UWindow GUI and reworking Unreal Tournament's menus to use the system. Jack fit into the team perfectly, bringing a complete solution for the interface and menus as well as his own independent programming initiative.
Weekly meetings infused order into our chaotic corporate structure. Everyone would debate and yell about what features were cool and what features sucked. The assignment of major features was largely automatic. Tim Sweeney worked on improving net code and engine fixes. Steve Polge wrote the original AI code and focused on adding player orders and other improvements (in addition to filling out the new game types). Jack had the windowing system and a lot of menus to work on. Programmer Erik de Neve was in Europe putting together level-of-detail code as well as experimenting with next-generation technology. I worked on the single-player game, game-play features, scoreboards, HUDs, special level actors, tutorials, and wrote a lot of the game's story and character background content.
The best features were added entirely by the initiative of individuals. Level designer Cedric "Inoxx" Fiorentino designed CTF-Face, an extremely popular Capture the Flag map. I added the Multi-Kill system after a short discussion with lead designer Cliff Bleszinski sparked the idea, and Jack implemented decals shortly before we shipped. It was this individual creativity that ultimately bound the team together. Each new feature infused everyone with the enthusiasm to add more.
Unreal Tournament's deathmatch maps were not
constrained to any one particular theme or timeframe.
Cliff Bleszinski's DM-Barricade, shown above, is a
castle floating above a storm, while Pancho Eekels'
DM-Galleon is a massive ship sailing the ocean
Once the first batch of new player models, weapon models, and maps was completed we realized we had a game quite different from Unreal. Feedback from the Unreal deathmatch community (including the highly vocal Quake community's complaints) also drove our designs. Subtle alterations to player movement and control changed the feel of the game completely. Some changes in game play - such as whether to enable weapon-stay in single player - were controversial, so we held polls on popular Unreal message boards.
Throughout the spring and summer of 1999, Epic was pursuing contract renegotiations with GT Interactive. Everyone believed the game could ship at any time, so development became stop-and-go. We would be in a code lockdown one week and adding major new features the next. The result of this jarring development cycle was good and bad. The periods of code lockdown allowed us more time to play-test and fix bugs, which contributed greatly to the game's overall polish. On the other hand, it prevented us from adding many features that would have otherwise been included and it was detrimental to the morale of the team. We liked working on Unreal Tournament, but it still felt like old technology to us. The world had seen the Unreal engine; we were ready to move on.
New Code, New Features
As it turned out, though, we had a lot of time to enhance the engine. Unreal was before its time and a lot of the content and code was rushed by the need to ship. With Unreal Tournament, the team had a lot of time to use previously unexplored engine features. Erik de Neve's level-of-detail code ended up really speeding the game up, giving us room for beefier characters and more map decorations.
Early on we experimented with using 16 256¥256 textures per player, but opted for three or four 256¥256 pieces out of memory considerations. This quadrupled the detail available to our skin artists for the player models. Reserving one of the 256¥256 textures for the head alone allowed us to mix and match body skins with heads, yielding a massive amount of customization with only a small amount of work. Another one of the 256¥256 textures was reserved for team color bits, so that a player skin could encompass all five possible team colors (none, red, blue, yellow, green) without too much memory use.
Level design didn't stand still either. Changing from single-player to deathmatch-oriented design was refreshing for the designers, but not without its unique challenges. One issue was the task of balancing the number of "hardcore" maps with "theme" maps. A hardcore map focuses entirely on layout and game play, while the overall style of the map comes second. Theme maps, on the other hand, focus on a unifying idea or look and build from that. For example, the Koos Galleon, designed by Pancho Eekels of Digital Extremes, is a large sailing ship. It's a very beautiful level, but focuses on the theme of being a ship more than being a deathmatch map.
Unreal Tournament used from three to four 256x256 textures per model. This allowed us to focus a lot of detail in the head and face area. Within the game a player can choose a skin and then swap through several different faces. This means players on a team can wear identical armor and clothing but have unique faces.
The Unreal Tournament team decided that mixing the two styles was the best approach. While most magazine reviews have expressed frustration at the theme-oriented maps, we didn't want to appeal to only the hardcore crowd. Including maps that were designed for their look and feel increases the game's interest to average players who aren't skilled enough at the game to benefit from hardcore designs. Realism through textures and architecture is one of the Unreal engine's strengths and it was critical that we exploit that strength. Ultimately, we shipped Unreal Tournament with somewhere around 45 to 50 maps, offering more than enough variety and replay value for everyone.
Another task we faced was choosing which of Unreal's weapons to keep and which to ditch. Unreal Tournament has two firing modes which makes designing a weapon like designing two weapons in one. Unreal's stinger and dispersion pistol were not needed in Unreal Tournament. Those weapons were good in Unreal, because a player needed to start with simple, weak weapons and build up. In Unreal Tournament, all the weapons had to be equally effective and carefully balanced. A player good with the minigun needed to be lethal with it. A player good with the pulse gun needed to be lethal with it. Eventually we settled on the current load-out, but made quite a few game-play changes to the weapons that stayed from Unreal. Each weapon was also given a much more beefed-up look and sound.
An interesting little anecdote: GT started doing promotion for Unreal Tournament before the new rocket launcher was finished. They produced a lot of marketing material with old screenshots showing the eightball launcher from Unreal. If you look at the gold trophy used in the print ads, you'll see the characters at the top are holding eightballs, a weapon that isn't in Unreal Tournament.
In the End, It All Worked Out
While the talents and devotion of individual team members created the content, the overall team spirit tied it together. Unreal Tournament's design process was often reckless, but the game that resulted is nevertheless very polished and a hell of a lot of fun. The deathmatch-focused first-person shooter doesn't need a story, dialogue, or scripted sequences, which are all features that more or less require an organized design. Had we applied our hodgepodge design approach to a more focused genre, we probably would not have had such a successful game. Unreal Tournament should not be seen as a lesson in how to design a game, but as a lesson on how to organize a small team of developers.
Page 1 of 4