Unreal Coop is an alternate gametype that some SinglePlayer maps can take advantage of. (Technically, all true SinglePlayer maps can be played in Coop, but this is highly inadvisable for a number of them.)
If you're reading this, you most likely have an idea for a SP map or pack that you want to make more compatible with Coop gaming. Perhaps you even have a completed map or pack that you want to modify for Coop gameplay. If not, then you still have a definite interest in the Coop gametype, and this is still a good article for you to read. The information that I try to present here can be used to make normal SP maps play well in Coop, and perhaps even make decent Coop maps into great ones.
Obviously, the most important thing to do to make a map playable in coop is to include multiple PlayerStarts at the beginning of the map. Having your players telefrag each other as they start the level is extremely bad form. In many cases, this might require getting creative so that there are actually places to put PlayerStarts.
For example: in Outpost 3J, a map that comes with Unreal 1, the player would normally start at the beginning of a long tunnel of water that he had to swim through to enter the base. However, the storyline of the map is set up so that the player easily finds a SCUBA Gear pickup in the previous level. In coop, this piece of the storyline cannot be assumed. There is only one set of SCUBA Gear in the previous level, which means that every other player would drown, including players who join the server while this level is running. To fix this, all the PlayerStarts were put in the first room, at the point where a player on his own would be surfacing from the water tunnel to enter the base.
Remember to take advantage of the Filter properties of various Actors that you place in your level. Though these properties are primarily used to determine which difficulty levels an Actor is present or absent in, there are additional variables to prevent Actors from showing up in either SinglePlayer or network games. These variables are bSinglePlayer , bNet , and bNetSpecial.
For example, you could have that unbalancing Flak Cannon near the beginning of your level be missing when the level is played online, or you could create an extra team of Krall that will only be there when the level is played online. Also, remember that CreatureFactories can be set up to produce an additional number of creatures specifically for Coop games. The variable is AddedCoopCapacity . This is yet another way for you to get creative when you build your level.
4. Scripted Scenes
Do you remember those high-intensity areas of some of the Unreal levels, where a door would slam shut behind you when you entered a room and you would have to face some major enemy or group of enemies? You shouldn't abandon these ideas if you're planning on making your maps Coop-compatible. On the other hand, you'll certainly need to tweak them a bit so that they still work in Coop. This is most easily done by making an alternate entrance into the combat area. Seal off the area with a Mover, and make the mover so that it only works in online play. Filtering Dispatchers and Triggers is usually the best way of doing this. (Reread the previous topic if this confuses you.) Players arriving later should be able to get into the combat area through this route, but no player should be able to use it to escape from the combat area.
For a few examples: the three most well-known instances of this mechanic in the Unreal 1 maps are for the Titan in the Dark Arena, the Titan in the Temple of Vandora, and the room in the Cellars at Dasa Pass where you have to kill all the Krall before the doors will open again.
5. Advance Starts
For those of you who are familiar with the Assault gametype in Unreal Tournament, you might want to take a cue from this style of mapping if your level becomes a bit too large. In Assault, when certain objectives are accomplished by the attacking team, a new set of PlayerStarts is turned on while the original ones are turned off. The same principle holds true for Coop. Nobody likes having to spend five minutes running through the empty parts of a level just to get back up to where the action is taking place.
Erratum: I have been informed that this does not seem to work in Coop for Unreal 1, for the simple reason that PlayerStarts did not have bEnabled variables in Unreal 1. It won't work in Coop with OldSkool Amp'd either, because OldSkool Amp'd uses modified versions of the gametypes found in Unreal 1. However, this is a possible technique to use in the version of Coop that comes with Operation: Na Pali.
Here's an example of what to avoid: In the Sunspire, if a player dies after getting almost all the way up the tower, then the player respawns back at the gate, and they have to run all the way over the land bridge, back to the door of the Sunspire itself, and then they have to work their way back up through all the places where they had originally been. Most players find this to be a major turnoff, especially when no one else is very close to completing the level. This is a common problem in a number of large coop-compatible maps.
6. The Finale
Last but not least, do something for the end of your maps that makes them a bit more coop-compatible. One problem with the stock Unreal maps is that you can't do anything else with them after you get to the map with the final cutscene. The server becomes entirely useless because it's just running a cutscene map where nothing is happening. What I would suggest is to filter Teleporters for standalone play and online play. The Teleporter at the end of your last map for the SinglePlayer gametype will lead to a cutscene or whatever other dynamic ending you have planned. On the other hand, the Teleporter at this location for the Coop gametype might lead back to the very first map in your pack.
This may look like a lot of information to go through, but most of it is just common sense that's been given a bit of contemplation. Just as with any mapping project, you have the final word as to what stays in your map and what gets the axe. You know that you want people to enjoy playing your SinglePlayer maps, and you don't want them to just play your maps once and then never want to look at them again. Making your maps playable in Coop is a definite plus when it comes to making a SinglePlayer map that can be enjoyed over and over again.
This document was created to serve as a guide for singleplayer mappers.
Any comments on the text above that you want to share? Sent them to:
Techno JF (email@example.com).