[Guide] Basics of UT3 Jailbreak mapping

  • Two Factor Authentication is now available on BeyondUnreal Forums. To configure it, visit your Profile and look for the "Two Step Verification" option on the left side. We can send codes via email (may be slower) or you can set up any TOTP Authenticator app on your phone (Authy, Google Authenticator, etc) to deliver codes. It is highly recommended that you configure this to keep your account safe.

Wormbo

Administrator
Staff member
Jun 4, 2001
5,913
36
48
Germany
www.koehler-homepage.de
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:
Code:
ModPackages=Jailbreak
ModPackages=JailbreakContent
ModPackages=JailbreakTitanContent
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:
  1. Open View -> World Properties.
  2. Open the group WorldInfo, find the property MyMapInfo and click the blue triangle button.
  3. 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:

Wormbo

Administrator
Staff member
Jun 4, 2001
5,913
36
48
Germany
www.koehler-homepage.de
Overview of Jailbreak-specific Kismet events

Arena Fight
Defines the parameters of an arena. Every event instance defines its own arena. The following variable links are available:
  • Arena start spots (in, required) - a list of PlayerStarts used to spawn arena combatants. Changes at runtime will have no effect.
  • Winner start spots, Loser start spots (in) - a list of NavigationPoints for respawning winners and losers of an arena fight. Changes at runtime will have no effect.
  • Arena goals (in) - a list of UTGameObjectives for challenge arenas. Changes at runtime will have no effect. This feature is not yet properly implemented, but the idea is to use objectives to tell bots how to win a challenge (i.e. non-deathmatch) arena.
  • Players (out) - a list of players scheduled for or participating in the arena fight. Filled for every event.
  • Winners (out) - a list of players that have won the arena fight. Filled only for the Ended event.
  • Arena Fight (out) - an actual arena fight instance. You can use this value in the various arena-related Kismet actions. Filled for every event.
This event has the following output links:
  • Failed - Triggers when an attempt to schedule a fight in this arena has failed due to various reasons, e.g. not enough players available.
  • Scheduled - Triggers when a fight was successfully scheduled, i.e. players have been selected to fight and will see the arena announcement.
  • Canceled - Triggers when a scheduled fight was canceled, e.g. because one of the participants left the game or is no longer available for an arena fight for other reasons, e.g. due to being released.
  • Started - Triggers when the fight starts. Combatants have spawned in the arena already when this happens.
  • Ended - Triggers when the arena fight has ended regularly, either with a winner or tied due to players killing each other. Any winners will respawn at an arena winner startspot or in freedom, if no specific start spots are available.
  • Aborted - Triggers when the arena fight ends without a decision, e.g. when the time runs out, or also when a mutator or Kismet action might decide to abort the fight early without any winners.

Execution
Entry point for execution sequences. There can be as many Execution events as you want, all of them will activate simultaneously.
Variables:
  • Capturing Player (out) - the player who is responsible for capturing the last player on the captured team. Could be empty or even a player of the captured team, if it was a suicide or team kill.
  • Captured Team (out) - the team that was captured. 0 for red, 1 for blue.
  • Captured Player (out) - the last player on the captured team who was sent to jail.
Outputs:
  • Start execution - triggered when the execution sequence starts. Use this to initiate the script that eventually kills the captured team.
  • All prisoners dead - triggered when all players on the captured team are dead. The execution will not end before this event is fired, but may actually end much later. Use the Kismet events Level Reset or Game Ended to find the actual end of the execution.

Jail Status
Must be associated with a JBInfoJail or JBInfoEscape actor and controls the way prisoners are released from the associated jail. This event is vital for your map. If set up incorrectly, basic game mechanics like capturing teams might stop working! Every JBInfoJail and JBInfoEscape actor should be associated with at least one Jail Status event, but there can be more than one Jail Status event per jail/escape info. Jail Status events can be restricted to a specific team by setting the ReleasingTeam property to 0 (red) or 1 (blue).
Variables:
  • Jail Volumes (in) - a list of volumes defining the jail area. A jail's actual area is defined by the combination of all volumes defined in all Jail Status events for that jail and the volumes defined in the jail info's own JailVolumes property.
  • Jail Doors (in, required) - a list of initially blocked NavigationPoints defining the exit locations of the associated jail. If a ReleasingTeam was specified, the jail doors are only available to that team. It is absolutely required that you specify at least one jail door, so the jail knows whether it's currently open or closed. Any blockable navpoint will work, but commonly only DoorMarkers, JBJumpPads and the various JBTeleporter versions are used.
  • Releaser (out) - the player who activated the release. Commonly this is the player who activated the corresponding release switch.
  • Release Switch (out) - the release switch used to open this jail. If there is more than one switch for opening the jail, this variable will tell you which switch was used.
