152 ratings
Level Editing Guide
By Secret Exit
This guide helps you get started with creating new custom levels for Turbo Dismount.
Rate  
Favorite
Favorited
Unfavorite
DISCLAIMER!
If you find issues with this documentation or errors in the functionality of the editor, join the discussion on the forums, and let us know how the tools or the guide can be improved.
Requirements
Turbo Dismount is developed using Unity3D game engine. To design new levels for the game, the free version of Unity Editor is needed - this will give all you enthusiasts the same environment for level creation as we, the developers, use on our daily work.

To set things up, the following things are needed:

  • PC or Mac capable of running the Unity Editor (sorry, Linux-users, Unity Editor is not available as a native version, you may have luck using Wine)
  • Steam account
  • Unity development environment, available on the Unity Download Page[unity3d.com].
  • Turbo Dismount editor asset package, download from this link[turbodismount.com].
  • Turbo Dismount the game itself, available on Steam Store

Getting Started
Start by downloading all the required items.

Then install Unity to your computer, and unless you have any specific reason, just use the default install settings. Turbo Dismount level editing tools work just as well on the free and pro versions of Unity! There's no need to enable the pro features for the purposes of level editing!

When you first launch Unity, you need to create a new empty project:
File -> New Project...

Choose any name, and click "Create Project".

Now you have a clean slate, and next we import the custom tools for Turbo Dismount level editing.

Unzip the td_editor_package.zip file, and check that it contains TurboDismount.unitypackage.
Let's add these tools to Unity:
1) Assets -> Import Package -> Custom Package...
2) Choose TurboDismount.unitypackage from the location you just unzipped it to.
3) In the pop-up window that appears, click on All, then on Import.

Two notable things happen after this:
1) In the top toolbar you'll notice a "TurboDismount" section (you may need to click on the toolbar to refresh it!)
2) In the project browser on the bottom left there's a "TurboDismount" folder under Assets

Now let's add the Turbo Dismount tools to the UI:
1) Click on TurboDismount -> Level Tool in the top toolbar
2) Drag the Level Tool tab (Note: grab the tab instead of just the window top bar!) under the 3D grid view. If you drag by the tab, the window will magnetically snap in place.

Check the screenshot in the next section to see our recommended layout for these tutorials.

Open the default scene:
Navigate to Assets -> Turbo Dismount -> Scenes -> LevelEditor
Double-click on LevelBase to open the scene.

And that's it! Let's move to the next section.
Current Limitations
First things first, understanding what currently can and cannot be done with the tools. The functionality is quite limited, but will improve with time.

You Can You Currently Can't
Set any start location Create new vehicles
Place, rotate and scale different ground tiles and other obstacles Create new characters
Place and rotate obstacle hot spots Create new poses
Spawn NPC vehicles that follow paths. -
Choose from different atmosphere and environment options -

Each level is 250 units wide, 250 units deep, and 500 units high! Origin is at the center, so placing units farther than 125 units from the center along the groundplane will leave them outside the playable area.

Finally, game objects can not be directly parented under each other in hierarchies. Always create groups and parent them instead!
Basic Layout and Navigation
Unity itself is a powerful and versatile environment that can be used to develop a wide range of different games. Turbo Dismount only uses a small subset of its functionality, and we walk you through the very basics of using the editor. Please look for a wide range of tutorials online if you wish to learn more.

Basic Editor Layout


Element Function
(1) Hierarchy View Allows you to arrange tiles in hierarchies to help manage more complex structures.
(2) Scene View The main work area where you build your levels.
(3) Inspector Here you can edit the attribute values of level tiles directly.
(4) Project Tab From here you can drag and drop level tiles into the Scene View or the Hierarchy View.
(5) Level Tool - Not here by default! Choose Turbo Dismount -> Level Tool from the top menu bar and drag the tab here. Allows you to choose the environment and lighting conditions for your level, and export your work to Turbo Dismount.

Navigation

Moving the camera:
(1) Click-drag with RMB and use WASD keys to move in 3D space.
or
(2) With alt downpressed, rotate with LMB, pan with MMB, zoom with mousewheel or RMB.

Moving level tiles:
The top left corner of the Unity Editor has tool buttons for moving, rotating, and scaling selected items. These tools can also be selected using keyboard shortcuts:


Shortcut Tool
q Pan camera in the Scene View
w Move tool
e Rotate tool
r Scale tool

