What is Tactical-Ops?
Tactical-Ops began as a modification for the popular Unreal Tournament game. Back then, in 2000, the modification was called S.W.A.T. and was acquiring a solid user base. Because of the popularity of the mod, the team was approached by the creators of Unreal Tournament to have the mod included on the Unreal Tournament: Game of the Year Edition disc. This spawned significant improvements to the quality of S.W.A.T. and also prompted the name change to Tactical-Ops for trademark reasons. Unfortunately, the mod could not be included on the GOTY edition of UT due to contractual problems.
I started getting involved with Tactical-Ops in the summer of 2000. Back then I was trying to learn how to create maps for Unreal Tournament and had decided to create a replica of my university campus ingame. After playing the S.W.A.T. beta release, I decided to convert the map I was working on to S.W.A.T. After dozens and dozens of versions, I finalized the layout and gameplay of the map and TO-ExcessFlood was born. Though the map was never used in any actual release, it was eventually included in the first Tactical-Ops 'map pack' released to the community.
While the S.W.A.T. team was working on the GOTY version of their mod, I started making small changes to the code. I added some little things like 'realistic' throwing knifes (e.g. knives that would sometimes stick to the wall and sometimes bounce back). I also contributed a few bug fixes here and there.
In the last months of 2001, Atari, formerly known as Infogrames, approached the Tactical-Ops team to propose publishing our game. Along with salary for the developers, they would provide publicity and internal testing. To enter a binding contract with Atari, our project leader -- Laurent Delayen -- founded the Kamehan Studios company. Though the company was based in Paris, the team members were scattered thorough the world: France, Canada, Germany... In order to be published, the team needed to increase the overall quality of the mod as well as provide additional content. Modelers created new player and weapon models while mappers touched up existing maps and started development on new ones.
It's at that time that one of the beta testers, Gerhard Weihrauch, asked me if I wanted to create a map with him. Though I was reticent at first of creating a map with someone else, I eventually gave in because my classes prevented me from giving as much time as needed to the project. Over the 2002 holidays, we discussed various map concepts. To the left is a picture of one of our preliminary sketches. At first the map was going to be a standard 'place C4 charges' map, but we figured that something a little more complex would be more entertaining for the player.
The objective that was decided upon was to have the attacking team try to seal a prototype of a spying aircraft. To do so, the players have to activate three different controls in the map. At the same time, the other team would try to prevent them from doing so. Since the attacking team start so far from the base, the defending team would have time to position themselves to ambush the attackers.
Conception of the map was done using the UnrealEd editing software. In this program, one simply adds and subtracts geometric shapes to create the rooms, doors, windows and other objects with which the player will interact ingame. At first, I thought working together with someone else on something like a map would be quasi impossible: after all a map is a single asset: unlike with code, two mappers cannot work on the same map at the same time. The time difference between Gerhard's home and mine worked to our advantage here: Gerhard was able to work on the map during the evening after which he would send me his version of the map. Because of the 6 hours time difference, I would also be able to work during evenings.
The last thing that was needed for the map was a good name. Because of the snowy mountains present in the map, one of my friends suggested the name Avalanche. We took it without hesitation. To increase the quality of the map, one of the skinners, Rich Eastwood, retextured the mountainous area of the map. Once completed, the map had to go through Atari Quality Assurance. Once in a while, testers would post a bug report about the map, though the reports were mostly about little things like texture misalignments and collision problems.
A few days before the deadline for the alpha version of the game, we realized that one of the advertised features of the game was not available. This feature was the single player campaign. Though the game featured a practice mode where the player could play against computer-controlled opponents, this was hardly a campaign. I was assigned the task of designing a single player campaign that could build up from the code we already had and reuse a maximum of our assets. After a couple of long nights, I had a prototype ready. The mode would pit the player against computer-controlled opponents, again, but the player would have a specific objective to accomplish: free hostages, protect a VIP, etc. If the player fails, he would have to restart the mission from scratch as opposed to simply respawning as with the practice mode. However, Infogrames felt that it was too risky to implement something as big as a single player campaign this late in the development cycle. Though most of the developed code stayed in the game, it was never used.
After the alpha version was ready began the extensive testing. Testing was done on two sides: our own testers would give releases a quick test while Infogrames testers would make more thorough tests as well as regression tests. Though I did little actual testing, aside from participating to the occasional team stress test, I fixed problems documented in the Infogrames database when no one else was available.
On April 24th 2002, Tactical-Ops was available in stores in the US and in Canada. International release of the game would follow in the coming month.
Of course no released game comes out without problems. Soon after release, a patch was made to fix various problems found after the game had gone gold. Though I did not contribute to the initial patches (maps seldom require fixes), I did some fixing in the last patch (v3.4) as well as added a few features.
After the game was released, I began toying with the idea of completing the single player campaign. The idea was to release it as as part of a later patch to the game. However, that idea was quickly dismissed as this would required testing by Infogrames as well as translation into the other four languages in which Tactical-Ops is distributed.
I quickly assembled a small team with which I could create the single player campaign. Gerhald, whom I worked on TO-Avalanche with, would be doing the actual missions in the game. A friend of mine, Erick Duchesneau, would be writing the story. I would take care of the design and conception of the program.
One of the problems encountered during the project was with the current game code. While I had complete access to the Tactical-Ops code, I could not change the core functionalities of the game as this would require modification to the game core. To work around this, I had to use hacks over hacks everywhere in the code.
Since Gerhald would be making the missions, I needed to create some sort of scripting system. To create the missions, one simply had to edit a .ini file. That file defined the maps used, the text used in the mission, the positions and names of the enemies, etc. We were planning on reusing the original Tactical-Ops. However, we often needed additional actors to be present in the maps that were not originally there. In that case I would create a new class that would modify the map once it was loaded. This allowed, for example, the player to start the mission with a specific weapon that is not usually available in that particular map.
Since Tactical-Ops' maps are so diverse, Erick wrote a story that brought the player through various parts of the world. To give the game a more realistic feeling, I wrote a Perl script that would automatically generate names for the player's team mates and enemies based on the country in which the player was. To do this I simply used a database of first and last names obtained on the internet and randomly paired first and last names together. The result was realistic names such as, for Switzerland, 'Kleanthes Koniaris' and 'Brian D. Carlstrom'.
To increase the replayability of the mod, I created four difficulty settings (although the settings did little more than increase or decrease the amount of health that the enemies had). In addition to this, the time taken by the player to complete each mission was recorded. Depending on how fast the player finished, different medals were awarded. The player could also try to beat the 'TO Team Time', which is the best time recorded by the testers when testing the mod. Finally, various cheat codes could be unlocked by obtaining gold medals on specific missions.
When released, the mod was a huge success. Players would post their mission time records in the forums and inquire as to how specific missions were to be solved. One thing we realized however is how 'bad' the 'TO Team Times' actually were when compared to records of the community pl ayers...
Tactical-Ops: Single Player Story. This is the actual text used ingame.
Tactical-Ops: Single Player Mission Definition documentation. This document was used by Gerhald and explained how to write missions in the .ini configuration file.
Tactical-Ops: Single Player source code. This is the actual source code for the Single Player campaign, though you will not be able to compile it without the original Tactical-Ops code.
Tactical-Ops: Single Player mission configuration file. This is the file that contains all the scripted missions.
Tactical-Ops: Single Player release file. This file contains the full release of the single player mod for Tactical-Ops v3.4.