Events:
  • Activated - triggered when the jail release was activated. Use this to open the jail.
  • Opened - triggered when at least one jail door opened, i.e. became unblocked. Useful for slow-moving doors.
  • Closed - triggered when the all jail doors are closed again. Signals the end of the release for this jail.

Release
Must be associated with a JBObjectiveRelease actor. Can be used to control events based on the release switch state. Actual release mechanisms should be controlled via the Jail Status event instead.
Variables:
  • Releasing Team (out) - the team who activated the release switch. (0 = red, 1 = blue) Usually matches the Releaser's team, but is also available if a script-activated release doesn't specify a releasing player.
  • Releaser (out) - the player who activated the release switch. May be empty for script-activated releases.
  • Jails (event) - link this to Jail Status events of jails opened by te associated release switch. Alternatively you can link up jails via the JBJailInfo's Object->Tag property and the JBObjectiveRelase->JailTags list.
Events:
  • Release activated - triggered when the release switch was activated. Don't activate actual release mechanisms here, that's the Jail Status event's job.
  • Release ended - triggered when all jails opened by this release switch are closed again.
 

Wormbo

Administrator
Staff member
Jun 4, 2001
5,913
36
48
Germany
www.koehler-homepage.de
Overview of Jailbreak-specific Kismet actions

Activate Release
Activates a release switch. This action is used for non-standard release switches, e.g. for alternate escapes, where the switch isn't touch-activated.
Variables:
  • Release Switch (in) - the switch to activate.
  • Releaser (in) - the player who activates the release.
  • Released Team Num (in) - the team (0 = red, 1 = blue, -1 = any) to release.

Become Titan
Lets the specified players transform into a Titan or Behemoth.
Output:
  • Success - activates if at least one of the specified player transformed.
  • Failed - activates if none of the specified players transformed, or if no players were specified at all.

Count Players
Counts players in freedom, in jail and in arenas. The jailed and arena players can be further filtered by jail, arena or release switch. Optionally only players of a specific team are counted. Players only scheduled for an arena fight will still count as free or jailed, not as arena.
Variables:
  • Team Number (in) - the team to count players for. (0 = red, 1 = blue, -1 = any)
  • Release Switches (in) - if not empty, jailed players are only counted if they can be released via one of these release switches.
  • Jails (in) - if not empty, jailed players are only counted if they are in one of the jails represented by these JBInfoJail actors.
  • # Free (out) - returns the number of free players.
  • # Jailed (out) - returns the number of jailed players.
  • # Arena (out) - returns the number of arena players.
  • Arena Event (event) - if not empty, only arena players in one of these arenas are counted.

Do Melee Attack
Forces the specified players to perform a melee attack, if they are a Titan or Behemoth.

End Arena Fight
Ends an arena fight, usually with a winner. This is required for arena fights that don't automatically declare the "last team standing" the winner.
Variables:
  • Winners (in) - a list of players who are declared the winner of the arena fight. This can be empty or contain any arena players from either or both teams. If the property bFindAdditionalWinners is set, all surviving players whose team has at least one player in the winners list will be declared winners as well.
  • Arena fight (in) - the arena fight to end. You can get the arena fight instance via the Start Arena Fight action or the Arena Fight event.

End Execution
Defines the earliest end of an execution sequence. This can be used to prevent an execution sequence to end right when the last prisoner has died.
If no End Execution action is used, the execution will automatically end when all prisoners are dead. However, if at least one End Execution action exists, the game will wait for it to be activated and all prisoners to be dead. If your execution doesn't want to end, you probably have one of these in your script, but never activate it.

End Release
Not yet implemented, don't use!

Get match settings
Returns match settings, such as time limit and goal score, and transportation device settings for either the main area or a specific arena.
Variables:
  • Time limit (out) - the match time limit in minutes. 0 if no limit. Keep in mind that the game will go into overtime if both teams are tied.
  • Goal score (out) - the number of captures required to win the match. Remember that tied rounds will not count towards the goal score.
  • Translocator (out) - return whether the translocator is used in this map. If an arena is specified, translocator usage for that arena is returned instead.
  • Hoverboard (out) - return whether the hoverboard is used in this map. If an arena is specified, hoverboard usage for that arena is returned instead.
  • Arena (event) - link an Arena Fight event here to return Translocator and Hoverboard usage for that arena instead of the entire level.

