Mapping Guide

The UnrealEd map editor that comes with Unreal Tournament 2004 (UT2004) can be used by players to create their own Carball maps.

Buggy and map with showcollision turned on.

Use of the UnrealEd programme is far beyond the scope of the Carball documentation, but this document will direct you to resources that should assist you in learning how to use UnrealEd as well as outline some of the Carball specific information needed to make a Carball map.

UnrealEd

Below is a list of UnrealEd resources to help you get started with UT2004 mapping in general.

Unreal Wiki

The Unreal Wiki is a web site edited by its users. Its intention is to document the Unreal Engine.

http://wiki.beyondunreal.com/wiki/

Fordy's Unreal Web Pages

Fordy's Unreal page has some useful general mapping information.

http://www.planetunreal.com/fordy/

Unreal Developer Network Web Site

Information from Epic Games. The extremely detailed material on this web site is reserved and password protected for Unreal Engine Licensees. However, it still offers a tremendous amount of publicly available and very helpful information.

http://udn.epicgames.com/Two/WebHome

Unreal Playground

The Unreal Playground is a web site about general UT2004 mapping that has a very enthusiastic user base.

http://www.unrealplayground.com

Angel Mapper

Well known and respected mapper Rachel Cordone provides UnrealEd tutorials on her web site, Angel Mapper.

http://www.angelmapper.com

Architectonic

The Architectonic web site, hosted by Planet Unreal, offers some UnrealEd mapping tutorials.

http://architectonic.planetunreal.gamespy.com/first_level.html

Usenet listing showing the UnrealEd newsgroup.

UnrealEd Newsgroup

There is a newsgroup dedicated to UnrealEd in the alt.games.ureal hierarchy.

alt.games.unreal.ed

Carball Mapping

If you understand the basics of using UnrealEd you should be able to create your own Carball maps.

There are some things you should note before beginning your Carball mapping endeavours:

Your ut2004.ini file requires the line "EditPackages=CBall" (without the quotes) to be present in the [Editor.EditorEngine] section. Please check to be sure the entry is already there and add if it is not.

The Game Type in the map's Level Properties must be set to "CBall.CB_Game". In theory, saving the map with a file name that begins with "CB-" should automatically set this property.

Do not place non Carball pick-ups on a Carball map. This is very important.

There are three Carball specific actors that must be present in every Carball map; the CB_PickupBase actor (places power-ups), the CB_GoalVolume actor (places a goal area), and the CB_BallSpawn actor (places the ball).

Carball Actors

Below is a list of Unreal Engine actors that are specific to Carball and descriptions of their properties. Screenshots of UnrealEd are included with some of the entries in order to further assist you. Most of these screenshots are hyperlinked to additional screenshots for more detail and to better show their placement within UnrealEd.

Name: CB_BallSpawn

Actor: Ballspawn

ClassTree Path: Actor/NavigationPoint/JumpDest/JumpSpot/GameObjective

Required!

BallSpawn is used to indicate the location on the map where the Ball will be spawned, and what skin the ball should use. By default you do not need to set any parameters for this actor.

Ballspawn actor in UnrealEd.
BallSpawn Properties:

CB_BallSpawn - BallSkin: You can set a custom skin for the ball to use with this property. Please note that this can be any texture. Most of the time you will want to place the desired texture into the MyLevel package.

CB_BallSpawn - SpawnHeight: This value specifies how far above the BallSpawn the Ball will spawn.

CB_BallSpawn - bBallGlows: This Boolean flag tells the game whether or not it should make the ball glow. Setting this flag to True will cause the Ball to glow, and setting it to False will cause the Ball not to glow.

CB_BallSpawn - BallGlowHue: This byte value is used to tell the Ball what colour it should glow. (The bBallGlows property must be set to true for the BallGlowHue property to take affect.) It is a Hue value (e.g. 0 is red, 170 is blue, etc.).

CB_BallSpawn - BallGlowSaturation: Vividness of hue; degree of difference from a gray of the same lightness or brightness. Also called intensity.

