64 ratings
Steam Workshop for Tower Wars [Official Guide]
By SwogDog
A work-in-progress guide to creating content for the Tower Wars Steam Workshop.
Rate  
Favorite
Favorited
Unfavorite
Introduction
Welcome to the Steam Workshop for Tower Wars Official Guide! This guide will be a work-in progress to help you create levels (and eventually other content) for Tower Wars. It's not a simple process as there are lots of elements to get right for a map to work correctly, but it is versatile and powerful. Tower Wars uses Torque 3D, so if you have experience working with this engine, most of the knowledge will translate directly into being able to create maps for Tower Wars.

RECENTLY ADDED: There is a new Basic Level Creation section to this guide! If you are a beginner or don't have a 3D program to create content, start here!

The Basic Level Creation section of this guide will show you how to create a small map step by step. All tools are provided for you in this scenario.

The Advanced section of this guide will walk you through the process of sort of creating Battle Bluffs. Source assets will be provided so you can see exactly how this level is put together. I recommend you use this as a template to create your own levels since all the needed elements are there and you can just replace them with your own.

Let's get started!

The following sections are broken down into twomajor categories: "Basic" and "Advanced".

The "Basic" section will cover how to use the provided premade "prefabs" to create your own levels. Start here if you are not a 3D artist, designer or programmer and just want to make levels out of blocks.

"Advanced" will focus on the steps needed to create a full 3DS Max file that includes all of the assets required to build a fully custom Tower Wars level, as well as the export process. It will also cover how to properly import and set up the assets you've exported from your 3DS Max file. Some of this information will be relevant to those of you working through the "Basic" section, so don't skip it all!
***BASIC***
Summary
To get you started making maps as quickly as possible, we've provided you with some new tools. Included in the new tools are the following:

Ruins Map - This is the source for the map "Sand, Stone and Sorties" that you can download and play right now from the Tower Wars Steam Workshop.

Prefabs - We've included tons of new prefabs (premade objects) that include the collision, navigation and all the other techy stuff that you don't want to deal with. Now all you'll need to do is place all the required objects, set up a few level parameters and publish!

WorkshopTemplate Map - We've also included a map template that has all the required pieces to get a level working! For the rest of the "Basic" section of this doc, I will take you step by step from loading up this template to publishing you new level.

Ready?

Alright, then! Onward to victory!
Step 1: Getting the Editor
For "Basic" level creation, all you need is the Tower Wars Editor which is available in the "Tools" sections of your Steam Library. When you install, be sure to install to the same directory you installed your game files for Tower Wars.



This download contains all the content need to create a level from pre-existing pieces without the need of any external 3D programs.
Step 2: Loading the Template
Once the Tower Wars Editor has downloaded, go ahead and run it.

It will open up the Torque Toolbox. From here you can see the list of levels available to under Project Levels. Feel free to open up the Ruins levels and poke around if you like. Those maps were created using only prefabs and some other included objects. To start working on your own from a fresh start, scroll down to "WorkshopTemplate", select it, and click on "World Editor".

Step 3: Getting Acquainted
For basic navigation in the editor, see the Torque Official documentation here: http://docs.garagegames.com/torque-3d/official/content/documentation/World%20Editor/Basics/Overview.html

Most importantly, look at the section entitled "Looking and Moving Around"

Once you have a feel for it, you should be able zoom out and look at everything included in this file.



On the top right, there is a panel called the "Scene Tree". Open up the MissionGroup and you'll see all the objects contained in this level. Let's go over each item, one at a time.

First we have "theLevelInfo".


"theLevelInfo" is where you'll need to fill out a few fields for your level to work and publish properly. Aside from the things like fog and other such level settings, there are a few key custom fields here that you should be aware of towards the bottom:

"LevelName" - This is the name that the mod will show up as in Tower Wars, and needs to match your save file name. This template is set up as a 1v1, so you will use the base name. If this were a 2v2, you would call it "WorkshopTemplate_2v2" and if it were a 3v3, "WorkshopTemplate_3v3". When you publish in this way, each map type will be published under the same single mod on Steam. When players join to play, the game will automatically pick the correct version based on how many players there are. ***Make sure you save you level in the levels folder only, or you will encounter errors!!!***

"cameraDataBlock0-1" These determine which was the player's camera's face during the game. The current settings are good for this map where the players are facing each other. If you want to do a map where the players are facing the same direction, like Battle Bluffs, you can change the values to "Level01AxonometricCameraA" and "Level01AxonometricCameraB".

"MaxPlayers" - Though redundant, this field needs to be filled out to match how many players the game will allow. 2, 4 or 6 should be entered for 1v1, 2v2 and 3v3 respectively.

"towerInitialRotation0-1" This is important depending on the type of map you're making. It determines which way the towers face when they are built. The settings you see right now are perfect for a map where the two teams are facing each other (these are the settings used in Dusk till Death and Warcicle". If you're creating a map where both teams are facing the same direction, like Battle Bluffs, use "3" for both fields. Acceptable values are 0-5, each meaning a 60 degree rotation offset from the default.

Next is "CameraPlane".


