momentum-mod / game

Momentum Mod - Standalone Source Movement Speedrunning (READ README)
https://momentum-mod.org
Other
520 stars 209 forks source link

Fix/Remove Crouchboosting #1462

Open tsa96 opened 3 years ago

tsa96 commented 3 years ago

Is your feature request related to a problem? Please describe. Cboosting is a mechanic in surf and bhop (though presumably works in other gamemodes) wherein the player can spam crouch within a trigger_push to make the trigger apply multiple times. This leads to gimmicky, RNG-dependant runs and seems generally unpopular.

Describe the solution you'd like Remove cboosting in movement/trigger code. For any WR routes that are generally competitive and popular that use cboosting, double the strength of the triggers.

Describe alternatives you've considered Allowing mappers to set whether triggers should allow cboosting has been discussed, but this seems hard to convey to players, and having some maps or even triggers allow a mechanic and not others seems unsatisfactory.

Additional context See here for start of Discord discussion on this

hexaflexahexagon commented 3 years ago

can confirm this exists in tf2 as well as its related gamemodes

jason-e commented 3 years ago

I think adding a per-trigger cooldown (maybe in the range of 0.25-0.50 seconds) would be a good solution for this. It shouldn't be too long because we don't want to prevent multi-boosting a trigger on successive jumps (which are as short as ~0.72 seconds on flat ground). It would need to apply to trigger_push entities (only the initial Touch(), but not successive consecutive Touches) as well as any trigger with a basevelocity custom output (these are usually OnEndTouch but dont have to be).

In the discussion we talked about potentially wanting to keep some crouch boosts, because some maps have well established routes that abuse them, or even just because some maps flow better with them. Even then, I think the only ones that would make sense to keep are ones where the map starts with a booster which is usually crouch boosted (e.g. most fly maps). The ideal solution for these would be to increase the natural speed of the booster to match a crouch boost, and then block actual crouch boosting.

A notable downside to doing this is it forces all players to have to manage double the normal speed (at least temporarily), which can increase the difficulty considerably, especially for less skilled players. The cases where we want to have one of these automatic crouch boosts should be pretty rare, so we could address them individually as they come up (if they come up at all).

There was talk of adding an entity property that would allow mappers to explicitly enable crouch boosting for a trigger, but I don't think this is a good idea. The goal should be to eliminate this kind of tick-sensitive pseudo-RNG stuff, and I can't imagine a scenario where a mapper would have reason to keep this behavior (especially as far as newly-made maps are concerned).

On a related note, there is another double boosting trick which is similarly undesirable and would be fixed by the implementation of a trigger cooldown. Some triggers are too tall to crouch boost, but are shaped in a way that makes it possible for players to activate them, move out of the side, and re-enter them in rapid succession (top-down illustration). This happens in the span of just a few ticks and has a similar RNG-type feel as crouch boosting. It's even more obscure than crouch boosting, but I felt it was worth mentioning as an additional edge case that would be fixed.