The content of this thread was copied from out internal forum. It might not be up-to-date anymore, but should give you an overview of what to do.
Also see UnrealWiki: Mapping for Jailbreak (UT3)
_________________________________________________
Before you start diving into the editor, get the latest version of UT3 Jailbreak first. You'll be needing actors and Kismet objects from the Jailbreak.u, JailbreakContent.u and maybe JailbreakTitanContent.u packages to set up Jailbreak-specific things in your map. To load them automatically, open your UTEditor.ini (MyDocs\MyGames\UT3\UTGame\Config), find the [ModPackages] section and add the following two lines to it:
Now you can open the editor and map right away. 
See Spoondog's Guide to Mapping for Jailbreak for general considerations about Jailbreak maps, but keep in mind that it was written for JB2004.
Starting a new map
As always in UT3 it's probably better to start out additive, i.e. with an empty world, because it saves you a lot of time when rebuilding lighting. If your Jailbreak map is going to be indoor, just add a cube of about the size your map will be and start subtracting from that.
The first thing you should probably do when you start a new Jailbreak map is setting up the map info:
Jail setup
Jails are defined using volumes and Actor >> Info >> JBInfoJail. Each JBInfoJail actor represents a single jail, which can consist of several jail volumes and jail exits. To associate volumes with a jail, either add the volume names to the JBInfoJail's Setup -> JailVolumes array or associate them via the Jail Volumes variable link of the Jail Status Kismet event. Using JBVolumeJail as volume type is recommended because it automatically sets up restrictions that prevent players from getting out of closed jails too easily. Additionally it has a distinct color and applies the location name "Jail" to that area.
Jails are generally not "owned" by any team. To specify which team will be put into a jail, use standard UTTeamPlayerStarts and set their TeamNumber accordingly. It is important that the player starts are contained within the jail volumes, otherwise they won't be regarded as jail spawn points. For shared jails you can also use PlayerStart actors, but if you combine them with UTTeamPlayerStarts, the PlayerStarts will have a lower priority.
There's a bReleasesBothTeams property that tells whether opening this jail will allow both teams' prisoners to escape. Leave it enabled unless you have special means to keep players of the other team inside this jail during a release.
You can use PrisonerLimit and JailPriority to control prisoner distribution.
Release setup
Jailbreak provides three release switch actors under Actor >> NavigationPoint >> GameObjective >> UTGameObjective >> JBObjectiveRelease. They only differ by their initial team association. Switch color generally refers to the defending team, just like flags in CTF and nodes in Warfare. If your map contains vehicles or allows the hoverboard, remember to define vehicle parking spots for the switches so bots know they need to get out and activate the release on foot.
Every release switch can activate one or more jail exits. Generally the release switch has a list of jails to open. This list can either be filled by specifying JailTags in the JBObjectiveRelease properties or by connecting the various Jail Status events to the switch's Release event in Kismet.
The actual release should be controlled through the JBInfoJail's Jail Status Kismet event. The output links of the switch's Release event are for the entire release, i.e. the release ended when the last jail closed. They should not be used to control jail doors.
Jail exit opening should be done from the Jail Status output link "Activated" - start your Matinee sequences etc. from here. The jail needs to know when the door is open/closed, this is determined through a Jail Door navigation point, usually a DoorMarker. This DoorMarker should be set up as bInitiallyClosed and bBlockedWhenClosed. Its MyDoor must be set to the InterpActor used for blocking the jail. Remember to set the InterpActor's StopOnEncroach to False, otherwise prisoners can block the jail door and keep it open forever without the game noticing!
Optionally a JBJumpPad or one of the JBTeleporter actors can be used as jail door instead. You can use the built-in Toggle action to control their status.
You don't have to use the regular touch-activated release mechanism or even its default appearance. Release switches can also be activated via the Kismet action Activate Release. You don't have to provide the Releaser variable, but it is really recommended you do anyway to prevent Llamas and Titans from operating the release mechanism.
You might want to adjust the UTGameObjective->BaseRadius and VoiceMessage->NearBaseRadius/MidFieldHighZOffset/MidFieldLowZOffset values to match your base setup. These values control what bots will say as location info e.g. about enemy vehicles. Within the BaseRadius they say "in the red/blue base", within the NearBaseRadius they say "near the red/blue base". Outside the NearBaseRadius they say "midfield low" if below MidFieldLowZOffset, "midfield high" above MidFieldHighZOffset and just "midfield" if between the high and low offsets. The Z offsets are relative to the nearest switch, so keep that in mind if your switches are at different heights.
Execution setup
Executions are entirely scripted through Kismet. Use the Execution Kismet event and start from there. Generally the execution lasts until the last player has died. If you need additional time after all players are dead, add an End of Execution action. Just keep in mind that if you use End of Execution, you have to use it for all possible ends of all possible executions!
Be creative here. The only requirement is that all prisoners have to die in some way. If your execution script doesn't kill them, a fallback execution kicks in after the time specified in the map info's ExecutionFallbackDelay.
Note that the execution camera scripting is slightly different than in Warfare. You can use Matinee to move the camera actor around, but don't force players to view through that camera actor! Instead use the Set execution camera action, so prisoners experience the execution from their first person view and only switch to the execution camera if they die early.
Arena setup
Arenas are also entirely defined in Kismet, via the Arena Fight event. Arena fights are no longer limited to 1vs1 last man standing, you can also have more players per team or just one player or team having to complete a special challenge to win. For example, it's possible to script a Scorpion race and the first player to reach the finish line has won the arena fight.
Arena fights are started using the Schedule arena fight action. Before that, players can opt-in and opt-out with the Request arena fight and Ignore for arena fight actions. to end a fight on a different condition than elimination of all player of one team, use the End of arena fight action.
Escape route setup
Escape routes are set up like regular jails, just with the JBInfoEscapeRoute actor instead of JBInfoJail. If the escape route needs to be activated somehow, you can use a release switch actor with bPrimaryRelease=False to activate it. Escape routes can be "chained" if there's more than one thing the escapee needs help with. To help the game understand how escape routes are set up, use the EscapeRouteTags in JBInfoJail and JBInfoEscapeRoute to specify how to get closer to freedom. Upon reaching freedom, every player who helped by either activating an alternate escape switch or providing a human ladder will be awarded for assisting.
Location names
Unlike stock UT3 game types, Jailbreak encourages you to specify location names for any area of your map. You can to that with any volumes you need to use anyway, or by placing UTArenaNamingVolumes. In any case, the Location property group contains the LocationName to specify a name and the LocationPriority to resolve conflicts with overlapping volumes. JB-Suspense provides an example of how to use overlapping location naming volumes.
Also see UnrealWiki: Mapping for Jailbreak (UT3)
_________________________________________________
Before you start diving into the editor, get the latest version of UT3 Jailbreak first. You'll be needing actors and Kismet objects from the Jailbreak.u, JailbreakContent.u and maybe JailbreakTitanContent.u packages to set up Jailbreak-specific things in your map. To load them automatically, open your UTEditor.ini (MyDocs\MyGames\UT3\UTGame\Config), find the [ModPackages] section and add the following two lines to it:
Code:
ModPackages=Jailbreak
ModPackages=JailbreakContent
ModPackages=JailbreakTitanContent
See Spoondog's Guide to Mapping for Jailbreak for general considerations about Jailbreak maps, but keep in mind that it was written for JB2004.
Starting a new map
As always in UT3 it's probably better to start out additive, i.e. with an empty world, because it saves you a lot of time when rebuilding lighting. If your Jailbreak map is going to be indoor, just add a cube of about the size your map will be and start subtracting from that.
The first thing you should probably do when you start a new Jailbreak map is setting up the map info:
- Open View -> World Properties.
- Open the group WorldInfo, find the property MyMapInfo and click the blue triangle button.
- Select JBMapInfo from the pop-up menu. If it isn't listed, make sure you have loaded the Jailbreak package. (You can do so from the Actor Classes browser.)
Jail setup
Jails are defined using volumes and Actor >> Info >> JBInfoJail. Each JBInfoJail actor represents a single jail, which can consist of several jail volumes and jail exits. To associate volumes with a jail, either add the volume names to the JBInfoJail's Setup -> JailVolumes array or associate them via the Jail Volumes variable link of the Jail Status Kismet event. Using JBVolumeJail as volume type is recommended because it automatically sets up restrictions that prevent players from getting out of closed jails too easily. Additionally it has a distinct color and applies the location name "Jail" to that area.
Jails are generally not "owned" by any team. To specify which team will be put into a jail, use standard UTTeamPlayerStarts and set their TeamNumber accordingly. It is important that the player starts are contained within the jail volumes, otherwise they won't be regarded as jail spawn points. For shared jails you can also use PlayerStart actors, but if you combine them with UTTeamPlayerStarts, the PlayerStarts will have a lower priority.
There's a bReleasesBothTeams property that tells whether opening this jail will allow both teams' prisoners to escape. Leave it enabled unless you have special means to keep players of the other team inside this jail during a release.
You can use PrisonerLimit and JailPriority to control prisoner distribution.
Release setup
Jailbreak provides three release switch actors under Actor >> NavigationPoint >> GameObjective >> UTGameObjective >> JBObjectiveRelease. They only differ by their initial team association. Switch color generally refers to the defending team, just like flags in CTF and nodes in Warfare. If your map contains vehicles or allows the hoverboard, remember to define vehicle parking spots for the switches so bots know they need to get out and activate the release on foot.
Every release switch can activate one or more jail exits. Generally the release switch has a list of jails to open. This list can either be filled by specifying JailTags in the JBObjectiveRelease properties or by connecting the various Jail Status events to the switch's Release event in Kismet.
The actual release should be controlled through the JBInfoJail's Jail Status Kismet event. The output links of the switch's Release event are for the entire release, i.e. the release ended when the last jail closed. They should not be used to control jail doors.
Jail exit opening should be done from the Jail Status output link "Activated" - start your Matinee sequences etc. from here. The jail needs to know when the door is open/closed, this is determined through a Jail Door navigation point, usually a DoorMarker. This DoorMarker should be set up as bInitiallyClosed and bBlockedWhenClosed. Its MyDoor must be set to the InterpActor used for blocking the jail. Remember to set the InterpActor's StopOnEncroach to False, otherwise prisoners can block the jail door and keep it open forever without the game noticing!
Optionally a JBJumpPad or one of the JBTeleporter actors can be used as jail door instead. You can use the built-in Toggle action to control their status.
You don't have to use the regular touch-activated release mechanism or even its default appearance. Release switches can also be activated via the Kismet action Activate Release. You don't have to provide the Releaser variable, but it is really recommended you do anyway to prevent Llamas and Titans from operating the release mechanism.
You might want to adjust the UTGameObjective->BaseRadius and VoiceMessage->NearBaseRadius/MidFieldHighZOffset/MidFieldLowZOffset values to match your base setup. These values control what bots will say as location info e.g. about enemy vehicles. Within the BaseRadius they say "in the red/blue base", within the NearBaseRadius they say "near the red/blue base". Outside the NearBaseRadius they say "midfield low" if below MidFieldLowZOffset, "midfield high" above MidFieldHighZOffset and just "midfield" if between the high and low offsets. The Z offsets are relative to the nearest switch, so keep that in mind if your switches are at different heights.
Execution setup
Executions are entirely scripted through Kismet. Use the Execution Kismet event and start from there. Generally the execution lasts until the last player has died. If you need additional time after all players are dead, add an End of Execution action. Just keep in mind that if you use End of Execution, you have to use it for all possible ends of all possible executions!
Be creative here. The only requirement is that all prisoners have to die in some way. If your execution script doesn't kill them, a fallback execution kicks in after the time specified in the map info's ExecutionFallbackDelay.
Note that the execution camera scripting is slightly different than in Warfare. You can use Matinee to move the camera actor around, but don't force players to view through that camera actor! Instead use the Set execution camera action, so prisoners experience the execution from their first person view and only switch to the execution camera if they die early.
Arena setup
Arenas are also entirely defined in Kismet, via the Arena Fight event. Arena fights are no longer limited to 1vs1 last man standing, you can also have more players per team or just one player or team having to complete a special challenge to win. For example, it's possible to script a Scorpion race and the first player to reach the finish line has won the arena fight.
Arena fights are started using the Schedule arena fight action. Before that, players can opt-in and opt-out with the Request arena fight and Ignore for arena fight actions. to end a fight on a different condition than elimination of all player of one team, use the End of arena fight action.
Escape route setup
Escape routes are set up like regular jails, just with the JBInfoEscapeRoute actor instead of JBInfoJail. If the escape route needs to be activated somehow, you can use a release switch actor with bPrimaryRelease=False to activate it. Escape routes can be "chained" if there's more than one thing the escapee needs help with. To help the game understand how escape routes are set up, use the EscapeRouteTags in JBInfoJail and JBInfoEscapeRoute to specify how to get closer to freedom. Upon reaching freedom, every player who helped by either activating an alternate escape switch or providing a human ladder will be awarded for assisting.
Location names
Unlike stock UT3 game types, Jailbreak encourages you to specify location names for any area of your map. You can to that with any volumes you need to use anyway, or by placing UTArenaNamingVolumes. In any case, the Location property group contains the LocationName to specify a name and the LocationPriority to resolve conflicts with overlapping volumes. JB-Suspense provides an example of how to use overlapping location naming volumes.
Last edited: