jump.tf Forums
Welcome B)

Improve the QoL of your map - Anti-fall reset

Finn91 · 14 · 6424

Finn91

  • Intermediate
  • ***
    • Posts: 179
    • Frags: +3/-0
    • View Profile
You don't want that the players of your map get annoyed by long falls after an unsuccessful sync attempt? You ever wondered how the fuck you can teleports people on their way down but not on their way up? Then this tutorial is for you.

A lot of you probably already know everything I'll cover but if it's not the case, welcome.
I'll cover the 2 ways (that I know at least) to make these anti fall teleporters. A lot of text incoming, so if you prefer, you can find the vmf file at the end.

1st way - The one-way teleporters

The idea is to rename the player who's going up with a trigger_multiple, and use a trigger_teleport below that trigger_multiple that will be activated only when the player touched the trigger_multiple. Imo it's the easiest way for a simple quick reset but if you want something more powerful check the 2nd method (but I explain some issues on 1st method so read everything actually lmao)
So first you make a trigger_multiple with these properties.

Spoiler (click to show/hide)

When the players touch the trigger, they are renamed "anti_fall_01"
Add a filter_activator_name with these properties.

Spoiler (click to show/hide)

It will allows people that have the same name in the tab "Filter name", so put the same name that the trigger_multiple gives.
You just need to put a trigger_teleport below the trigger_multiple, far enough so the player doesn't touch both triggers at the same time or they'll be teleported. Just add your filter to the trigger_teleport like that.

Spoiler (click to show/hide)

Now you've made a one way teleporter! But it's not perfect like this.

First of all, demomen are also teleported, which is bad in many cases. To get rid of this,  create a filter_tf_class with these properties.

Spoiler (click to show/hide)

And add the filter to your trigger_multiple. This way, demoman won't be renamed, and thus won't be teleported.
The other issue right now is if the players are renamed, they'll keep the name and will be teleported directly when they touch the trigger_teleport on his way up. Add a trigger_multiple where the player respawn and rename them to whatever you want.
This is what my respawn area looks like.

Spoiler (click to show/hide)

 Trigger_multiple properties is the same as the other one with a different name given.

Another issue (depending on how is your jump) is that you have to place your triggers like this

Spoiler (click to show/hide)

Because if the players fall down in the trigger_multiple, they'll be teleported on their way down. In some cases it's not an issue, but if you want that your one way teleporter cover up the whole place, you'll have to change some little things.

You need to put a trigger_multiple at the bottom of your jump that rename the players. Again you can rename them how you want, the important part is that the name given match your filter_activator_name. Add a filter_activator name with the name given by your bottom trigger_multiple and add it to the trigger_multiple that is above the trigger_teleport. Now this trigger_multiple only works if players got renamed at the bottom part, and they won't be teleported when they start the sync. Put the no_demo filter in your bottom trigger_multiple, so demomen are never renamed aswell and thus never teleported by your one-way teleporter.

Currently, you have only one spot where players are teleported, and this cover actually a little area.

Spoiler (click to show/hide)

You can put extra layers of one way teleporters. If you're using trigger that doesn't cover the whole fall wide space, just copy/paste your triggers, change each time the name given and the properties of your filters accordingly and that's all.

If you're using the big triggers with the trigger_multiple at the bottom, you'll need to be careful with your filter_activator_name. The bottom trigger_multiple activate the next trigger_multiple but rename you so the next one isn't activated anymore but the bottom trigger_multiple etc, and if it's not done correctly only the most down teleporter will work. Tried to do an amazing picture to explain, but also check the vmf.

Spoiler (click to show/hide)

You can add as many layers as you want but the 2nd method do this way better.

2nd way - The velocity checking trigger

For this one, the idea is to use a trigger_catapult that will do the renaming part under certain conditions. We want to setup the trigger_catapult to check the velocity of the player, rename it when it's matching a value, and the trigger_teleport + filter_activator_name will work only if the player is falling (ie matching the good speed).

So first you add a trigger_catapult that cover the whole area of your sync. Put these properties for the trigger_catapult (ignore the filter_name for the moment).

Spoiler (click to show/hide)