This is a custom object we created that is nothing more than a flat invisible plane. It will not affect characters or projectiles and is used solely for the camera "look-at" node to slide on. When the camera node reaches the edge of this plane. Without it, the camera will be stuck. You can raise it or lower depending on where you place your hexes.

Then we have the "TerrainPlane".


The "TerrainPlane" is a Torque Terrain object, and here's it's using a default sand texture. To edit this, you can use the Terrain Editor and Terrain Painter tools provided in Torque. For more information on how to handle Terrain, see here: http://docs.garagegames.com/torque-3d/official/content/documentation/World%20Editor/Editors/TerrainEditor.html

Next is "SunSky".


This is pretty much what it says. It's the sun... in the sky... You can tweak these settings to get drastically different looks to your level. For more information on lighting in a scene, look here: http://docs.garagegames.com/torque-3d/official/content/documentation/World%20Editor/Adding%20Objects/ScatterSky.html

Next is "Music".


If you'd like to provide a custom music track to your level, you can do so here. Torque uses .OGG files. You don't need to mess with the other settings, just provide the new track and it should work. Whatever track you assign here will begin playing once the match officially starts.

Lastly we have "RequiredObjects" and "OtherPrefabPieces". Open that those up to see the subfolders and what's inside them.


These are some of the required "prefab" objects to create a level. Every level, in order to fuction properly, needs unit spawn points, castles, BP start triggers, Hint Path start points, and hexes. Without these, the game probably won't work. In the "OtherPrefabPieces" folder we have a few objects for connecting the other essential pieces.
Step 4: Learn A Bit About Prefabs
All the prefabs that are placed in this level, as well as tons of addition pieces for you to use, are contained in your library here:



