Team Fortress 2

Team Fortress 2

Not enough ratings
Mapping for Parkour Fortress
By <#F00>Serafeline and 6 collaborators
This is a guide for the specific things you may need to know when creating your first Parkour Fortress map!
3
   
Award
Favorite
Favorited
Unfavorite
Introduction & Credits
Welcome! This is going to be more of a reference manual for how to map for Parkour Fortress, if you don't know how to make maps for Team Fortress 2, I recommend checking out TopHattWaffle's Hammer Tutorial V2, followed by [UEAK]Crash's How to Make TF2 Maps series.

This guide is accurate as of August 15, 2020, but is subject to change as features get added or changed. Values are generally estimates and not exact, this is why testing is super important.

You may be interested in seeing some existing maps to get some inspiration, so if you're interesting in playing, join our TF2 server at us.parkour.tf:27015. You will also want to join our Discord[discord.gg]. The only way to test your map with the gamemode is to contact one of our developers to upload it to the developer server, where you'll be able to test. If you need this often, we will give you access to upload maps yourself. There is also a Map Testers role available, which can be pinged to get players onto the developer's server to test your map.

Credits:
Screwdriver - Wrote this guide
Sunmane aka JJ - Wrote the original mapping guide on the redsun.tf forums that I'm basing this one off of.
Nami - Lots of the links and information in our #mapping-info channel on discord.
Lucas Nimny - Some tips in the PF discord.
TheDeathly, malt, tordana - ReSurfed timer guidance.
Resources
Parkour Fortress Resources
The original PF SDK that was distributed by Mecha The Slag can be found here[drive.google.com]. However, these models can be prone to errors because of cache corruption. We recommend not using these models, but using these instead[github.com]. Extract them into your TF2 models folder.

Important Note: Due to a current bug you may need to make a copy of the props at models/models for it to compile correctly, We're working on that one.

We do encourage you to use different assets than those provided if at all possible, while they're very notable constants throughout PF maps, creativity in your theme is always a good thing.

Custom Prop Resources
https://tf2maps.net/downloads/tf2-emporium-vehicle-prop-pack.440/ - TF2 Emporium's Vehicle Prop Pack.
https://tf2maps.net/threads/bulletcrops-content-pack.36675/ - The Bullet Crops Content Pack, mostly nautical/oceanic props and textures.
https://tf2maps.net/downloads/urbanbrook-asset-pack.7156/ - UrbanBrook Asset Pack, South Asia-esque assets, mostly models.
https://tf2maps.net/downloads/fuzzys-tf2-urban-texture-pack-72-hour-jam.5165/ - Fuzzy's TF2 Urban Texture Pack.
https://tf2maps.net/downloads/popcorn-ceiling-and-drywall.6932/ - Drywall and Popcorn-texture ceiling.
https://gamebanana.com/textures/4138 - Skyppy's Misc Pack, lots of great textures in here. There are other packs on Skyppy's page as well worth looking at.

https://construction.tf2maps.net/ - Construction Pack
https://japan.tf2maps.net/ - Japan Pack
https://swamp.tf2maps.net/ - Swamp Pack
http://frontline.tf/pack.html - Frontline Pack

Stock Prop Resources
https://tf2maps.net/downloads/ultimate-mapping-resource-pack.510/ - ABS TF2 Mapping Resource Pack (Here[parkour.tf]'s a version with only the Urban props in the prop library)
https://tf2maps.net/downloads/mercenary-park-prop-library.5434/ - Prop Library for Mercenary Park Props
https://tf2maps.net/threads/moonbase-asteroid-prop-library.34523/ - Prop Library for Moonbase/Asteroid Props
https://tf2maps.net/threads/valve-maps-decompiled.5952/ - Decompiled Valve Maps
Pipes, Doors, Ziplines, and more!
Climbable Pipes
Pipes can be a little tricky to get perfect, but let's get started. Here I've placed down our reduxsource pipe prop on a wall.

Make sure that the collisions are disabled by setting "Collisions" to "None" in the properties of the prop!

Note: You don't need the prop at all if you just want a climbable section, you can use a different prop or no prop at all as long as there aren't any collisions in or within 32 units of the center of the trigger; speaking of...

The trigger_multiple can be placed like so:

You MUST name the trigger "climbable" for it to be detected as a pipe. The Origin point, shown in hammer as blue circle, must be at the center of the trigger. The blue circle's position is what determines the Z axis for player movement along the trigger.

Players in death-by-fall cannot mount climbable triggers.

Doors
Doors are a fairly controversial map object, and we recommend limiting your usage of doors as much as possible. That said, here's how to add them to your map: Simply place a prop_door_rotating with the correct model, models\reduxsource\door_standard_static.mdl. That's all it takes!