Get prisoners
Returns a list of prisoners. Optionally only bots or non-bot player can be returned.
Variables:
  • Team Number (in) - restricts output to prisoners of a specific team. 0 = red, 1 = blue, -1 = both
  • Jails (in) - if not empty, restricts output to prisoners in the jails represented by these JBInfoJail actors.
  • Prisoners (out) - a object list that will be filled with the prisoner list.

Ignore for arena fight
(Un-)Ignores the players for arena combatant selection.
Inputs:
  • Ignore - starts ignoring the specified players.
  • Unignore - stops ignoring the specified players.

Pick one
Picks one item from an Object List variable.
Variables:
  • List (in/out) - the list to pick from. If the "Remove picked item" property is enabled, the list is returned without the picked item.
  • Pick (out) - the picked item from the list.

Request arena fight
Increases the selection priority of the specified players for an arena fight.
Inputs:
  • Request - request participating in an arena fight.
  • Withdraw - take back the arena fight request.
Variables:
  • Requester (in) - player(s) requesting to participate in an arena fight.
  • Arena Event (event) - link an Arena Fight event here to request participation in that particular arena. If no arena is specified, the request will affect the next relevant arena fight.

Respawn pickup
Respawns a pickup, ignoring any respawn delays. Use this e.g. to even the battle field in arena fights. This action will have no effect on pickups that are already available.

Set execution camera
Use this action to specify, which camera an execution is viewed through. It is strongly recommended to use this action at least once to set a valid camera to view the execution through, but you can change the camera on-the-fly during the execution as often as you want.

Set Owning Team
Sets the owning team for various Jailbreak-specific actors. Currently this is supported by JBObjectiveRelease, JBJumpPad, the various JBTeleporter classes and JBTurret. If bEnableTarget is set, the target actor will be enabled if it is currently disabled.
Variables:
  • Target (in) - the actor to change the team for.
  • New Team Num (in) - the new team for the actor. For turrets this is 0=red, 1=blue, 255=no team. For the navigation points this is 0=red, 1=blue, 2=neutral, 255=disabled.

Schedule arena fight
Sets up an arena fight.
Variables:
  • Team Number (in) - for one-team challenge arenas this specifies, which team will take on the challenge, with 0=red and 1=blue. For two-team arenas this should be -1.
  • Scheduled Arena Fight (out) - the new arena fight instance. Store this in a variable to refer to this specific arena fight later.
  • Arena Event (event) - the arena to schedule a fight in.
Outputs:
  • Failed - activated if the arena fight could not be scheduled, e.g. because no players were found. In this case the "Scheduled Arena Fight" variable will be empty.
  • Scheduled - activated if an arena fight has been scheduled. In this case the "Scheduled Arena Fight" variable will contain the scheduled arena fight instance.

Start Execution
Activates the specified JBExecution actor. This is a latent action that will continue to trigger events for some time.
Outputs:
  • Out - activates immediately, when the JBExecution actor is activated.
  • Executions Dispatched - activates next, when the execution effect has been dispatched for all affected prisoners.
  • All prisoners dead - activates last, after all affected prisoners are have died.
 

Wormbo

Administrator
Staff member
Jun 4, 2001
5,913
36
48
Germany
www.koehler-homepage.de
Overview of Jailbreak-specific Kismet conditions

Final Round?
Returns whether this is the final round.
Outputs:
  • Yes - during overtime, or if either team reached the goal score, or during the final execution after which one team will hit the goal score, or if both teams only need one more point to win the match. Particularly this is also actuvated before the match starts if the goal score is set to 1.
  • No - in all other cases, especially also during the round if one team only needs 1 point to win, but the other team needs more points.

Is Bot?
Returns whether the specified player is a bot.

Respawn Type
Returns the respawn type for the specified player.
Outputs:
  • Freedom - the player will respawn in freedom.
  • Jail - the player will respawn in jail.
  • Arena - the player will respawn in an arena.
  • Arena Winner - the player has won an arena fight and will respawn either at a specific arena winner start spot or in freedom generally.
  • Arena Loser - the player has lost an arena fight and will respawn either at a specific arena loser start spot or in jail generally.
  • Unknown - no valid player was specified.