Layout Creator¶
This documentation only covers the new Layout Creator 2.0. There are currently no plans to provide documentation for the legacy layout creator as it’s now an unsupported tool.
Introduction¶
The Layout Creator is an in-game tool that lets you quickly build and playtest new track layouts in realtime. The editor uses splines to generate the track so all you need to do is place down nodes and move them about to get creating. This page covers everything you need to know from basic camera controls all the way up to exporting the track for use in the Unity Tools and modeling software.
Camera¶
The camera is controlled using the keyboard and mouse and uses a first person shooter control scheme.
Get to Grips¶
Before you begin using the tools it’s a good idea to understand what the tools are doing to build your track in the first place.
The layout creator uses splines to generate the track. A spline is a path that’s built from nodes, which the path will travel through. You can create as many paths as you want, these are referred to as routes in the editor.
Routes by default will snap to each other so you can move the entrance or exit of a route near the side of another path and it will automatically create an entrance/exit junction for you! Routes can also be either open or closed. By default they’re open. A closed route will connect the end back to the start.
Teminology¶
There are several terms that you will come across when learning how to use the Layout Creator.
Reference Image Plane¶
The reference image plane shows an image that you can load to display in the editor, which is useful if you’ve already got a layout that you’ve drew and want to trace over. The file path to the image is saved in your CTL file so make sure you don’t move the file if you want it to be present again the next time to open the layout.
- To load an image navigate to
File -> Open
and then select a PNG image. To update the image, open it again. - To remove the reference image navigate to
Edit -> Clear Reference Image
See the hotkey reference below or in-game for the reference image plane controls.
Play Mode Settings¶
Editing Modes¶
The layout creator has two editing modes:
Physics Mod Zones created in this mode can be exported to XML to then be imported directly into the Unity Tools or other CTL files.
Save XML: File -> Export Mod Zones to XML
Import XML: File -> Open -> Select XML File
Helper Tools¶
This section covers the more hidden features of the editor. For a reference on everything, see the hotkey reference below as it contains descriptions for everything.
Select a node on one route and the node on another and then press V. The last segment on the first route you selected will now connect to the first segment on the second route that you selected. To remove the link, see the route tools window section below.
Node Tools Window¶
Path: Window -> Node Tools
The node tools window provides you with several functions that arn’t accessible through hotkeys.
- Reset Buttons: Allows you to reset the entire shape or parts of the track profile shape for the selected nodes.
- Mirror: Allows you to mirror the track shape from one side to the other for the selected nodes.
- Copy/Paste Shape: Allows you to copy a track shape and then paste it onto other nodes.
- Shape Interpolation: Allows you to control the method of interpolation used for calculating the track shape between each node. There are a lot of different modes, See Here for an interactive demo for some of them.
- Height To Zero: Resets the selected track nodes height to zero.
- Store Height: Stores the height of the first node in the selection and stores it in the height field to the right.
- Paste Height: Copies the height from the hieght field and pastes it onto every selected node.
- Avg Height: Averages the height of every selected node and then applies it.
- To Zero: Resets the selected track nodes tilt to zero.
- To 180: Sets the selected track nodes tilt to 180 degrees. Useful if you’re designing upside down sections of track.
- Tilt by 180: Tilts the selected track nodes tilt by 180 degrees.
- Apply Custom Tilt: Copies the tilt value from the tilt field to the left and pastes it onto all selected nodes.
- Tilt Buttons: Provides a way to rotate nodes in 5, 45 and 90 degree increments.
- Reset Yaw: Resets the yaw of the selected nodes tangents.
- Reset Pitch: Resets the pitch of the selected nodes tangents.
- To Yaw / To Pitch: Copies the value from the tangent rotation field to the left and pastes it onto the select nodes tangents.
Route Tools Window¶
Path Window -> Route Tools
The route tools window provides you several options to control how routes work and their ordering.
- Junction Snapping Threshold: Sets the minimum distance before track track segments snap together to make junctions.
- Auto-Snap Entrance: Whether the routes entrance should snap to nearby track segments.
- Auti-Snap Exit: Whether the routes exit should snap to nearby track segments.
- Entrance Smoothing: How many track segments away from a snapped junction at the entrance should be smoothened out.
- Exit Smoothing: How many track segments away from a snapped junction at the exit should be smoothened out.
- Remove Link: Removes a route link if there is any.
Hotkey Reference¶
These hotkeys are also available for viewing inside the editor itself. See Help -> Hotkey Reference
.
General Tools¶
Action | Hotkey | Description |
---|---|---|
Toggle Grid Snap | G | Toggles nodes snapping to the grid.
|
Decrease Grid Size | , (comma) | Decreases the grids size.
|
Increase Grid Size | . (period) | Increases the grids size.
|
Set/Remove Straight Lock | L | Sets the selected node as the straight lock reference
or removes the reference if a straight lock is already
defined.
|
Undo | Ctrl + Z | Undoes the last action.
|
Redo | Ctrl + Y | Redos the last undone action.
|
Toggle Play Mode | F2 | Toggles between editor and play mode.
|
Camera¶
Action | Hotkey | Description |
---|---|---|
Move Forward | W | Moves the camera forward.
|
Move Backwards | S | Moves the camera backwards.
|
Move Left | A | Moves the camera left.
|
Move Right | D | Moves the camera right.
|
Move Down | Q | Moves the camera down.
|
Move Up | E | Moves the camera up.
|
Speed Up | Left Shift | Speeds up the cameras movement.
|
Change Speed | Scroll Wheel | Adjusts the cameras global movement speed.
|
Orbit Selection | Middle Mouse | Orbits the camera around the selected nodes.
|
Reference Image Plane¶
Action | Hotkey | Description |
---|---|---|
Move on X/Z | R + Space + Mouse | Moves the reference image on the X and Z
axes.
|
Move on Y | Left Shift + R + Space + Mouse | Moves the reference image on the Y axes.
|
Scale | Left Shift + R | Scales the reference image on both axes.
|
Lock Transform | Double Tap R | Locks the reference image in place so you
can’t accidently move it.
|
Selection Tools¶
Action | Hotkey | Description |
---|---|---|
Select | Left Click | Selects the node that’s under the cursor. Drag the
mouse with left click held to marquee select.
|
Add To Selection | Shift + Left Click | Adds the node under the cursor to the current
selection. Also works when marquee selecting.
|
Remove From Selection | Ctrl + Shift Click | Removes the node under the cursor from the
current selection. Also works when marquee
selecting.
|
Clear Selection | Backspace | Clears the current selection. Marquee selecting
empty space will also clear the current selection.
|
Node Tools¶
Action | Hotkey | Description |
---|---|---|
Add Node | A | Adds a new node at the end of the active
route.
|
Insert Node | S | Inserts a new node in the active route.
Uses the first node in the selection and
inserts the new node between it and the
next node in the route if there is one.
|
Delete Node | D | Deletes the selected nodes. Deleting every
node in a route will delete the route.
Deleting a single node will select the last
node in the route the deleted node is a part
of.
|
Add Route At Mouse | Shift + A | Creates a new route at the mouses position
and rotates it to travel away from the
camera.
|
Add Node In Place | Ctrl + A | Adds a new node to the active route
at the mouse cursors position.
|
Move on X/Z | Space | Moves the selected nodes along the
X and Z axes relative to the cameras
rotation.
|
Move on Y | Shift + Space | Moves the selected nodes along the Y
axis.
|
Move to cursor | Ctrl + Space | Moves the selected node to the mouse
cursors position.
|
Tilt | T + Mouse | Adjusts the tracks tilt through the
selected nodes.
|
Tilt 90 Degrees | Shift + T | Increases the selected nodes tilt by
90 degrees.
|
Reset Tilt | Ctrl + T | Resets the selected nodes tilt to zero.
|
Adjust Tangent Distance | F + Mouse | Adjusts the selected nodes bezier
tangent positions.
|
Adjust Tangent Yaw | Shift + F + Mouse | Adjusts the selected nodes bezier
tangent yaw.
|
Adjust Tangent Pitch | Ctrl + F + Mouse | Adjusts the selected nodes bezier
tangent pitch.
|
Toggle Left Wall | [ | Toggles the left wall for the selected
nodes.
|
Toggle Right Wall | ] | Toggles the right wall for the selected
nodes.
|
Toggle Side Connection | P | Toggles side snapping for the selected
nodes. This allows you to create routes
that run alongside each other.
|
Toggle Maglock | M | Toggles the magnetic lock for the
selected nodes.
|
Toggle No Tilt Lock | O | Disables 2159 tilt locking on the
selected nodes.
|
Toggle Allow Out Of Bounds | / (foward slash) | Disbles OOB detection and invisible
walls for the selected nodes.
|
Toggle Jump | J | Toggles jump mode for the selected nodes.
This creates a break in the track.
|
Toggle Teleporter | ; (semi-colon) | Toggles Teleporter mode for the selected
nodes. Works the same as the Jump mode.
|
Flattern To FIrst Selection | H | Requires multiple nodes to be selected.
Takes the height of the first node in
the selection and copies it to all other
nodes in the selection.
|
Track Shape Tools¶
Action | Hotkey | Description |
---|---|---|
Modify Left Floor Width | Q + Mouse | Adjusts the horizontal offset of the
left floors outer vertex.
|
Modify Left Floor Height | Shift + Q + Mouse | Adjusts the vertical offset of the
left floors outer vertex.
|
Modify Left Wall Width | Ctrl + Q + Mouse | Adjusts the horizontal offset of the
left walls top vertex.
|
Modify Left Wall Height | Shift + Ctrl + Q + Mouse | Adjusts the vertical offset of the
left walls top vertex.
|
Modify Right Floor Width | E + Mouse | Adjusts the horizontal offset of the
right floors outer vertex.
|
Modify Right Floor Height | Shift + E + Mouse | Adjusts the vertical offset of the
right floors outer vertex.
|
Modify Right Wall Width | Ctrl + E + Mouse | Adjusts the horizontal offset of the
right walls top vertex.
|
Modigy Right Wall Height | Shift + Ctrl + E + Mouse | Adjusts the vertical offset of the
right walls top vertex.
|
Route Tools¶
Action | Hotkey | Description |
---|---|---|
Toggle Entrance Snap | Shift + [ | Toggles the junction snapping function for the active routes
entrance.
|
Toggle Exit Snap | Shift + ] | Toggles the junction snapping function for the active routes
exit.
|
Toggle Route Closed | C | Toggles whether the active route is closed. A closed route
will loop back round to its first selection.
|
Set Section Link | V | Lets you toggle a continue link to another route.
Select the node in one route, another node in a different
route and press V to have the first route connect its exit
to the seconds start.
|
Physics Mod Zone Tool¶
Action | Hotkey | Description |
---|---|---|
Add Zone | A | Adds a new zone to the layout.
|
Delete Selected Zone | D | Deletes the selected zone from the layout.
|
Move Zone on X/Z | Space | Moves the zone on the X and Z axes.
|
Move Zone on Y | Shift + Space | Moves the zone on the Y axis.
|
Rotate Zone | R + Mouse | Rotates the zone along its yaw.
|
Scale On All Aes | S + Mouse | Scales the zone all three axes.
|
Scale on X | S + X + Mouse | Scales the zone on its X axis.
|
Scale on Y | S + Y + Mouse | Scales the zone on its Y axis.
|
Scale on Z | S + Z + Mouse | Scales the zone on its Z axis.
|
CTL Programmer Reference¶
Want to make your own tool that can import or export a CTL file? Here’s the CTL specification!
CTL (Custom Track Layout) Specification¶
Note
- Strings have a leading byte that define how many bytes long the string is.
- Booleans are written as bytes and are expressed as either 0 or 1.
- Section link indicies are stored as you enumerate through the routes. Wait until you have loaded all routes before you assign them. If there isn’t a link, this value will be stored as -1.
// code init (not for reading the file. this is what your code should be doing)
int32[] sectionLinkIndicies
// header
int32 version
// config
bool autoJunctionThreshold
if (version > 5)
int32 hyperSpeedEnabled
int32 speedClass
int32 speedMode
int32 physicsMode
if (version > 7) bool meshFloorEnabled
string referenceImagePath
if (version > 6) bool referenceIsLocked
float32 referenceXPos
float32 referenceYPos
float32 referenceZPos
float32 referenceWidth
// track configuration
int32 routeCount
for routeCount
// route header
bool connectEntrance
bool connectExit
int32 autoJunctionSmoothEntrance
int32 autoJunctionSmoothExit
int32 linkIndex
linkIndex.add(continueIndex)
// spline data
bool splineClosed
int controlPointCount
for controlPointCount
float32 posX
float32 posY
float32 posZ
float32 rotX
float32 rotY
float32 rotZ
float32 rotW
bool sideConnect
bool maglock
if (version > 8) bool noTiltLock
if (version > 9) bool allowOob
if (version > 1) bool isJump
bool leftWall
bool rightWall
if (version > 2) float32 tangentDistance
if (version > 3) float32 tangentYaw
if (version > 4) float32 tangentPitch
float32 leftFloorExtentX
float32 leftFloorExtentY
float32 leftFloorExtentZ
float32 leftWallExtentX
float32 leftWallExtentY
float32 leftWallExtentZ
float32 rightFloorExtentX
float32 rightFloorExtentY
float32 rightFloorExtentZ
float32 rightWallExtentX
float32 rightWallExtentY
float32 rightWallExtentZ