Ziplines
To create a zipline, simply create a move_rope entity, and set its next keyframe to a valid keyframe_rope entity. This will draw a line between the two to be used as a zipline. The Zipline Tower prop is optional. You start movement at the move_rope and move toward the keyframe_rope. Ziplines can't be under 400 units long, and cannot be mounted when a player is in death-by-fall. As of The Renovations Update, you can now link ziplines together, by setting another keyframe_rope destination.

Note: Having the unbroken word "ornament" within your rope entity name (example: ornament-rope, ornament_rope) will not mark the rope as a zipline. This will allow for decorative ropes to be used.

Grindable Rails
Grindable Rails are currently an experimental feature, only available on select maps for staff members only. However, it is now available for use in the main plugin as of The Renovations Update. Rails should use a blue, glowing, env_sprite with "World Space Glow" set to mark the start, and a red one to mark the finish. This is purely aesthetic but strong recommended. Rails themselves are made by creating a move_rope and a keyframe_rope, and successive keyframe_rope entities for different points along the rail. The keyframe_rope and move_rope entities must both contain "rail" in their targetnames.

Advanced
It is possible, albeit very tricky, to create perfectly smooth 90 degree circular quadrants as rail segments. These can also have varying height, which means they can be used to create a spiral. To do so, you must use three entities. First, make a normal line segment. This line segment must serve as a hypotenuse for a standard 45-45-90 right triangle. At the right angle to this triangle, create a new keyframe_rope entity with the word "rotator" somewhere in the name, and set its next keyframe to the initial keyframe_rope or move_rope entity in the hypotenuse. Next, set your rope's width to "0" for both segments that you've created, and create brushwork to mimic a circular rail for your segment. Note that while you will see a rope going from the rotator to the start of the segment, this rope will do nothing in-game as it only serves to provide the plugin with a radius for your circular segment. Multiple rotators may be placed in the exact same location, however, each must have a different starting point, which can be the ending point of another segment, circular or not.

Launch pads and Springboards
These are also both rather controversial. Launch pads use trigger_catapult, which automatically catapults the player to a location. I won't go in-depth on how these work; it's recommended you avoid these unless absolutely necessary. Springboards use an up-facing trigger_push, and for similar reasons I recommend against their usage. If you do use them, make sure a ledge grab cannot be performed within the trigger_push so that it can't be exploited for very large jumps.

Note for maps with custom music
Maps with custom music will now display a custom warning to players who load into a map about preventing overlap between the Parkour Fortress music and Custom map music.

To have this message appear on your map, you must add an "info_target" entity with a name of "pf_musicplayer".

Some Extra Features
In the next section you'll learn about Timer Zones, which are named triggers with various abilities, usually used for the Timer. However, there are some named triggers which are not part of the timer, meaning they work on both regular and combat maps.

A trigger named "lockcontrols" will lock a players movement controls, and "unlockcontrols" will unlock them. These are useful if you plan on using a launch pad. Death or restarts will automatically unlock a player, however, a player will get stuck if they don't make it to an unlock controls trigger after locking.

Triggers named "nofalldamage" will prevent fall damage and death-by-fall within the trigger. If players are already in death-by-fall before entering the trigger, their death-by-fall state will be reset.

Triggers with "giveboost" in their name will grant boost to players inside the trigger as long as they are inside the trigger. When leaving the trigger, the boost will not be removed.

Triggers with "infinitejump" in their name will allow players inside to be granted infinite double jumps, along with a 1.5x jump height boost. Upon leaving the trigger, the player will can no longer jump infinitely, along with their jump height boost being revoked.

A trigger named "accelerate###" or "airaccelerate###" where "###" is replaced by a numerical value will set the sv_accelerate or sv_airaccelerate value for the player(s) who touch it. Only use this if you know exactly what the consequences may be. This can allow for certain parts of your map to be surf-able or to allow for weirder mechanics with certain movements, such as sliding. If you use this, remember to set players back to their default value at all destinations, such as spawn and all bonus or stage spawns using the same triggers. The default value for both is 10, so the correct trigger name would be "accelerate10" or "airaccelerate10".
Setting up the Timer
Types of Timed Maps
There are 2 types of Timed maps, Staged and Linear. Staged maps have multiple different stages, some of which have different themes and areas. Each stage stores its own time, and can be teleported to, however times for the map itself are registered when a user does each stage in sequence. Linear maps are basically just a single, long stage. The majority of PF maps are Linear maps.

Note: The timer should support a third type of map, called Staged (Hub), which has a "Hub Zone" that allows for all stages to be cleared in any order rather than sequentially for a map completion. However as of right now, this feature isn't functional.

Zones for Linear Maps
For a Linear map, you need three different types of triggers for the map to work properly with the timer: Start Zone, End Zone, and Checkpoint Zone. All triggers use trigger_multiple.