CB_BallSpawn - BallGlowBrightness: Sets the brightness of the glow.

CB_BallSpawn - OvertimeEvent: If you would like to set off some special effects (e.g. fireworks or a music change) when a match goes into overtime, enter the tag of a ScriptedTrigger in this field. When overtime is reached, the event will be broadcast.

CB_BallSpawn - BallSpawnEvent: Event triggered when a ball is spawned, either at the beginning of a match, a round, or after a ball is reset.

CB_BallSpawn - bShowSpawnEffect: When set to true, the game shows a sparkle effect whenever the ball is spawned. Set this property to false if you wish to disable the effect. This should be done if you do not like the sparkle or if you want to use your own effect. Default is true.

Name: Pick-Up Base

Actor: CB_PickupBase

ClassTree Path: Actor/xPickupBase

Required!

Pick-Up Bases are in-game objects that spawn power-ups.

CB_PickupBase actor in UnrealEd.
PickupBase Properties:

PickupBase - Power-Up: There are currently nine types of pickups in Carball. Use this property to set what type of power-up is generated by the Pick-Up Base. Do not set the power-up to anything other than a Carball pickup. Valid Carball pickups are:

Name: Goal

Actor: CB_GoalVolume

Required!

Path: CB_GoalVolume is listed in the Add Volume Pop-Up Menu.

GoalVolumes are used to mark the areas of the map where a goal can be scored. When the Ball enters a GoalVolume, the appropriate point scoring rules are applied such as giving the blue team one point or giving the red team one point.

CB_Goalvolume in UnrealEd.
GoalVolume Properties:

CB_GoalVolume - OwningTeam: This value tells the game which team owns this GoalVolume with 0 indicating the red team and 1 indicating the blue team. If you set this value to 255 then the game treats this GoalVolume as a random goal volume.

CB_GoalVolume - PlayerScoreValue: This is how many points are added to the player who knocks the Ball into this GoalVolume.

CB_GoalVolume - TeamScoreValue: This is how many points are added to the Team of the player who knocks the Ball into this GoalVolume.

CB_GoalVolume - RedEvent: This event will be broadcast when the red team scores a goal. (In the event of an owngoal the BlueEvent will be broadcast.) It is a per CB_GoalVolume function so you will need to set events for each and every CB_GoalVolume. This leads to some duplication of actors but allows the ability to have different events for each CB_GoalVolume. If you do not enter anything here, no event will be broadcast.

CB_GoalVolume - BlueEvent: This event will be broadcast when the blue team scores a goal. (In the event of an owngoal the RedEvent will be broadcast.) It is a per CB_GoalVolume function so you will need to set events for each and every CB_GoalVolume. This leads to some duplication of actors but allows the ability to have different events for each CB_GoalVolume. If you do not enter anything here, no event will be broadcast.

CB_GoalVolume - bOutOfBounds: This flag specifies whether or not the GoalVolume will be regarded as an OutOfBounds area. If set to true, the Ball will be reset when it touches this GoalVolume. If set to false (default) the Ball will be able to score goals when touching this GoalVolume.

CB_GoalVolume - OutOfBoundsEvent: This event is triggered when the ball goes out of bounds.

CB_GoalVolume - GoalType: Enumeration for the type of goal volume with three possibilities;

  1. GT_Normal: When this volume is touched by the real ball, the ball will score. Fake balls are ignored by this volume.
  2. GT_FakeBall: When this volume is touched by the fake ball, the ball will score. The real ball is ignored by this volume.
  3. GT_FakeOrRealBall: When this volume is touched by any real ball, the ball will score.

Name: Red Goal Flag

Actor: CB_RedGoalFlag

ClassTree Path: Actor/NavigationPoint/JumpDest/JumpSpot/GameObjective

Required for Bot Support

The CB_RedGoalFlag actor will let bots know the location of the red team's Goal Area. This is required for bot support as CB_GoalVolume is not really a GameObjective, but just a Volume.