If you drag any tile to the 3D view and manipulate it using these tools, you'll notice the values change in the Inspector View on the right edge of the screen.
Level Editor Basics
Save Your Scene

When you create new levels, each of them is referred to by Unity as a scene.

Once you've loaded LevelBase, it's a good starting point to build on. But first things first...
save this new level under a new name!

If you want to save your new scene so it's easily found in the Project tab, use the following location:

Choose File -> Save Scene as... -> (then find the folder where you created your new project) -> Assets -> My Levels

Type a name for your level, and click on Save.

You should now notice a new icon appear in the Project tab, under the My Levels -folder.

Ground Tiles

The first step is to lay down some ground tiles.

In the Project tab, navigate to the GroundTiles folder. From here you can just drag 'n drop any of the tiles right into the Scene View or the Hierarchy View.



NOTE: For clarity, you may wish to drag them all under the "GroundTiles" folder in the hierarchy view. The exporter itself does not care, but for managing more complex levels, learning to use the hierarchy to your advantage is essential.

Any tile from the GroundTiles folder can be moved, scaled and rotated as you please. You can copy-paste them as much as you like, and create as complex shapes as you can come up with.

If you want to make new folders for your tiles, choose from the top menubar:
GameObject -> Create Empty

You can then rename this new folder, place it in your hierarchy, put ground tiles inside it, and copy-paste the entire folder itself, if you so wish.

Scene Objects

Just as with ground tiles, you can place, rotate and scale the objects from the Objects folder into your level as you please.

You can also build simple dynamic, collapsing structures from bricks and steel beams, just make sure you use them like regular buildings blocks - don't try to overlap objects with each other.



Most of the items in the Objects folder are dynamic, meaning they'll react physically to collisions with Mr. Dismount or any vehicles.

You'll also find objects in the Buildings and NPCVehicles folders!


Any vehicles you place in the scene are currently just standing still, but will move when collided with.

Selection Hotspots

Hotspots mark the locations of gameplay elements. ObstacleSelection hotspots can be many in number, and they allow the player to choose different obstacles to use in the level.

When you place ObstacleSelection hotspots into the level, make sure they all have unique names! Just put a number after each obstacle hotspot you put into the level, and things will go smoothly.

VehicleSelection hotspot marks the starting position for the player's vehicle.
Only one VehicleSelection hotspot is allowed per level!

Example level in the editor. Note the additional folders for ground tiles in the Hierarchy View.

Once you are satisfied with how your level looks, let's try it out!

Steering Paths

LevelBase comes with two preset steering paths for you to edit, but you can add more. Alternatively, if you delete all steering paths, the vehicles will only drive directly to the direction they're facing.

Follow the existing hierarchy if you create new paths!
Make sure your new paths have a unique number to their names, so that you have Path1, Path2, Path3...

The paths themselves are generated from the PathNode elements in the Path folder. PathNode1 should always be located at the same place as the VehicleSelection node. You can create as many PathNodes as you want to draw out long and complex paths, but remember that each PathNode's name must have a unique sequential number.


PathNodes in the editor Scene view.

Matching steering path in the game.

Also it's good to keep your PathNodes just above the ground tiles, for this we've set the Y coordinates of PathNodes to be 0.2 by default.

Scene Cameras

Two cameras need to be in proper locations in your level:
1) ObstacleCamera
2) PreviewCamera

ObstacleCamera needs to be positioned so that it shows all obstacle hotspots in the level. This is the view shown to the player when the "Obstacles" button is pressed.

PreviewCamera is used as an overview of your level when it has been loaded. You can place it anywhere you like, whether to highlight a significant detail in the level, or a view that shows the entire level.

Exporting Your Level

To see how your level looks inside the game itself, we need to export a level file. Here's how:



1) Enter a title for your level
2) Click on "Export level" on the Level Tool tab
3) Save the file to a convenient location

Moving on to the next section...
Previewing Your Level
Now that you've exported a level file, it's time to playtest it in the game.

1) Open Turbo Dismount
2) Open the Options screen in the game (it's the arrow in the top left corner of Main Menu)
3) Click on "Load Custom Level"



Now you can test your level, and return to Unity to tweak elements as much as you like. If you need to change anything, just export the level from Unity again, and press "Reload Level" to instantly bring the changes to the game preview.