The Start Zone is an area in which the player should spawn or otherwise begin the map, as the timer begins as soon as the player leaves this trigger. Actions cannot be performed while in this zone, so place it wisely. Name this zone "start_zone". ("checkpoint_0" is also a valid name, but let's keep it simple please)

The Checkpoint Zones are areas within the map where a split is taken for the current time. A player must pass through every checkpoint to beat a Linear map, and every Linear map must have at least one checkpoint. Name these zones "checkpoint_#", where # is replaced by the number for your checkpoint, starting at 1. I would recommend not to have too many checkpoints, as well as only placing them in essential, un-skippable points of your map. You may have multiple triggers with the same checkpoint name, and they should count as the same checkpoint.

The End Zone is the area in which the player will end their timed run. Name this zone "end_zone".

Zones for Staged Maps
For a staged map, the only two zones you need to worry about are the Stage Start Zone and Stage End Zone.

The Stage Start Zone is equivalent to a regular start zone, however, it is named "stage#_start" where # is replaced by the stage number.

The Stage End Zone, just like the start zone, is equivalent to an end zone but for the current stage. It is named "stage#_end" where # is replaced by the stage number.

The first Stage Start Zone and last Stage End Zone count as the starting and ending zones for the map as a whole. Checkpoint Zones do not work on staged maps.

Zones for Bonus Stages
Both types of maps can have Bonus Stages, which are basically side stages that can be accessed by using the "sm_bonus #" command, These stages are typically harder or otherwise have gimmicks on them, and do not count for regular map completion. However, they do count for overall completion.

These stages have two types of Zones, Bonus Start Zone and Bonus End Zone. These are identical to the Stage zones, but are named "bonus#_start" and "bonus#_end" respectively, where the # is the number of the bonus.

Other Zones
The No Jump Zone will prevent a player from jumping within the zone. These are named "nojump".

The Next Stage Zone will automatically teleport a player to the start point for the next stage. These are named "nextstage".

The To Stage Zone and To Bonus Zone will automatically teleport a player to the start point for a given stage or bonus. These are named "tostage #" and "tobonus #". (Note: These use spaces, not underscores. I will likely fix these to use underscores at a later date.)

The Restart Zone and Teleport Zone will teleport the player to the map's restart point, or, in the case of the Teleport Zone, the stage start point on a staged map. These are named "restart" and "tele" respectively.

The Max Velocity Zone can limit the max velocity within the zone. This hasn't been tested in Parkour Fortress. It is named "maxvel #" where # is replaced by the integer value of the player's maximum allowed speed.
Note for SLAG PF Mappers
The current version of the gamemode uses slightly different entities than the original PF.
This version of the gamemode does not make use of info_teleport_destination named "parkour_timedrun" for denoting whether a map is a PvP map or not. It also does not recognize the "goal" trigger.
Combat Maps
This section is reserved for our PvP update. Any information for PvP related entities will be put here.
Movements Reference
The following is a reference of movements in Parkour Fortress.

Mapper-defined Actions/Movements
Pipe Climbing
Also Known As: Pipes, Ladders, Ladder Climbing

Description
Pipe climbing allows for players to follow the Z-axis of a "climbable" trigger.
Mount Conditions
  • Enter the trigger in any state other than death-by-fall
Dismount Conditions
  • Reach the top of the trigger and be thrown off
  • Reach the bottom of the trigger and land
  • Jump at any point while on the trigger
  • Hold crouch while on the trigger (Letting go may remount the player)
  • Restart command, death, disconnect

Doors & Door-boosting
Also Known As: Doorboosting, Doorslam

Description
Doors are a map feature where a player can burst through a door and gain speed. If a player times a jump correctly after hitting a door, they perform a door-boost. A player can crouch in mid-air during the door-boost to gain more air-time.
Mount Conditions (Door-boost)
  • Jump within a few ticks of hitting a door.
Dismount Conditions (Door-boost)
  • Land on the ground
  • Restart command, death, disconnect

Ziplining
Also Known As: Zipwire, Ropes

Description
Ziplines are a map feature in which a player will go from the start to the end of a rope, gaining speed as they go. Ziplines sometimes start at the top of a zipline tower.
Mount Conditions
  • Touching the rope (As long as you aren't on death-by-fall, zipline cooldown, or have fast downward velocity)
Dismount Conditions
  • Getting to the end of the rope
  • Crouching off of the rope
  • Restart command, death, disconnect

All Other Movements

Long-jump
Also Known As: Longjump, Leap, Leap-jump, Leapjump

Description
This allows the player to sacrifice their speed-boost in order to jump a large distance forward.
Mount Conditions
  • Alt-attack while in speed-boosted state
Dismount Conditions
  • Landing
  • Restart command, death, disconnect

Roll
Also Known As: Crouch-rolling

Description
This prevents the player, in some cases, from being stunned or taking fall damage on a long fall.
Mount Conditions
  • Fall from a specific height and hit crouch at any point in mid-air
Dismount Conditions
  • Hit the ground and roll
  • Hit the ground from too high a distance and get stunned/take fall damage
  • Restart command, death, disconnect

Slide
Also Known As: Crouch-sliding, floor-sliding

Description
This allows the player to quickly duck under obstacles without losing momentum, as well as gain speed on downward slopes.
Mount Conditions
  • Holding a directional key, and then holding the duck key.
Dismount Conditions
  • Complete the slide, leaving the player in a ducked state
  • Stop holding crouch, ending the slide
  • Slide off of a ledge
  • Restart command, death, disconnect

Wall-run
Also Known As: Horizontal Wallrun, Wallrunning, Wallriding

Description
This allows the player to run horizontally on a surface, given the surface is less than a certain distance away and is flat, preferably perpendicular to flat ground.
Mount Conditions
  • W + Space + A, to mount a left wall-run
  • W + Space + D, to mount a right wall-run
Dismount Conditions
  • Crouching at any point (Doing so at the first few ticks is known as "wall-run canceling")
  • Jumping (Known as a "wall-run kick-off")
  • Reaching the end of the wall, or the end of where the wall is considered valid
  • Completing the wall-run
  • Restart command, death, disconnect

Wall-climb
Also Known As: Vertical wallrun, Wallclimbing

Description
This allows the player to run vertically along a surface, given the surface is less than a certain distance away and is flat, preferably perpendicular to flat ground. The surface must also be above a certain height, or else the player will perform a vault instead.
Mount Conditions
  • W + Space while facing the wall
Dismount Conditions
  • Crouching at any point
  • Jumping (Known as a "wall-climb kick-off")
  • Reaching a ceiling in certain cases
  • Reaching the end of the surface where there's no valid ledge-grab
  • Reaching any point along the surface where a ledge-grab is valid
  • Completing the wall-climb
  • Restart command, death, disconnect

Ledge-grab
Also Known As: Grabbing, Wall-grab, Hanging, Wall-hang, Ledge-hang

Description
This allows the player to grab onto a ledge (or flat surface)
Mount Conditions
  • Automatic as long as the player is facing the ledge and not in death-by-fall or moving very quickly
Dismount Conditions
  • Jumping (Jumping and the tapping crouch at a very precise time, or holding forward in some cases, will save some time and is known as "quick-vaulting", or "quick-getup")
  • Crouching
  • Restart command, death, disconnect

Vaulting

Description
For short obstacles, attempting a wall-climb instead performs a vault, effectively teleporting the player to the top of the object.
Mount Conditions
  • Attempt a wall-climb on a short obstacle

Speed-boost
Also Known As: Boost, 420 Speed

Description
Not really an action per se, but describes the state at which the player has maximum momentum.
Mount Conditions
  • Reach 400 hu/s speed by any method
Dismount Conditions
  • Stop moving
  • Longjump
  • Strafe without holding forward
  • Lose any speed
  • Death, disconnect (This can persist through restart command on maps without a start zone)
Values Reference
Action
Value (hu)
Wallclimb Height
Jump/Grab: ~368
No Jump: ~256
Wallrun Length
1172
Wallrun Height
Jump: 209
No Jump: 154
Wallrun Detection Limit
~240
Vault Height
~176
Longjump Length (+W)
722
Longjump Height
No Grab: 144
Grab: ~232
Ledge Grab Limit
(Distance Below Surface)
72.85
Ledge Grab Limit
(Distance Fallen)
Jump: ~864
No Jump: ~792
Double Jump Limit
(Distance Fallen)
~145
Roll Limit
(Distance Fallen)
646
Fall Death
(Distance Fallen)
Jump: ~1128
No Jump: 1056
Miscellaneous Guidelines
  • Surfaces meant for wallrunning must be nearly vertical, and perpendicular to a flat ground.
  • Wallruns can be performed a good bit away from where a player current stands, this is called a telewallrun. Build for wallruns being possible within 300 units of a player.
  • Sustained slides must be on an inclined slope downward.
  • Ledgegrabs may look odd if the surface is too thin that is being grabbed onto. It is unknown if this will be fixed.
  • 8 units of water can prevent fall damage, but not death by fall.
  • Use displacements sparingly, they are very powerful but easy to mess up in the PF environment.
  • Clip your stairs and props so that they have better collisions that can't be easily exploited.
  • Make indoor spaces taller than you normally would to allow for wallruns and jumps.

1 Comments
Turtlez龜 16 Aug, 2020 @ 4:15pm 
good poop