Launch direction has to be set to down, because we check the negative vertical velocity (If that makes sense). Player speed is linked to the Lower/Upper threshold, here with 100 in Player speed and 0.15/0.30 in my threshold tabs, the speed checked is 15-30u/s (15% of 100 Player speed to 30% of 100 player speed) in the direction checked (so here when people fall to 15-30u/s, it?s how I understand it at least, might need some Hammer geniuses to tell me if I'm wrong).

Basically it also means you can check any direction and any speed you want to do some others things.

We're not done yet with the trigger_catapult, it only checks velocity for now but doesn't rename the player. Here what you need to do.

Spoiler (click to show/hide)

So the trigger_catapult will rename people that match the defined speed.
Now you can put the trigger_teleport with a filter_activator_name matching the name given by your trigger_catapult, and players will be teleported when they fall (i.e matching the -15/30u/s within the trigger_catapult).

Same as before, reset the name at the spawn, place filter for demomen, and if you want to do a big trigger that cover whole area, put a trigger_multiple at the bottom.
Also, your trigger_catapult check a really precise speed (you can still change the threshold values tho) meaning that if the player goes above the trigger_catapult, and exceed the matching speed before entering the trigger_catapult on the way down, he won't be teleported. You can just extend the catapult to the top of your whole jump, and let the trigger_teleport at the same height of your end platform.

Spoiler (click to show/hide)

And you're done !
I think I forgot nothing, but if something?s wrong or anything feel free to tell me.

Here's the vmf file
 
https://drive.google.com/file/d/1fx4Bh1A4Q4_yib25B-avYfVwFXHBRpgr/view?usp=sharing
















« Last Edit: May 04, 2021, 08:16:46 AM by Finn91 »


Shunix

  • Intermediate
  • ***
    • Posts: 239
    • Frags: +2/-0
    • View Profile
having longer falls for failing a jump is a good thing because it punishes runs with more flaws


tyjle

  • Advanced
  • *****
    • Posts: 519
    • Frags: +0/-0
    • View Profile
having longer falls for failing a jump is a good thing because it punishes runs with more flaws
ye but for the majority of people playing just to complete the map long falls are annoying

Imagine if you were playing Celeste or meat boy and the death cutscene was like 3-5 seconds long

Sure it punishes runs with flaws but not worth


Syphilis

  • Intermediate
  • ***
    • Posts: 137
    • Frags: +0/-0
    • View Profile

Finn91

  • Intermediate
  • ***
    • Posts: 179
    • Frags: +3/-0
    • View Profile
just make your map pretty to enjoy on the way down

I'm not sure that's enough lmao

having longer falls for failing a jump is a good thing because it punishes runs with more flaws

you will be punished harder for almost beating the jump than doing a shit sync, how is it fair anyways
« Last Edit: May 04, 2021, 03:00:35 PM by Finn91 »


John

  • video games
  • Novice
  • **
    • Posts: 89
    • Frags: +421/-69
    • View Profile
your runs are already punished by not being flawless. as a wise jumper once said: "if it isn't flawless, just reset"


Shunix

  • Intermediate
  • ***
    • Posts: 239
    • Frags: +2/-0
    • View Profile
your runs are already punished by not being flawless. as a wise jumper once said: "if it isn't flawless, just reset"


short fails encourage people to keep running rather than resetting tbh..


firestabber

  • Newbie
  • *
    • Posts: 34
    • Frags: +0/-0
    • View Profile
You can fail the first skip on a jump a half-dozen times and still lose less time than a barely-missed quint would.  Having a faster reset on a quint wouldn't actually make that big of a difference in the grand scheme of things since missing a quint is mega slow.  And in the end, it's the mapper's discretion on what sorts of teleports, resets, etc. they want to use.  It's not like Finn was advocating that every jump needs this, just documenting a couple ways to do it for people who want it. 

There's so many things mappers do all the time that's much worse competition-wise than this.  Mappers so frequently make jumps that lose time if you do it "too well" or jumps that require a lot more luck than they do skill during a run.  Having a faster reset option is much less of an issue than these, especially if it's on a t6 map that probably won't be flawlessed (any time soon) anyway.  Plus it's undeniably helpful for people who just want to practice and get better or are playing the map for completion. 


Waldo

  • Novice
  • **
    • Posts: 76
    • Frags: +0/-3
    • View Profile
make a button to shotgun for quick reset instead

pros:
-faster
-deliberate
-can be used from more parts of a jump without extra effort by mapper
-100% visible without showtriggers or extra visuals

cons:
-might help with telesync cheats

verdict: stop adding invisible teleports in the middle of jumps


firestabber

  • Newbie
  • *
    • Posts: 34
    • Frags: +0/-0
    • View Profile
make a button to shotgun for quick reset instead

pros:
-faster
-deliberate
-can be used from more parts of a jump without extra effort by mapper
-100% visible without showtriggers or extra visuals

cons:
-might help with telesync cheats

verdict: stop adding invisible teleports in the middle of jumps

Can you detect who shot a button to make sure the teleport will only apply to them?  I can also imagine cheats with this where you manage to confuse the system to send you to a further jump by shooting another button or messing around with noclip and such before starting a run/trick/course.


Waldo

  • Novice
  • **
    • Posts: 76
    • Frags: +0/-3
    • View Profile
Here's an example using renaming: https://mega.nz/file/pb50hb4C#7zP6kOhqyxG01-tm_2LQhHfbpdSB5bE269KeSdBWty4

player shoots button -> player renamed to XXX
filtered teles covering the entirety of map, each of which teleports to start of current level if named XXX
trigger_multiple on level start which clears that name

Can probably be done without renaming, but this is pretty simple and uncheatable (if all playable areas have a filtered tele on them, there is no state).


Finn91

  • Intermediate
  • ***
    • Posts: 179
    • Frags: +3/-0
    • View Profile
Oh yeah the button reset is nice too, thanks for the addition Waldo


Gorge004

  • Proficient
  • ****
    • Posts: 323
    • Frags: +1/-0
    • View Profile
Instead of dealing with a distance between the trigger_multiple and the teleport, you can overlap both the trigger_multiple and the trigger_multiple and use OnEndTouch for the ouput on the trigger_multiple. No chance to fuck up the placement that way.

The lower/upper threshold works a bit differently, with those numbers in that picture, it would be:
lower threshold = 100 - (15% * 100) = 85
upper threshold = 100 + (30%*100) = 130

it adds and substract the threshold % to the player speed value, very counterintuitive but yea its good to know.


879m

  • Proficient
  • ****
    • Posts: 402
    • Frags: +2/-0
  • Techa mengu, go!
    • View Profile
player shoots button -> player renamed to XXX
filtered teles covering the entirety of map, each of which teleports to start of current level if named XXX
trigger_multiple on level start which clears that name

You can get a bit more elegant than a separate filtered tele for each jump you want this on imo. You can have the button trigger a relay, which outputs TestActivator to each filter you are using to name the player for this reset. Then on each filter you have an OnPass output that fires fire Teleport to a point_teleport which you place at the start of the jump, with the entity to teleport set to !activator.
« Last Edit: May 06, 2021, 10:32:38 PM by 879m »