The prefab pieces that we created contain all the information for a unit to traverse it. It has navigation information (telling the unit where it's boundaries are), collision (so the unit doesn't fall through the floor) and art (so the player can visually see where the units are allowed to go. The collision and navigation portions of the prefabs are invisible.

Some prefabs have some other specific tasks built in. Here's a brief description of all the prefabs and what they contain:

"CastleBlue" and "CastleRed" - These prefabs have the castle, the hint path end point, the destination navigation info, and the safe triggers. You'll notice in Tower Wars that towers will stop attacking units once they enter the castle. That's caused by a trigger that is built into this prefab. That trigger also tells the Equine Subterfuge Transport to let out their units and Mortimer to stand up and skate ominously to the castle.

In the "Game" subfolder, we have all the prefabs that have something to do with the game. For the sake of this walkthrough, we will ignore the Hexes, as they will be placed differently using a new feauture we added which I will cover a little later. The pieces you need to worry about are the BP starts, and the Path Draws. BPStartBlue should be used where you want the blue units to start gaining BP. The same applies to red as well. The Path Draw pieces are where the hint path will start drawing (the circle part). If all units spawn roughly in the same area, only the player one start point is needed. If you have them in drastically different areas, each player should get his own hint path. In the new Ruins mod, players spawn in very different locations, and so I used all three path draw pieces per team (in the 3v3 of course).

In the "Paths" folder is where the fun begins. We've provided you with nearly 100 pieces to start (I plan to add more, so request the types of pieces you would like). These are the connection pieces you can use to create your map. I recommend only using the 60 and 120 degree turns to start, as the 30 and 90 degree pieces take you "off grid" and it's easy to have pieces that no longer align. More pieces will be coming to help alleviate this issue.

And lastly we have the spawns. These are pretty self explanatory, I think. Plus you're probably ready to start moving stuff around and adding things, so... here we go!
Step 5: Start Creating!
There are a couple things you need to make sure of before you start moving things.

1. Grid Snap On - All the prefabs were designed to snap to a .25 unit grid. So you need to make sure your grid snap settings are correct.


2. Enable Nav Mesh Draw - Open up the console by hitting the tilde key. Type in "navmeshdebugdrawmesh(1)" without quotes and hit enter. This will turn on navigation mesh drawing, allowing you to be certain the your prefabs are snapping together properly. When they line up, the purple lines will turn green.


Now you're all set up to start moving pieces around and adding more. You can copy and paste pieces by using ctrl-c and ctrl-v as well a shift-dragging objects to create duplicates. You can add objects from the described library above. There is also a limited amount of art assets you can add. I made the Sand, Stone and Sorties level with just a few art pieces and scaled and rotated them to build walls and platforms. I will be adding more art content in the future for you to add to further customize your level.

To test and publish your level, skip down to the bottom of the doc for info of how to do that.

This concludes the current revision of the "Basic" section of the guide.

PLEASE let me know if you have more questions, or trouble, or this guide is missing something and I will update!
***ADVANCED***
Getting Started - What You Will Need
To create content for Tower Wars, you will need the following:

  • Your preferred 3D package - We used 3DS Max 2011 to create Tower Wars levels and we export to Collada. This tutorial will be based in Max, but the process is similar in most 3D programs. You can use whatever 3D program you prefer as long as you can export to Collada files.

  • Collada Exporter - You will need to be able to export your layers as Collada files. This tutorial will use the OpenCOLLADA Exporter for 3DS Max. You can find the latest versions of the exporter for Max and Maya here: https://github.com/KhronosGroup/OpenCOLLADA/wiki/OpenCOLLADA-Tools Most 3D programs also have their own Collada export options already bult in. Learn more about Collada here: https://collada.org

  • Tower Wars Editor - You can find the Tower Wars Editor in your Tools section in your Steam Library. Be sure to install it in the same location as the Tower Wars game files.

  • You will also need my source 3DS Max level file used in this tutorial, which can be found here: {LINK REMOVED - Please don't spam, and be wary of scams.}http://goo.gl/AWo04 This location holds any assets I might upload, so if you request something and I oblige, you'll find it here. Recently Added: OBJ files optimized for Blender.

I'm willing to share any other requested assets that we have. Feel free to let me know what would be useful!
Creation - Art and Level File Breakdown
Let's look at the Level01.max file that was provided in the links above. This contains almost everything needed to create a proper level. If you open up your layers panel you'll see several layers. Each of these layers is meant to be exported to it's own DAE (Collada) file for import into the game using the layer name (e.g. everything on the layer named "Level01_nav" will be exported to a Collada file named "Level01_nav.dae").




Here's a brief description of what's contained on each layer. Each layer, and how to create it, will be described in detail in later sections:
  • Level01 - This is where all of core level art is contained for all versions of the levels (1v1, 2v2 and 3v3). Not everything you see in Battle Bluffs file is included here. There are some art touches that are added using the the Torque 3D editor such as waving foliage, water planes and other animated or dynamic objects.
  • Level01_1v1 - Level art that is only to be shown in the 1v1 version of the level. The art changes a bit in the spawn area for each version of the map, so different art is needed around the barracks to make or fill room, depending. Each version of the map (1v1, 2v2 and 3v3) are technically completely different Torque Level files. They are all essentially identincal but with a few objects swapped out for the player count adjustments, so we just keep those objects in a single 3DS max file and export them seperately.
  • Level01_2v2 - Level art that is only to be shown in the 2v2 version of the level.
  • Level01_3v3 - Level art that is only to be shown in the 3v3 version of the level.
  • Level01_cam - This is the collision plane for the camera look-at node. The camera is basically attached to a sphere that glides along this geo for a nice smooth camera transition between the various heights of a level.
  • Level01_col - This is the collision layer for the units. Without this, units will just fall through the art shown in the Level01 layer.
  • Level01_nav - This is the nav mesh for pathing. The purpose of nav mesh is to tell units where they are allowed to traverse. It's mainly used as connections between clusters of hexes. It floats above the unit collision by about 1 meter.
  • Level01_navTeamAMelee -The destination nav meshes for TeamA's melee units (attackers) Units will create a path from their position to their randomly chosen space in the destination mesh every time the landscape changed e.g. a tower is placed or removed.
  • Level01_navTeamARanged -The destination nav meshes for TeamA's ranged units (buffers).
  • Level01_navTeamASpawnPlayer0_1v1 -The spawn nav mesh for TeamA's only player in the 1v1 version of the map. When units are launched, they will spawn somewhere randomly within the spawn mesh. This could potentiall allow for units to spawn randomly in different areas (wink wink).
  • Level01_navTeamASpawnPlayer0_2v2 -The spawn nav mesh for TeamA's first player in the 2v2 version of this map.
  • Level01_navTeamASpawnPlayer0_3v3 -The spawn nav mesh for TeamA's first player in the 3v3 version of this map.
  • Level01_navTeamASpawnPlayer1_2v2 -The spawn nav mesh for TeamA's second player in the 2v2 version of this map.
  • Level01_navTeamASpawnPlayer1_3v3 -The spawn nav mesh for TeamA's second player in the 3v3 version of this map.
  • Level01_navTeamASpawnPlayer2_3v3 -The spawn nav mesh for TeamA's third player in the 3v3 version of this map.
  • Level01_navTeamBMelee -The destination nav meshes for TeamB's melee units (attackers).
  • Level01_navTeamBRanged -The destination nav meshes for TeamB's ranged units (buffers).
  • Level01_navTeamBSpawnPlayer0_1v1 -The spawn nav mesh for TeamB's only player in the 1v1 version of the map.
  • Level01_navTeamBSpawnPlayer0_2v2 -The spawn nav mesh for TeamB's first player in the 2v2 version of this map.
  • Level01_navTeamBSpawnPlayer0_3v3 -The spawn nav mesh for TeamB's first player in the 3v3 version of this map.
  • Level01_navTeamBSpawnPlayer1_2v2 -The spawn nav mesh for TeamB's second player in the 2v2 version of this map.
  • Level01_navTeamBSpawnPlayer1_3v3 -The spawn nav mesh for TeamB's second player in the 3v3 version of this map.
  • Level01_navTeamBSpawnPlayer2_3v3 -The spawn nav mesh for TeamB's third player in the 3v3 version of this map.
  • Level01_nav_1v1 - Nav mesh for 1v1 version of this map only. Just like the level art, the nav pieces are slightly different for each version of the map (1v1, 2v2 and 3v3).
  • Level01_nav_2v2 - Nav mesh for 2v2 version of this map only.
  • Level01_nav_3v3 - Nav mesh for 3v3 version of this map only.
  • references(do not export) - This is just a visual placeholder. The actual in-game hexes must be placed using the Torque 3D map editor. The position is a 1:1 translation of coordinates, so get your references exact and the nav mesh and hexes in the Torque 3D editor will line up exactly. This is the most tedious part.

Don't worry if some of this doesn't make any sense. Everything will be explained in greater detail in the following sections.
Creation - Hex Layout
To get started designing your level, you'll want to begin by playing around with your hex arrangement. The hexes on the references layer in the Level01.max file are there for that very purpose. I always begin by hiding everything but my reference layer and start moving hexes around until I get something I think is interesting and want to try out. It's important to have a basic plan before jumping into the world editor and dropping down hexes.

Some notes on hex arrangement:
  • Each player/team should have approximately 200 hexes to work with. Too few hexes and the game will end quicker, too many and the game may never end at all. This can vary depending on several factors but mostly hex cluster size and distance between hex clusters.
  • Obviously all Tower Wars maps are symmetrical. This is the only truly fair way to balance a map, but this is also not a rule. You can create an assymetrical map if you want, but I honestly don't know what will happen, and Mines won't generate properly as they look for symmetry when placing themselves.
  • Set your grid snap settings to 0.25 units. This allows for perfect alignment of hex edges which will be crucial when placing your hexes in the Torque 3D editor. We have a Max script we use that will quantize your selection to the nearest multiplication of 0.25 units. It's very handy to grab all of your hexes and run this this script to be sure every hex is aligned. You can find it here under "MaxScripts" {LINK REMOVED - Please don't spam, and be wary of scams.}http://goo.gl/AWo04 WARNING: It is a requirement that all hexes be snapped to a .25 units grid in order for your hexes to work correctly. If you're having crashes when you place a tower, or can't place a tower where you should be able to, check to make sure your coordinates for the hex are snapped. For exampe, GOOD: position = "15.5 251.75 10.25" BAD: position = "15.524 251.7268 10.1152"
  • Do not rotate your hexes! Never rotate the hexes as this will cause undesired results. There is a way to orient player towers the correct direction which will be covered later.

Once you have your hexes laid out, you can use this as the basis for all other pieces that need to come together.
Creation - Nav, Spawns and Destination Zones
The nav mesh is made up of the following elements:
  • Spawn Nav Mesh
  • Destination Nav Mesh
  • Basic Nav Mesh (travel)
  • Hex Nav Mesh (this is built into the hexes that you will place in the Torque 3D editor. There is no need to make nav mesh over the hexes).

The nav mesh is just geo that that floats about your level by approximately 1 unit. It has to cover any area you want a unit to be able to travel. In most Tower Wars levels it is used to create the pathways between hex cluster, but it doesn't have to be narrow as you see it in Battle Bluffs. Units will automatically calculate they shortest distance to their destination through the hex grid and nav meshes. Units spawn points and destinations are all determined by nav mesh pieces using naming convention.

To get started, create pathways where you want units to travel. Be sure to cover where you want units to spawn and how they will get to the castle destination rings. In the Level01 Max file, it looks like this:


I highly recommend you don't alter the existing destination mesh rings that go around the castle. It's best you move/rotate them to where you want your castle to be placed, but don't rename or recreate them. Destination mesh uses naming convention to spread the units evenly around the castle. Once units enter the destination mesh, they check to see how many units occupy the nav meshes starting with objects 1a and 1b. If they are full, they check the next available nav piece etc. until they find an empty spot. Any change to naming convention or layout of destination nav mesh can break things. So play around with this at your own risk!

Once you're finished creating all of your nav mesh connections, there are some steps to take to make sure it will work in-game:
  • You must make sure all nav mesh is triangulated.
  • Then (this is the last super tedious part, I think) you must cut up the nav mesh into convex objects. If you have any nav mesh pieces that are concave, you will have unit travel issues. The simplest way to make sure this works is to detach each triangle into it's own Max object as you can see I did with most (if not all) nav mesh in Battle Bluffs.
  • Name each object appropriately. The easiest way to do this is to use the Rename tool in Max. Select all of the travel nav mesh pieces (make sure you don't grab your destination mesh!) and use the Rename tool to rename every piece as "collision_X" with "X" being a number. Nav Mesh pieces will not work unless named this way.


The spawn meshes do not need any special naming convention other than to be called "collision_X". Your spawn mesh will be exported as a seperate object and assigned spawn duties in the Torque 3D editor. There is nothing special about it in Max.

In the end, just make sure all of your nav meshes are put on their correct Max layers as you can see in the Level01.max file. We will be exporting each layer as its own Collada file for import into the game.
Creation - Collision
There are two types of collision that your level will need: Unit collision and camera collision.

Unit collision for you level is pretty straightforward. It's nothing more than the collidable area that units walk on and where projectiles get destroyed. It does not have to be split up like nav, so therefore can be just 1 object. To create the collision for a level, I usually just take a copy of the nav mesh, merge it together, widen the pathways then add planes below the missing areas where the hexes and castles are. Collision should reside about 1 unit down from the nav mesh.

Then, for the camera collision, I take a copy of the unit collision, close in all the gaps and then extrude the walls up on the outside to create sort of an arena for the camera target to glide along.


Both unit and camera collision need to be named "collision_X" just like nav mesh. They do not however need to be triangulated or detached into convex objects, you can leave each one as a single object.
Creation - Art
The art for Tower Wars is created in the exact same manner as anything else created for Torque 3D. Creating assets for Torque is covered in their official documentation here: http://docs.garagegames.com/torque-3d/official/

If you can do it in Torque, it should work in Tower Wars. We didn't really remove or change any functionality from Torque, but just added to it.

***Remember! All image assets must be in dimensions that are powers of two, e.g. 128x128 or 512x64.***
Creation - Exporting
At this point, you should have all elements of a scene created in 3DS Max. Here comes some more tedium: the export process. Each Max layer needs to be exported to it's own Collada (*.DAE) file. The process goes something like this:

1. Hide all layers.
2. Unhide layer to be exported.
3. Copy layer name to your clipboard from the layer list.
4. Click on File, Export
5. Navigate to ..\Steam\steamapps\common\Tower Wars\art\Scenes\LEVELNAME (Create this folder if it does not exist).
6. Paste layer name from clipboard, choose OPENCollada (or whatever Collada plugin your are using) as the format.
7. Click Save.
8. Leave export settings at default (if using OPENCollada) and click OK. If you're using another exporter, you may need to play with some settings to get the right result, I'm not sure.
9. Hide current layer.
10. Go to step 2 and repeat until finished with all layers (except for hex references).

And that's it! You've created all of the pieces needed for your level. Now we'll move on to the Torque 3D editor to put these pieces together as a proper level.
Setup - Creating a New Level
Before you can begin importing your assets, you need to create a fresh level. Or, alternatively, you can load an existing level, do a save-as and then swap out items in that scene with your assets, which might be easier, but, for sake of this tutorial, we will walk through as if we were doing Level01.mis (Battle Bluffs) from scratch.

Begin by opening up the Torque 3D Launcher located here: <<<<<<<DIRECTORY HERE>>>>>>> Select "Empty Room" from the level list and click on "World Editor". It will take some time and load an empty room (with some Christmas trees if I recall). From there, click on File>New Level. Here you have a fresh blank level. Save your level as whatever you want to name it. There are a couple places you will have to specify how many players the map will support. The first way is level file naming convention. Use the following:
  • LEVELNAME - No tag is needed for 1 vs 1 maps.
  • LEVELNAME_2v2 - Add "_2v2" for 2 vs 2 maps.
  • LEVELNAME_3v3 - Add "_3v3" for 3 vs 3 maps.
Every Tower Wars Maps has each of these level variations per map, but you are not required to do so.

You've now successfully created your level and it's time to start importing the assets you've created!
Setup - Importing Basic Assets
This tutorial will not be covering the basics of Torque 3D, as you can get all of that information at http://www.garagegames.com/products/torque-3d. I will do my best to point to relevant resources when I think of it.

At this point, you have all of your assets exported to Collada files. Now we will begin loading those files into Torque 3D. Some objects are just a simple import, and others will require some special settings. You will go down the list importing your objects similar to the way you exported your layers from Max. To start, open the Object Editor (shortcut: F1) and navigate to your level assets as shown here.
You should see all of the Collada files you exported from Max in this list. Not all objects will be imported the same way. Use the following steps to import Level01, Level01_1v1, Level01_cam and Level01_col. The nav mesh import will be covered later.

1. Double-click the asset to drop it into the scene. You will get a dialog box. Click OK to accept the default values and your object will be dropped into the scene in front of the camera.
2. With your object selected, in the Inspector you will want to center it at origin (to match it's position in the Max scene) by setting it's position to "0 0 0".

3. Repeat for the rest of the assets I listed above.

***The cam and col objects are going to be invisible because they are pure collision with no visible geo. If you can see them, then you probably did something wrong with the object naming in Max. Check to make sure the object names are "collision_X"

A couple more steps before moving on to nav mesh: we must change the collision type of Level01_cam so only the camera look-at node will collide with it, and not units and projectiles. To do this we have to go into the Shape Editor and load up our Level01_cam object from the Library tab. You will probably get the import dialogue again, just accept the default values. Then go to the Detail tab under the Properties panel, click on "collision-2" in the hierarchy and in then at the bottom rename it to "LOS" as follows:

Don't forget to click on the disk icon to save your changes.

Then we must also rename the meshes themselves in Level01_col so that it becomes a physics collider. To do this, open up Level01_col in the shape editor just as you did with Level01_cam. Navigate to the Detail tab under the Properties panel, click on the arrow by "collision-2" in the hierarchy to drop down the list of meshes (collision_1, collision_2 etc.). Then select each one and replace "collision" with "colmesh" for each like so:

Again, don't forget to click on the disk icon to save your changes.

Now, on to importing your nav mesh!
Setup - Importing Nav Mesh
The steps to import the nav mesh are a little different. The nav mesh needs to be placed as a special object called "Nav Mesh" located undel the "Level" tab in the Library as shown here:

Double-click the Nav Mesh object to create one in the scene. You will get a pop-up asking you to name the object and choose a shape file:

This is where naming convention is very important. Naming convention is what determines spawn points and destination meshes. Name your object according to the following naming convention, then choose the corresponsing Collada file as your shape file.
  • SpawnTeamAPlayer0 - Name of the Nav Mesh object you want TeamA (the red team) to spawn from.
  • SpawnTeamBPlayer0 - Name of the Nav Mesh object you want TeamB (the blue team) to spawn from.
  • DestinationTeamAMelee - Name of the Nav Mesh object that you want TeamA melee units to travel to (surrounding TeamB's castle).
  • DestinationTeamARanged - Name of the Nav Mesh object that you want TeamA ranged/support units to travel to (surrounding TeamB's castle).
  • DestinationTeamBMelee - Name of the Nav Mesh object that you want TeamB melee units to travel to (surrounding TeamA's castle).
  • DestinationTeamBRanged - Name of the Nav Mesh object that you want TeamB ranged/support units to travel to (surrounding TeamA's castle).
  • theNavMesh - Name of the travel Nav Mesh object, this is not a spawn or destination.
Now, just as you did with the previous assets you imported, you will need to center all of these object to the origin by setting their position to "0 0 0". Nav mesh should also be invsible at this point as it is purely collision as well.

Now, just as we did with the Level01_cam collision in the previous section, we need to do the same to all of the nav mesh Collada files as well. Go into the Shape Editor and load up our Level01_nav object from the Library tab. You will probably get the import dialogue again, just accept the default values. Then go to the Detail tab under the Properties panel, click on "collision-2" in the hierarchy and in then at the bottom rename it to "LOS" as follows:

Continue through and apply the LOS change to all nav meshes in the list.
Setup - Hex Placement
To place your first Hex, open the Library in the Object Editor and in the Level Panel you will find a "Hex" object.

Double click this to place the Hex. A dialog box will show up asking for an Object Name, Shape Nav File, Shape Art File and 3 additional checkboxes. We'll leave most of this alone for this tutorial. Object Name must follow the naming convention for hexes. Let's start with PathNodeA1 ("A" being for Team A). PathNodeA is a prefix and can be followed by whatever you want. I usually just number them. The enemy team will use PathNodeB1. For the Shape Nav File, we will choose ..\Steam\steamapps\common\Tower Wars\art\GameObjects\HexGrid\HexGrid.dae. Leave Shape Art File blank, uncheck all the checkboxes and click "Create New". Those additional options are covered in the Basic section above.

Your first Hex has been created and placed in front of the camera. You will not be able to see any geo because this purely a collision file with functionality built in for tower building. In order to see the object, you have to enable visible nav meshes. To do this, press ` to bring down the console and type in "navmeshdebugdrawmesh(1)" without quotes. This will cause the editor to draw nav meshes, which are built into each hex. It should now look something like this:
You will need enable the nav mesh draw mode in order to see these meshes every time you run the editor.

Remember to set your grid snap settings to 0.25. This will ensure that the hex grid will line up perfectly and still give you enough granularity to put hexes wherever you may need them. This also helps make sure that they line up with you hex references in your Max file, and therefor will sync up perfectly with your nav mesh. I will repeat from earlier - WARNING: It is a requirement that all hexes be snapped to a .25 units grid in order for your hexes to work correctly. If you're having crashes when you place a tower, or can't place a tower where you should be able to, check to make sure your coordinates for the hex are snapped. For exampe, GOOD: position = "15.5 251.75 10.25" BAD: position = "15.524 251.7268 10.1152"


You can move the hex to where you want and copy/paste it by shift-dragging to make new hexes. It is also important that you name your hexes and put them in simgroups using the following structure and naming convention:
You'll notice that when you align hexes and/or nav mesh next to each other, at least one of the edges will turn from pink to green. This mean that the nav meshes line up close enough for units to understand that they are allowed to go from one mesh to the other. If the edges do not turn green, the pieces won't be recognized as a connection and units will not cross that line.

When you're all finished placing your hexes, make sure to organize them by cluster in the Scene Tree using the naming convention you see here.


Now that you have all the hexes placed, in theory you should have an exact translation of your reference hexes in 3DS Max to Torque 3D.

Mines are generated using the hex naming convention. So in order for mines to be randomly generated for your map, the PathNodeA and PathNodeB hexes must be mirrored e.g. PathNodeA003 must be mirrored with PathNodeB003 in order to be considered for mine placement. You can use this convention to force mines to spawn explcitly where you want, or even randomly withing only a certain section.
Setup - Structures
Next, we will place the Barracks and the Castles. These are nothing more than predefined objects that you place from the Library tab (like you did with Hexes and Nav Mesh).


Starting with Barracks, you will place as many as needed for how many players your map will support using the following naming convention, then place them over their corresponding spawn nav mesh:
  • Barracks_TeamAPlayer0 - Player 1 barracks on the red team.
  • Barracks_TeamAPlayer1 - Player 2 barracks on the red team.
  • Barracks_TeamAPlayer2 - Player 3 barracks on the red team.
  • Barracks_TeamBPlayer0 - Player 1 barracks on the blue team.
  • Barracks_TeamBPlayer1 - Player 2 barracks on the blue team.
  • Barracks_TeamBPlayer2 - Player 3 barracks on the blue team.
There should only be one Data Block option called "DefaultBarracksData".

For castle placement, we place them in the same way using the following naming convention:
  • CastleTeamA - The red castle.
  • CastleTeamB - The blue castle.
Under Data Block, choose either "RedCastleData" or "BlueCastleData" depending on the castle.

***NOTICE - There is an error where we have the wrong Data Blocks set up for the castle. They are accidentally reversed. Choose "RedCastleData" for your blue castle (TeamB) and "BlueCastleData" for your red castle (TeamA).*** (We like to make things as confusing as possible)

Once your castles are in the scene, move them inside their corresponding destination nav meshes. The units just need to be near the castle to start doing damage.
Setup - Triggers
At this point you should have all of the major elements of you map! All that's left now are some triggers to specify where certain game events happen such as when units should start gaining BP and where the Equine Subterfuge Transport will stop to let out the units it contains.

Units do not need to remain inside a Trigger Zone for the effects of the Trigger to remain on them. When a unit enters a zone, it triggers the effect on itself and keeps that effect until entering another zone that would alter the effect.

Tower Wars levels are set up with the current trigger zones:
  • EnterSafeZoneTrigger - Units that have entered this zone will NOT be fired upon by towers. This does not affect tower tracking.
  • LeaveSafeZoneTrigger - Units that have entered this zone WILL be fired upon by towers. This does not affect tower tracking.
  • EnterUntrackableZoneTrigger - Units that have entered this zone will NOT be tracked by towers.
  • LeaveUntrackableZoneTrigger - Units that have entered this zone WILL be tracked by towers.
  • ExperienceGainTrigger - Once units enter this Trigger Zone, they will begin gaining BP.
  • TrojanHorseDeploymentTrigger - This Zone has grown into more of an "enter castle" Trigger. It's used for things like making the Equine Subterfuge Transport stop and dump it's units and triggering the Mortimer to stand up and walk. It also means that units are now a potential target for the castle turrets.
You can place these however you want, but they can adversely affect the way a map plays out. Generally you want units to be safe and untrackable when they spawn, then allow them to be tracked for a bit before making them unsafe. We also line up the unsafe trigger with BP gain. Then you also want units to become safe and untrackable when they get near the castle unless you want to allow catapults to bombard units that are attacking the castle, but this make "leaking" units less of a penalty. Anyway, feel free to play around with this, it can have widely varying effects.

To place a Trigger Zone, open up the Level tab under Library and double-click on "Trigger".

A dialogue box with come up asking for a name and Data Block. The name is not important for Triggers to be recognized by the game. All functions are determined by the Data Block chosen. once you create the trigger, you can move and scale it as needed.
Setup - Other Art
All of the art tools that Torque offers will work in Tower Wars. We use water blocks, the forest editor, particles, wind emitters, postfx and all kinds of fun things to get our levels looking the way they do. All of that stuff is covered over at http://www.garagegames.com/products/torque-3d. I'll be happy to answer any specific questions I can, but the scope of this doc will not cover how to make art for Torque3D since it would be redundant.

Have fun and be creative!
Setup - Nodes
There are a few final items to place down to get the rest of the functionality of your level. We need to place the nodes that show where the camera will look when opening the tech trees as well as the start and end points for the unit Hint Path. These are all placed using SpawnSpheres (called Player Drop Point in the Library) with naming convention.


Double click on the Player Drop Point to create one in your scene and use the following naming convention for their functions (leave all other values at default):
  • Cam_CastleA - This is where the camera will center when opening the castle upgrades panel if you are on the red team.
  • Cam_CastleB - This is where the camera will center when opening the castle upgrades panel if you are on the blue team.
  • Cam_BarracksA - This is where the lens in the UI will center when opening the barracks upgrades panel if you are on the red team.
  • Cam_BarracksB - This is where the lens in the UI will center when opening the barracks upgrades panel if you are on the blue team.
  • PathDraw_TeamA_Start - This is where the Hint Path will start for the red team line. It must be placed slightly above the nav mesh near the spawn area. It does not have to be placed over the spawn mesh.
  • PathDraw_TeamA_Finish - This is where the Hint Path will end for the red team. It also must be placed over the nav mesh, but not necesarily over the destination mesh.
  • PathDraw_TeamB_Start - This is where the Hint Path will start for the blue team line. It must be placed slightly above the nav mesh near the spawn area. It does not have to be placed over the spawn mesh.
  • PathDraw_TeamB_Finish - This is where the Hint Path will end for the blue team. It also must be placed over the nav mesh, but not necesarily over the destination mesh.
Setup - Final Settings
You will need to add a few dynamic fields to your "theLevelInfo" object in your scene. Every new scene comes with this and it should be at the top of your scene tree. Scroll down to the bottom and under dynamic field there is a green circle with a "+" in it. Click it to add a field. You will need to add the following fields and values:
  • LevelName = "Level01" (has to match your level file save name)
  • barracksTechTreeViewFov = "60" (the fov of the camera when it snaps to look at the barracks)
  • barracksTechTreeViewTether = "145" (the distance of the camera when it snaps to look at the barracks)
  • castleTechTreeViewFov = "45" (the fov of the camera when it snaps to look at the castle)
  • castleTechTreeViewTether = "100" (the distance of the camera when it snaps to look at the castle)
  • maxPlayers = "2" (needs to match the level save naming convention for player cap)
  • towerInitialRotation0 = "3" (this determines the direction towers face when placed or upgraded. make sure you set this correctly for each team or you could put one team at a strong disadvantage)
  • towerInitialRotation1 = "3" (this determines the direction towers face when placed or upgraded. make sure you set this correctly for each team or you could put one team at a strong disadvantage)


Using the PostFX Manager in Torque, you can create some drastically different looks to your levels. If you want it to match other Tower Wars levels, simply copy and paste a postfxpreset.cs file from another level and rename to your level. They reside in the same folder as all of the level files. PostFX files will be applied to your scene as long as the names are identical. You can also load an existing PostFX file into the PostFX Manager, make some tweaks and save it out as a file for your level as well.

You need to add a level image for the UI, or you will get the default "?" image. To do this, just put your image here ..\Steam\steamapps\common\Tower Wars\art\gui\LevelImages\ and save as a png with the same name as your level. You can use the existing png's as a template for dimensions.

And lastly, in order to get a cover image for your mod in Steam, you will need to put a LEVELNAME.png file in your levels folder that will automatically get uploaded when you publish.

I think that's basically everything!
Publishing and Testing Your Level
You can test your work-in-progress level any time by hitting F11. Once the game is running, you may need to hit alt-C a couple times to toggle to the in-game camera. Once there, open the console by pressing "`" and type in "esb". This will allow you to send units and build towers anywhere without another player on the board. You can use this to test your level and make sure everything is working. You can enable the paths that your units will take by typing "navmeshdebugdrawpath(1)" to help you find problem areas. Other useful console commands are listed in the following section.

When you're ready to try your level with a friend, you can publish to Steam Workshop by clicking on File>Publish Level! After reviewing and accepting the terms, your level will be packaged up and uploaded to Steam. You will be brought to the page for your level where you can change the details and make it private if you like. This level will now show up in your level list as a "mod" when you host a match. If your friend does not have the level, they will be prompted to download.
Console Commands
Common Console Commands

disableTeamHex(1)
disable team hex checks, also makes the game think there are 2 players so the round begins when playing alone. Also enables friendly fire and infinite castle health.

enableZeroCost(1)
everything is free!

disableManualQueueTimer(1)
disables the manual queue timer so units can be sent as soon as the current queue is emptied.

enableSandbox(1) or esb
shortcut command that executes disableTeamHex, enableZeroCost and disableManualQueueTimer.

navMeshDebugDrawMesh(1)
draw nav meshes

navMeshDebugDrawPath(1)
draw AI paths

physicsDebugDraw(1)
draw collision volumes
Final Comments
I will be updating this guide a lot over the coming weeks. Please leave feedback and let me know what areas are confusing or have errors, or where formatting could be better. Anything, really. There's a lot to cover and I'm doing it from memory, so there are going to be some snags.

I will also be planning some Google Hangouts to help answer questions live and walk through some things that you guys might be wanting to know. Please let me know if this is interesting/useful to you and I'll set something up.

Good luck! I'm looking forward to seeing your creations!

Tom
*NEW* How-To Videos!
Tower Wars Editing - Creating and Duplicating Hexes
46 Comments
< >
iwotastic Jun 29 @ 5:31pm 
Please port the editor to mac.
Direncius Jan 5 @ 6:15am 
First of all, thanks for the guide. Second, i edited the already existing CoOp map because there were some things which i and some friends didnt like. After editing and publishing i couldnt find the map under CoOp maps but under the other multiplayer options. How can i setup the map as a CoOp map?
DanOtaku Dec 26, 2013 @ 7:54pm 
esta genial, aun que solo esta en ingles .-.
Etc_Guy Nov 9, 2013 @ 11:42am 
I've looked at the tools, but it's not avaible on mac. Is the editor planned to be ported on mac?
[X3M][soGooD] Jul 14, 2013 @ 4:07am 
Thumbs up ! Nice Guide !
ReturneR Jun 10, 2013 @ 9:05pm 
СПАСИБО БОЛЬШОЕ
The doctor is in May 16, 2013 @ 4:25pm 
wow thanks!
SwogDog  [author] May 3, 2013 @ 2:18pm 
Hmm, you know, I don't think there is. We've always tested with a friend.
Shutter Apr 30, 2013 @ 8:30pm 
Quick question! Is there a way to switch to red or blue player 2 within the editor so I can test their spawns?
SwogDog  [author] Apr 20, 2013 @ 9:57pm 
-added warning - make sure all textures are powers of two
-added warning - make sure level files are saved only in the level folder