Parkour Fortress Mapping for the PF gamemode (Timed/Combat)

JJ

Feet touchin' no ground
Note, this is NOT an Announcement to state "Open Beta soon to release"
This is a guideline to follow loosely since there's been some confusion that we'd like to clear​

Please Understand, RSOP may have many of the old SLAG community Members, Mods/Admins
However there is nothing they can do besides light moderation towards mechanic abusing players.​



This will mostly be a quick overview of needed information to map 'correctly' with some later posts giving more detail to any other (appropriate, non-answered) questions. As all is subjected to change within minor degree or a warned overhaul. Currently as of January 2018 there are NO CUSTOM ENTITIES for these gamemodes, they are all found in Vanilla Source SDK.

You may wish to view the maps of the past for an idea of what you wish to achieve. Some notable maps will be;
Novus, Temple, Rebound, Sonic, Meat Saw/Dark Meat

There are plenty of maps already available to be unpacked and studied, they all can be found at;
Index of /tf/maps (http://slag.hosted.nfoservers.com/tf/maps/) under CTRL+F "pf_"
While all RSOP hosted will be listed here, Current Map Cycle + Updates (https://forum.redsun.tf/threads/current-map-cycle-updates.2420/)



Now to begin, previously of this post no mapper has 'followed' a strict code. This was due to no clear measurements of what the players could achieve. Later a few maps and two files with estimated rounded units from extensive testing was created. This thread will provide the basic map demo and both text file contents.

Note, majority of information is SLAG based. Do not rely on any information besides the Units though it may be provided.
Will later update with accurate RSOP measurements once Open Beta is established.

https://cdn.discordapp.com/attachments/265194697906061322/390596123120762881/pf_sdk.vmf

Players spawn on the same vanilla entity, info_player_teamspawn
The use of info_player_start is available if you know how to use it
PF has a custom door model, using prop_door_rotating to function
There is use of info_teleport_destination named parkour_timerun,though this is subject to change
For ziplines, create a keyframe_rope giving it a Name, then a move_rope matching the Next Keyframe
'Pipes' are a trigger_multiple named 'climbable' and also have a prop_static custom model
Old Timed used trigger_multiple for 'checkpoint' and 'goal', this has changed but can still be used

Only difference is the use of Intel, Capture points, or other custom objectives
Use of custom spawning is also an option, however there is spawn protection via plugin

This 10k limit isn't fun.
--- AUTOMERGE ---
Hammer Units

(Values marked with ~ are approximated while the rest have been more accurately recorded)
Wallclimb Height (No jump): ~256
Wallclimb Height (Jump at top height, ledge grabbed at top height): ~368
Vault/Quickstep Height: ~176
Longjump Length (Holding Forwards): 722
Longjump Height (No ledge grabbed): 144
Longjump Height (if ledge grabbed): ~232
Wallrun Height (No jump): 154
Wallrun Height (Jump at top height): 209
Wallrun Length: 1172
Wallrun Detection Limit: ~240 units from player
Ledge Grab: 72.85 units below surface grabbed
Double Jump Limit: ~145 units fallen, resets Fall Height to 73 units below ground level
Roll Limit: 646 units fallen
Ledge Grab Limit (No Double Jump): ~792 units fallen
Ledge Grab Limit (With Double Jump): ~864 units fallen
Fall Death (No Double Jump): 1056 units fallen
Fall Death (Double Jump at last possible moment): ~1128 units fallen



Guidelines

General:
Parkour Fortress maps should have a proportion equal or slightly higher than a normal TF2 Map. The TF2 Mapper's Reference is a good place to start.
Player speeds are somewhat different in PF: You start at 250 Hammer Units Per Second (20 UPS above Heavy speed) and end at 420 UPS (20 above Scout speed). This means that, at max speed, the player can jump horizontally slightly further than you are able to while testing offline.
Save you and the developers some time: test your map for any errors, exploits and other glitches beforehand and ensure that you packed your map correctly.
If this is your first map, look at TopHATTwaffle's tutorial series to get a better understanding of how Hammer and Source mapping in general works.


Surfaces:
Vertically angled surfaces cannot be wallran on, wallclimbed, or grabbed at its ledge. However, note that sides of the surface that are at a right angle to it can be used to climb all the way to the top! The example map includes a sample of this.
If the player falls into water >8 units tall and has not already hit the fall death height, they will not be stunned or take fall damage.
It's recommended that you disable prop collision and make your own clip brushes to replace it due to parkour movement not behaving well with angled surfaces.
Fill holes in walls with playerclip so that the player can more easily wallclimb and wallrun on them.
Playerclip stairs so that players can better slide on them.


Climbables/Ropes:
As a rule of thumb, you should place climbable triggers 24 units away from the wall. Length and Width don't matter, though most use 32x32.
When a climbable trigger is entered, the player's x and y coordinates are restricted to those of the trigger's origin. If the origin somehow becomes misplaced and outside the trigger, the player will warp to the origin and immediately fall. On the other hand, putting the origin in another climbable trigger will work.
Ropes are created using a move_rope with a keyframe_rope set as the next keyframe. Ropes using only move_rope or keyframe_rope cannot be grabbed and could be used as decoration.
There's a slight delay (~1 second) after leaving a rope before another can be grabbed.
Although you can crouch out of a rope to exit it, you have to crouch again midair to roll once on the ground. Most people don't know this, so try to end the rope near solid ground.


Combat Gamemodes:
<This line was taken out as SLAG no longer uploads new maps>
However, if you want to use a more basic combat mode that only enables player vs player damage and collisions, ask him to mark your map to use Regular CTF.
While the SDK says that using info_teleport_destination to mark maps as a certain gamemode is an "upcoming feature", this feature has yet to come.
Gamemodes that involve a Control Point, a Payload, or a trigger_capturezone simply will not work. People in Tutorial Mode can stand on the Control Point/Payload/trigger_capturezone and block progress without ever taking damage.
If you do use intel in your map, keep in mind that, with a low enough number of players, two players on the same team holding an intel can win the round if they get close enough.
Weapons are spawned through item_ammopack_full, but using them currently crashes the server. as of January 03, 2015.
A func_regenerate will give players all the weapons from their inventory and remove fists.
If you are using PF weapons, keep sightlines in mind due to the Machina's long range and lethal bodyshot capabilities.


Bugs:
Wallruns can be performed on walls up to 240 units away from the player.
Parkour Cam can be used to avoid damage from trigger_hurt or directly setting health through AddOutput, keep this in mind or ask a developer to disable it.
If you use AddOutput to add a targetname or User[1-4] to the player, beware: Rolling resets targetnames! An alternate method that counters this is included in the example map, but it may lag the server if too many players are targeted.
If you put a trigger over the entire map so that the player can never exit it, beware that parkour movements will make the player reenter the trigger. An alternate method of spawning the player that avoids this is included in the example map.
First-person animations only work if the player has been in third-person mode during the current life. A way to force this has been included in the example map.


Other:
trigger_gravity does not affect Parkour actions, and in fact player gravity is reset by them. If you intend to use trigger_gravity, you must put the trigger everywhere you intend the gravity to change.
Health regen only occurs some seconds after the last time the player is damaged. If the player is constantly damaged, health will not regen until they are out of the source of damage.
Setting a player's damage filter to a filter_damage_type disallowing the damage type FALL (or damagetype 32) will have the same effect without needing any water. The map gives an example of how to set this up.
 
Last edited:

Frosty Scales

John Smiley from Syria
Senior Dev
Donator
Developer
Hammer Units

Starting Velocity = 250 U/S
Sprinting Velocity = 420 U/S (sprinting carries momentum until it reaches 0.00 for a couple milliseconds)
Running acceleration = 34 V/S

Wallrun Starting Velocity = 400 U/S
Wallrun Ending Velocity = ~460 U/S
Wallrun height 155 U

Sliding Starting Velocity = 520 U/S
Sliding Ending Velocity(Flat) = 173 U/S
Sliding Ending Velocity(Downhill) = ~315 U/S

Wallclimb height = 150 U

Wall climb Starting Velocity 250 U/S
Roll Teleport Length = ~50 U
Wallruns add 50 to the Velocity but not over 420
Rolls add 95 to the velocity but not over 420
Pipe speed = ~177 - 188 U/S
Vaulting adds 25 to the Velocity but not over 420
Deadfall Velocity = ~1200 U/S
Grayfall Velocity = ~1350 U/S
Ropes have some kind of infinite Acceleration no maps can possibly test this
Long Jump Starting Velocity = ~610 U/S
Door Velocity = about 1005 U/S
Wallrun teleportation = ~70 U @ 45Deg

Wallrunning and Wall Climbing set client's gravity
 

JJ

Feet touchin' no ground
Thanks for the hand Frosty, ran out of space and the automerge doesn't help with the 10k limit.