Place a CB_RedGoalFlag on any CB_GoalVolume belonging to the red team.

Name: Blue Goal Flag

Actor: CB_BlueGoalFlag

ClassTree Path: Actor/NavigationPoint/JumpDest/JumpSpot/GameObjective

Required for Bot Support

The CB_BlueGoalFlag actor will let bots know the location of the blue team's Goal Area. This is required for bot support as CB_GoalVolume is not really a GameObjective, but just a Volume.

Place a CB_BlueGoalFlag any CB_GoalVolume belonging to the blue team.

Name: Repulse Volume

Actor: CB_RepulseBallVolume

Path: CB_RepulseVolume is listed in the Add Volume Pop-Up Menu.

Optional

When the Ball enters a CB_RepulseVolume, the Ball will be repulsed in the desired direction.

RepulseBallVolume Properties:

LadderVolume - WallDir: Specifies which direction to repulse the Ball.

CB_RepulseBallVolume - RepulseForce: This variable specifies how much force to apply to the Ball when it is inside a CB_RepulseBallVolume.

CB_RepulseBallVolume - ZRepulsor: This bool flag is used for the case where you want to repulse the Ball only on the Z-Axis. Setting it to true will cause the repulseforce to be applied only to the Ball's Z-axis.

Name: Out of Bounds Volume

Actor: CB_OutOfBoundsVolume

Path: CB_OutOfBoundsVolume is listed in the Add Volume Pop-Up Menu.

Obsolete!

Obsolete as of Carball version 1.9. When the ball touches a CB_OutOfBoundsVolume, it will be reset. Although this actor can still technically be used, it was made obsolete by the bOutOfBounds property of CB_GoalVolume.

Name: Toggle Goal Volume

Script Sequence: ACTION_ToggleGoalVolume

Path: Callable from with the AIScript of a ScriptedTrigger actor.

Optional

This ScriptedSequence can be called from within the AIScript of a ScriptedTrigger actor. It's purpose is to toggle the bOutOfBounds flag of any CB_GoalVolume that has an Event/Tag field matching the one contained within the the ScriptedSequence.

For example, the map CB-Potholes uses this to change the OutOfBounds potholes (the green ones) into random goal areas when overtime begins. Just open up CB-PotHoles in UnrealEd to see an example of how this was done.

Name: Kill Volume

Actor: CB_KillVolume

Path: CB_KillVolume is listed in the Add Volume Pop-Up Menu.

Optional

CB_KillVolume is used to inflict damage upon a vehicle located in a specific area of a map. It is an enhanced version of the IonCannonKillVolume used in ONS-Severence.

KillVolume Properties:

CB_KillVolume - TargetClass: You will leave this at the default 99.9% of the time. It is used to target only certain pawns.

CB_KillVolume - bAffectsFlyingPawns: Volume ignores non-wheeled vehicles. Not applicable to Carball unless a flying car class is implemented in the future.