Publishing to Workshop
Once you are satisfied with your level, it's time to share it with the world!
Click on "Publish to Workshop", and a publishing pop-up appears.


The title is the name you typed in Unity, so change it there if you need to.
Fill in a short description, and add a preview image.

Then click on "Publish", and your level is uploaded to Steam Workshop for the nearly billions of Dismount-fans to enjoy. Subscribing to Workshop-levels is done through the normal Workshop UI in the Steam Client.

There you go!
Updating the Level Tools
When a new update to the level editor tools is released (and this may happen separately from any Steam updates!), follow these steps to bring the new tools to your editor:

1) Download the new editor package
2) Move any custom levels you may have under TurboDismount-folder to the My Levels -folder under the Project Tab
3) Delete the TurboDismount-folder
4) Unzip the new editor package
5) Import the new editor package just like before: Assets -> Import Package -> Custom Package...

The new editor package will replace the TurboDismount folder in your Project Tab.
Advanced Level Editing
NOTE: THIS SECTION OF THE GUIDE IS CURRENTLY BEING UPDATED, AND CONTAINS INCOMPLETE INFORMATION

First make sure you have the latest level editor asset package! Older tool packages do not include support for animated NPC vehicles!

Simple Animated NPC Vehicles

Simply drag an NPCVehicleSpawner object into your scene. This element will spawn NPC Vehicles which will travel in a straight line from their start position. The NPC vehicles will move until they hit a dynamic object or until they are caught by an NPCVehicleCatcher.

If you first create an NPCVehicleSpawner and then select it, you'll find there are a number of editable parameters in the Inspector View that affect the speed and number of the spawned vehicles. Here they are:

Parameter Description
Vehicles This is a list of the vehicle types to be spawned. If you want the spawner to create multiple types of vehicles, just increase the "array size" and then drag 'n drop NPC vehicles into the list. There must always be at least one. The vehicles are then spawned randomly from the list. PRO TIP: Add any vehicle to the list more than once to make it appear more frequently!
Num Vehicles To Spawn This value controls how many vehicles can be spawned from this NPCVehicleSpawner at any given time. For example, if the value is 5, the spawner will stop creating new vehicles until at least one has been de-spawned by an NPCVehicleCatcher.
Spawn Interval This is the delay between each spawned vehicle in seconds.
Vehicle Velocity This is the speed of the spawned vehicles right to the moment when they collide with something. The value is units per second, which is close to meters per second. Therefore the default value of 20 means 20 m/s = 72 km/h = 45 mph. The maximum value is 100.
Follow Path Name This is the name of the path GameObject that the NPC vehicles will follow if you do not want them to just drive in a straight line. All paths need unique names! Remember to add a number to each name if you get too excited with copy-pasting! Also note that the path does not necessarily start at NPCVehicleSpawner location - your NPCs will appear at the start of the path, wherever it is!

If no follow path is set, the vehicles will just go forward from the spawner location until they hit something or are caught.

The spawner has a safety collider (the green box) - no vehicles will be spawned if the collider is occupied by other objects in the scene. This is to avoid overlapping physical objects in the world. The box shape and size you see is what is eventually used in the game, your changes will have no effect in that regard.

To put it simply, you want your NPC vehicles to go from the green box to the red box. The green box creates NPCs, and the red box removes them. The red box is the NPCVehicleCatcher.

Place the NPCVehicleCatcher objects in the scene to "catch" the NPC vehicles. As long as the NPC vehicle is automatically moving (but has not collided! NPCs that are flying around from collisions are not removed!), the instant any part of it touches the red box, the vehicle is removed from the world and re-spawned by the NPCVehicleSpawner it originated from. This way you can make a continuous flow of vehicles.

Simple NPC Spawning Example Level

Just load "Froggerer" scene from the Assets/TurboDismount/Scenes/Examples -folder in the Project Tab.


NPC Follow Paths

Congrats, you've probably managed to create a level with straight streets, and NPCs that go directly from A to B. But that won't be fun if we want corners, roundabouts or crossings. For this we need to specify follow paths. This section walks you through that part of the process. And you should not be reading this if you haven't yet created just a simple level from ground tiles and objects. Do that first, we'll be right here waiting.

Ready? Here we go.

The Follow Paths are created much in the same way as Steering Paths. You place little spheres in the scene, and the final path is generated from their positions. Just like Steering Paths, the Follow Path will pass through every node you have placed in the scene.

