Skip to content

Map development

Alex Kowald edited this page Feb 1, 2016 · 15 revisions

This page serves as a guide for map creators. If you are a server operator looking to add a pre-existing custom map to your STT server, check out the FAQ page instead.

The Basics & Testing Your Map

STT mostly works on its own on any Payload or Payload Race map. So if you make a map that works on either of these gamemodes, it can be played on STT too.

When you're designing your map, keep in mind that any tight areas you create could become difficult to navigate as a Giant, and the Tank may block off these areas entirely. In order to get a feel for how moving around your map is like as a Giant, you can type this in console during testing (you will need to set sv_cheats to 1 first):

ent_fire player setmodelscale 1.75

This command will make you as large as a Giant, which comes in handy for checking if Giants can go through certain areas.

You can also check to see if a Tank can move through your map without getting stuck somewhere. In order to do this, you will need to remove the Payload cart first, since it will destroy any Tanks you spawn if STT isn't running on your server. Simply look at the Payload and type the following in console:

ent_remove

The Payload model may still be there, but it shouldn't destroy spawned Tanks anymore. With that out of the way, here's how you can spawn a Tank:

ent_create tank_boss

You will then be able to see how a Tank fares on your Payload track. Note that this method can't be used to test other stages on a multi-stage map, but is still useful for quickly identifying any trouble spots for single stage Payload maps.

Fixing Tank Trouble Spots

The Tank may get stuck in certain areas. Even though STT will try to correct this on its own when detected, it's highly recommended that you implement a fix yourself to prevent any issues.

If you discover a spot where the Tank gets stuck at in your map, here's how to fix it in Hammer:

  1. Create a logic_relay named stt_parent_tank

  2. When the Tank gets near the trouble spot, send the FireUser3 input to the above relay in order to apply the fix. This will parent the BLU Tank to the invisible Payload cart, which then allows it to proceed without getting stuck in a tight area. It also will no longer fall through dynamic surfaces for as long as it's parented, such as moving bridges or elevators.

  3. When the Tank has gotten passed the trouble spot, send the FireUser4 input to the stt_parent_tank relay in order to unparent the BLU tank. It's important to do this, since parenting the Tank comes with some undesirable side effects, such as causing players to "stick" to the Tank.

  4. For Payload Race, the above still applies. In order to parent the RED Tank, you can use the FireUser1 input to the stt_parent_tank relay. To unparent the RED Tank, you can use the FireUser2 input.

Adding or removing Tank health

Use the AddHealth input on the tank_boss to increase the Tank's health up to its max health. Use the RemoveHealth input on the tank_boss to decrease the Tank's health. Set a high enough number (e.g. 2000000) to trigger the destruction of the Tank. As an entity filter, you may use the tank_boss classname or the targetname stt_tank_red or stt_tank_blu.

Other STT Specific Information

Entities with specific names can be used to allow for further interaction between the mapper and STT. The required entity classname is mentioned in parentheses if the entity in question is supposed to be created by the map.

If the entity is spawned automatically by STT, then you don't need to include it in your map. Instead, you simply send any inputs you want to the provided targetname. Hammer will see this as a broken I/O connection, but it will still work correctly.

  • stt_is_enabled (logic_relay)

    • Relays with this name will be triggered on round active (as soon as players can move) if STT is enabled.
  • stt_intermission_started (logic_relay)

    * Relays with this name will be triggered when Intermission begins. In Payload, this is when the Tank dies, and in Payload Race, it's when the first wave of Giants are spawned and the Tanks stop.
    
  • stt_cart_prop (Typically prop_physics)

    * A prop with this name will be made invisible automatically. Intended to be used for maps that use a non-standard model for the Payload cart. If you use a stock Payload model for your cart, it will be made invisible automatically, even if you don't name it this.
    
  • stt_overtime_timer (team_round_timer, Spawned by STT)

    • In Payload, this timer controls how much time the robots have once the Giant is spawned in. In Payload Race, this timer controls how much time there is before going into Overtime, and is enabled after the final wave of Giants have spawned.
  • stt_giant_wave_timer (team_round_timer, Spawned by STT)

    • Used only in Payload Race. Controls how much time there is left before the next wave of Giants spawn.
  • stt_godmode_tank (logic_relay)

    • This relay lets the map control when the Tank takes damage. To enable godmode on the BLU tank, fire the FireUser3 input. To remove godmode on the BLU tank, fire the FireUser4 input. To enable godmode on the RED tank, fire the FireUser1 input. To remove godmode on the RED tank, fire the FireUser2 input.

In addition to these features, there is a way mappers can set any STT related cvar without the use of point_servercommand, along with another way to specify what cart models need to be made invisible. This is done by including a CFG file with your map, an example of this is in the section below.

Also worth mentioning, STT will look for an existing game_round_win for RED team in Payload maps. If one exists, it will use that to end the round. This means that any OnRoundWin outputs you may have for such an entity will still work in STT.

Example Map

Below are links to an example on how to set up a Payload map for STT. It makes use of all of the above applicable features, and the provided .vmf has comments on relevant entities that can help you understand how things work.

If you are a map creator and would like additional ways for mappers to interact with STT, feel free to let us know by leaving a comment in the steam group.