CB_KillVolume - CountdownTime: Sets how much time a pawn (in the context of Carball this would normally be a player's vehicle) has to get out of the volume before it is destroyed.

CB_KillVolume - IonEffectClass: Effect class used when the player is destroyed. You will most likely leave this as the default setting, or choose none.

Name: Fake Ball Spawn

Actor: CB_FakeBallSpawner

Path: Actor/cb_fakeBallSpawnerNew/CB_FakeBallSpawner

Optional

CB_FakeBallSpawner is used to spawn a fake ball in response to an event. This class was used in the CB-Billiards2k4 map to spawn movable billiards balls after each goal score. This makes the map more interesting and interactive. As they are "fake", FakeBalls cannot be used to score; they will be ignored by both CB_GoalVolumes and CB_OutOfBoundsVolumes.

FakeBallSpawner Properties:

CB_FakeBallSpawner - AvailableSkins: You can set this property to hold as many skins as you like (within reason). Every time a FakeBall is spawned, one of these skins is used, based on the bRandomSkin property. If you want to use the same skin as the real ball leave this property empty.

CB_FakeBallSpawner - SpawnHeight: This value specifies how far above the CB_FakeBallSpawner actor the Ball will spawn.

CB_FakeBallSpawner - bRandomSkin: If this is set to true, then one of the AvailableSkins will be chosen at random to be assigned to a newly spawned FakeBall. If false, the skins will be chosen sequentially, beginning with the first skin in the list.

Events/Tag: This is the name of the event that will cause a fake ball to be spawned. This event can be a called from a CB_GoalVolume - RedEvent, CB_GoalVolume - BlueEvent, CB_BallSpawn - OvertimeEvent, trigger, or ScriptedTrigger.

CB_FakeBallSpawner - bRespawnWhenDestroyed: If set to true, a new fake ball will be spawned if the fake ball is destroyed (I.E. The ball went out of bounds, fell out of the world, goal was scored, etc). This will apply only to balls spawned from this particular spawner.

CB_FakeBallSpawner - BallState: Sets the state on a newly spawned ball to one of the following two possibilities:

CB_FakeBallSpawner - bBallGlows: Similar to the corresponding CB_BallSpawn property, this Boolean flag tells the game if it should make the Ball emit a glow or not. Setting this flag to True will cause the Ball to glow, and setting it to False will cause the Ball to not glow.

CB_FakeBallSpawner - BallGlowHue: Similar to the corresponding CB_BallSpawn property, this byte value is used to tell the Ball what colour to glow if CB_FakeBallSpawner - bBallGlows is set to true. It is a Hue value (e.g. 0 is red, 170 is blue, etc).

CB_FakeBallSpawner - BallGlowSaturation: Similar to the corresponding CB_BallSpawn property, indicates vividness of hue; degree of difference from a gray of the same lightness or brightness. Also called intensity.

CB_FakeBallSpawner - BallGlowBrightness: Similar to the corresponding CB_BallSpawn property, this sets the brightness of the glow.

Name: Score Board

Actor: CB_ScoreBoardMessage

Path: Actor/Info/CB_ScoreBoardMessage

Optional

CB_ScoreBoardMessage is a scripted texture interface based on the MessageTextureClient. It was ported from the "HomerScoreBoard for UT2k3/2k4" actor, and is included for general use in Carball maps.

It supports many parameters. It is used in exactly the same as was the MessageTextureClient class. Unlike MessageTextureClient, this actor supports custom background colours or textures.

ScoreBoardMessage Properties:

CB_ScoreBoardMessage - MessageTexture: This is used to indicate the texture you wish to have the message text scroll over. The texture should be a unique as all instances of it will have the message scrolling over them. It should be a ScriptedTexture shader. You can create your own, or use the ones contained in the skyline-epic.utx package.

CB_ScoreBoardMessage - Font: Chooses the font to be used to write the text. It will be rare that you will want to change the font. Some of the fonts include in UnrealEd by Epic Games are:

CB_ScoreBoardMessage - FontColor: Sets the colour of the text. You can set the colour value of the text using the following four parameters:

CB_ScoreBoardMessage - bCaps: Forces scripted text to be in all uppercase.

CB_ScoreBoardMessage - BackTexture: Optional background texture. If you wish to use a background colour, leave this property blank.

CB_ScoreBoardMessage - BackColor: Changes the background colour. May not work depending on the BackTexture used. The colour values are the same as for FontColor.

CB_ScoreBoardMessage - ScrollingMessage: Scripted Message to be drawn on the MessageTexture. This can be any text, and you can use special parameters to use dynamic text.

The valid parameters (Ported from HomerScoreBoard) for ScrollingMessage are:

(Additional parameters added specifically for Car Ball)

(Digit after the 2nd % character indicates the team, so the First Place Player Name on the blue team would be %lbn1%1, 2nd place player would be %lbtn2%1, 3rd place %lbtn3%1, etc.)

ScrollingMessage Examples:

To print the leader player's name and score (most frags):

%lp is leading with %lf frags...

To print the team with the most points:

%lt is leading with %ls points.

To show the person who last scored a goal:

Last Scorer: %cb_scorer

You can find examples of this scoreboard in use by examining the following maps:

Please note that not that not all of those maps are Carball specific and that all of them can be found at CyberRock.net Gaming.

Name: Vehicle Teleporter

Actor: CB_VehicleTeleporter

Path: Actor/NavigationPoint/SmallNavigationPoint/Teleporter

Optional

Used to teleport players (and their vehicles) to another location on the map. You can only teleport between CB_VehicleTeleporter actors (you cannot, for example, teleport between a CB_VehicleTeleporter and a Teleporter actor). You can, however, have the teleportation be one way only. To make a CB_VehicleTeleporter connect to another CB_VehicleTeleporter on the same level, simply enter the Tag of the destination CB_VehicleTeleporter into the URL property.

Vehicle Teleporter actor in UnrealEd.
VehicleTeleporter Properties:

CB_VehicleTeleporter - TeamID: This value tells the game which team owns this teleporter with 0 indicating the red team and 1 indicating the blue team. A teleporter can only be used by its owning team. If you set this value to 255 then anyone can use the teleporter.

CB_VehicleTeleporter - bAffectsFlyingPawns: Teleporter ignores non-wheeled vehicles. This property is not applicable to Carball unless a flying car class is implemented in the future.

CB_VehicleTeleporter - bVehiclesOnly: Not applicable to Carball unless players can get out of their car in some future version.

These properties inherit from and function just like normal teleporters.

Teleporter - URL: The URL property determines the destination of the actor that gets teleported. This can take several forms. To make a CB_VehicleTeleporter connect to another CB_VehicleTeleporter on the same level, simply enter the Tag of the destination CB_VehicleTeleporter into the URL property. If the URL property is left blank, then the CB_VehicleTeleporter is set up to work only as a destination for another CB_VehicleTeleporter. Set the Events/Tag property for another CB_VehicleTeleporter to point to it.

Teleporter - bChangesVelocity: If bChangesVelocity is set to False, then the Actor that enters the Teleporter will exit the destination teleporter with the same velocity as it originally had. (It experiences a conservation of momentum.) If True, then the Actor's velocity will be changed to match the TargetVelocity vector when it is successfully teleported. (Please note that these variables are applied to the destination teleporter, not the originating teleporter.)

Teleporter - TargetVelocity: Velocity applied to the vehicle when it arrives at this teleporter unless the bChangesVelocity property is set to False. Please also see the bChangesVelocity entry.

Teleporter - bChangesYaw: If set to True, this teleporter will alter the direction an incoming actor faces. The change in yaw is relative to the incoming actor's yaw prior to teleportation. The amount of change is determined by the "Movement/Rotation.Yaw" of this teleporter. (Movement/Rotation.Yaw is located under the Movement section of the properties dialogue window.) As the end result Yaw is not absolute, this is only slightly useful to keep a player from facing a wall after being teleported.

Teleporter - bEnabled: This property determines if the Teleporter is currently turned on. Triggering the Teleporter will toggle it on and off. Turning a Teleporter on when it has actors inside it will cause the Teleporter to attempt to teleport those actors.

You can learn more about using teleporters from the Unreal Developer Network and theUnreal Wiki.

Name: Teleport Vehicle Volume

Actor: CB_TeleportVehicleVolume

Path: CB_TeleportVehicleVolume is listed in the Add Volume Pop-Up Menu.

Optional

Used to teleport players (and their vehicles) to another location on the map. You can only teleport to a CB_VehicleTeleporter actor. The teleportation is "one way". To make a CB_TeleportVehicleVolume connect to a CB_VehicleTeleporter on the same level, simply enter the Tag of the destination CB_VehicleTeleporter into the URL property.

Teleport Vehicle Volume in UnrealEd.
TeleportVehicleVolume Properties:

CB_TeleportVehicleVolume - TeamID: This value tells the game which team owns this Teleporter with 0 indicating the red team and 1 indicating the blue team. A teleporter can only be used by its owning team. If you set this value to 255 then anyone can use the teleporter.

CB_TeleportVehicleVolume - bAffectsFlyingPawns: Teleporter ignores non-wheeled vehicles. This property is not applicable to Carball unless a flying car class is implemented in the future.

CB_TeleportVehicleVolume - bVehiclesOnly: Not applicable to Carball unless players can get out of their car in some future version.

CB_TeleportVehicleVolume - URL: The URL property determines where the actor will be teleported to. This can take several forms. To make a CB_VehicleTeleporter connect to another CB_VehicleTeleporter on the same level, simply enter the Tag of the destination CB_VehicleTeleporter into the URL property. If the URL property is left blank, then the CB_VehicleTeleporter is set up to work only as a destination for other CB_VehicleTeleporter. Set its Events/Tag property for another CB_VehicleTeleporter to point to it.

CB_TeleportVehicleVolume - bEnabled: This determines if the teleporter is currently activated. Triggering the teleporter will toggle it on and off. Turning a teleporter on when it has actors inside it will cause the teleporter to attempt to teleport those actors.

Name: Sound Volume

Actor: CB_SoundVolume

Path: CB_TeleportVehicleVolume is listed in the Add Volume Pop-Up Menu.

Optional

CB_SoundVolume is used to play a sound when the ball or a vehicle enters a specific area.

SoundVolume Properties:

CB_SoundVolume - SoundName: If you would like the volume to always play the same sound, set this property to the sound you wish to use. (I.E. Sound'WeaponSounds.BaseFiringSounds.BTranslocatorFire')

CB_SoundVolume - SoundDistance: Sets the distance from the volume origin that the sound can be heard.

CB_SoundVolume - SoundLoudness: Determines the volume (as in how loud) of the sound generated.

CB_SoundVolume - AvailableSounds: If you would like your volume to play multiple sounds, add each of those sounds to this list.

CB_SoundVolume - bRandomSound: Set this to true if you wish for your sounds to be randomly chosen from AvailableSounds each time the volume is touched. If you set this to false each sound will be used in the order they appear in the AvailableSounds list. (Default setting is true.)

CB_SoundVolume - ToucherType: Enumeration for the type of sound volume:

Name: Teleport Ball Volume

Actor: CB_TeleportBallVolume

Path: CB_TeleportBallVolume is listed in the Add Volume Pop-Up Menu.

Optional

CB_TeleportBallVolume is used to teleport the ball from one location to another. You must set the URL property to point to one or more CB_TeleportTarget actors.

TeleportBallVolume Properties:

CB_TeleportBallVolume - URL: Use this property to identify which CB_TeleportTarget actors(s) you wish to set as the destination teleporter. This value should match the tag property of one or more CB_TeleportTarget actors. If more that one CB_TeleportTarget actors shares this tag, then one will be picked at random.

Name: Teleport Target

Actor: CB_TeleportTarget

Path: Actor/CB_TeleportTarget

Optional

CB_TeleportTarget is used to set a destination to where the ball can be teleported (by a CB_TeleportBallVolume).

TeleportTarget Properties:

CB_TeleportTarget - SpawnHeight: This value specifies how far above the CB_TeleportTarget actor the Ball will spawn.

CB_TeleportTarget - bChangesVelocity: Set this property to true if you want the ball to have a new velocity after teleportation. If this is set to true, the TargetVelocity property value will be applied to the ball after teleportation. If the TargetVelocity value is zero, then the ball will stop after teleportation.

CB_TeleportTarget - TargetVelocity: If bChangesVelocity is true, then the value of this property will be applied to the ball as its new velocity after teleportation.

The CarBall Mapping Guide

The Carball actor descriptions are taken from the "CarBall Mapping Guide" by Carball Dev Team coder HoMeRS}i{MpSoN. Minor edits were made to make the descriptions more appropriate in the context of being included in a manual. The original mapping guide can be found at at CyberRock.net Gaming.