The path nodes for a single path must be parented under a single GameObject (which will define the path).

Here's how the Follow Paths differ from Steering Paths:

- You can and should set a PathInfo script for the paths (the GameObject that has path nodes as children). Drag'n'drop PathInfo from TurboDismount/Scrips/LevelEditor to your path GameObject in the Inspector.
- If a PathInfo script is not set, the path is treated as a steering path for backward compatibility.
- In the Inspector you can set PathInfo parameters that control whether the path is a steering path or an NPC vehicle path, and whether the path is looping or not.
- The path nodes are colored yellowish for steering paths and green for NPC vehicle paths in the Scene view.


Other NPC Follow Path Pro Tips

- If you have a non-looping path set for the vehicle and the vehicle misses the catcher it will just end up sitting at the end of the path, not moving anywhere. Make sure your last path node extends the path way past the catcher, like 20 units past. The paths will be invisible in-game after all.
- Make sure your path is set thus that the NPC vehicles don't collide with the ground or other static colliders or NPC vehicles in the world. They will gracefully go through them until they hit the player for example, and at that single instant they will collide against everything they overlap with. The result may not be exactly what you expected. Yet it may be spectacular.
- The up vector in the path nodes (the green arrow in the move gizmo when you have local coordinate space selected in the editor) is taken into account when interpolating the path splines. The NPC vehicles' forward vector will always point exactly through where the path would go, but you can use the up vector to control the banking of the vehicles. You can do this for effect in corners or when your level streeta are banked you really should bank the paths as well. At least for not interpenetrating the street colliders.
- The PathNodes have a new field Custom Value. Ignore this for now. :)


Nailed It! -Conditions

A single dismount usually ends with the message "Dismount Completed!", but it is possible to change this to "Nailed It!" if you have a scene where the message can be used for humorous or ironic effect. Basically the feature was designed to underline situations where Mr. Dismount is able to get out of harms way, which is somewhat contradicting with the theme of the entire game.

To enable the "Nailed It!" message in your level, you need to add a NailedItEndZone node into your level. This is found under Resources/GameLogic/NailedItEndZone. Once dragged into the scene, a pink cube appears, which can be scaled and rotated to the position of your liking. Any number of Nailed It -zones can be added.

To trigger the Nailed It! -message at the end of a dismount, the following conditions must be met:
1) The player must be inside the NailedItEndZone
2) The player must still be in one piece (i.e. no lost limbs)
3) The player must still be riding the vehicle
99 Comments
< >
cemudkip 15 hours ago 
Will not run in Wine
ConfidentBottle Aug 21 @ 8:54pm 
Is there a way to "snap" the road peices to nearby ones?
Secret Exit  [author] Aug 21 @ 1:27pm 
Please update to Turbo Dismount v1.2 and grab the latest Editor Asset Package (v5). The invalid exception has been fixed.
The Entire Soviet Union Aug 18 @ 5:36pm 
InvalidOperationException: Operation is not valid due to the current state of the object
System.Collections.Generic.Stack`1[UnityEngine.Transform].Peek ()
Dismount.LevelEditor.TransformExtensions.GetPath (UnityEngine.Transform current) (at Assets/TurboDismount/Scripts/LevelEditor/TransformExtensions.cs:25)
Dismount.LevelEditor.TDLevelTool.ExportLevel () (at Assets/TurboDismount/Scripts/LevelEditor/Editor/TDLevelTool.cs:388)
Dismount.LevelEditor.TDLevelTool.OnGUI () (at Assets/TurboDismount/Scripts/LevelEditor/Editor/TDLevelTool.cs:149)
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222) after I try to export. Please help!
☢☣ Harichi ☣☢ Aug 14 @ 6:34pm 
Wow, the Unity thing is 1.2 GB.
killhunter813 Aug 14 @ 10:34am 
the 88mph achivement is a refrence of back to the future
jeremiahgulick Aug 5 @ 3:26pm 
O.K i gest that will be helpful for making levels but i dont know how to ope- O.K never mind.
but thanks for the guide :D :3
CheeseCake Jul 26 @ 12:46pm 
when i try too export it says. "Level export failed The ObstacleSelection objects must be uniquely named
Rin Jul 23 @ 3:58pm 
I do not see the "Level Tool in the top toolbar" even after rebooting unity did I do something wrong?
jandreww Jul 23 @ 2:43pm 
please help wen u can