momentum-mod / game

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

Conc Gamemode #802

Closed Hat-Kid closed 2 years ago

Hat-Kid commented 4 years ago

Issue to keep track of things regarding the conc gamemode.

Needed for stubbing:

General:

Gocnak commented 4 years ago

Regarding pitchdown, there's two approaches, we either detect the pitch at 89 and just "correct" it to throwing straight down, or we try to allow 89.9 in conc / general. I prefer the former. Pitchdown should stay 89 as per conc player's requests.

squeek502 commented 4 years ago
  • FF/TFC gamemovement (Right now it's just TF2 movement, but with the FF bounding box this sometimes gets you stuck on the ground when crouching)

FF movement is largely the same as stock SDK movement, with some exceptions. The best reference would probably be the unfinished port to the 2013 SDK where the movement was ported in a way that leaves most of the SDK code intact. Differences:

The rest of the code changes are mostly around the auto-jump implementation, some FF specific bunnyhop speed clamping, some FF specific movement techniques (trimping, double jumping), some 'getting out of water' changes, and decreased friction while skimming along the top of water (sharking).

In our 2006 SDK code, we also changed the player hulls to have their 0,0,0 point at the middle instead of the feet, which is unnecessary and probably a mistake (the hulls are centered in HL1/TFC, but there's no real need for that to be true to get TFC-like movement).

This is off the top of my head/from just taking a quick look at the code again, so I might be missing something (note also that the 2013 code wasn't thoroughly tested, so it might differ from the actual 2006 SDK version of FF).

squeek502 commented 4 years ago

Just an FYI on concs:

This if is specific to FF and should probably be removed for momentum:

https://github.com/momentum-mod/game/blob/f1ec4af6651f05999011996623a57653f5184710/mp/src/game/shared/momentum/mom_concgrenade.cpp#L352-L359

It's not in TFC and for skill maps it's practically useless (it's more likely to get in the way/annoy people than be of any use). I'd recommend just deleting that if and using the logic in the else unconditionally.

zike1017 commented 4 years ago

Not sure if these should be separate issues, but these were both brought up once in #general-conc:

Making it possible to have a button fizzle all concs currently out is more a QOL addition as it can be quite tedious sitting there for 3 or 4 seconds if you fail and a conc is in your way. This probably should only fizzle thrown concs out in the world and not affect a conc the player is currently holding. The reasoning being fizzling handhelds might lead to shenanigans.

Visibility through walls would be a feature with similar reasoning for existing as having the HUD element to track conc timers; they both help newer players learn the game mode. An example jump which is relatively common can be seen in the following video: https://youtu.be/qdB0KtNDzKQ?t=87

With the third conc that is thrown over the wall it definitely feels at times that it's a complete guess whether the conc even made it into grate and down the chute. Some sort of outline visible through walls would, in this instance, provide the player with the feedback that the conc was thrown in the right spot, and assist them in lining up their strafe to get the optimal knockback from the conc.

There wasn't a whole lot of debate when these issues were both brought up due to the smaller number of people invested in conc, but it seemed like there wasn't any real opposition. Of the like 2 or 3 TFC players, they seemed indifferent.

braem commented 4 years ago

Could reuse the older stickybomb ring particle (the one that didnt fade out after arm) @VortexParadox ? Seems that would fit perfectly here

ghost commented 3 years ago

https://github.com/momentum-mod/game/issues/1092

Shegetz commented 3 years ago

If the full implementation of 1:1 Fortress Forever is going be planned for later, then I think it's pretty important that conc grenades are changed so that they never reach 0 push, and generally have more accurate scaling to FF concs. Consensus in the mmod discord seems to be that it obligates players to duck to achieve the push required for most starts from the ground. It also generally makes concs that are closer to you far less useful, like when juggling or going for a double setup.

zike1017 commented 3 years ago

When a conc is currently thrown by default a little bar with a countdown timer appears above the grenade like so: https://steamuserimages-a.akamaihd.net/ugc/1655598293150631306/4EB6B77DDC5FEA316DC09E364868622932E4F7F3/ However, on higher resolutions the numbers get cut off like so: https://steamuserimages-a.akamaihd.net/ugc/1655598293150631411/976B28345BB424523A5B2F89DFB9D0529DC5F628/

For reference the first image was obtained while playing at 1920x1080 with the second being at 2560x1440.

checkcheckcheckcheck commented 3 years ago

Smallish thing, but when in spectator mode, concs fizzled by a player you're observing don't disappear - both the model and the blast animation remain but clearly don't affect the player.

squeek502 commented 3 years ago

One thing I randomly realized is that this line:

https://github.com/momentum-mod/game/blob/f1ec4af6651f05999011996623a57653f5184710/mp/src/game/shared/momentum/mom_concgrenade.cpp#L333

in FF means "center of the player" due to what I mentioned in a previous comment:

In our 2006 SDK code, we also changed the player hulls to have their 0,0,0 point at the middle instead of the feet, which is unnecessary and probably a mistake (the hulls are centered in HL1/TFC, but there's no real need for that to be true to get TFC-like movement).

which means that player->GetAbsOrigin() is probably wrong in momentum, and instead it should use player->WorldSpaceCenter().

Gocnak commented 3 years ago

Oh yeah I changed those out in latest develop code:

https://github.com/momentum-mod/game/blob/develop/mp/src/game/shared/momentum/mom_concgrenade.cpp#L242

I think the main thing that's gonna be fun to port is gamemovement, but we're still wrangling the new engine code first before looking into it.

zike1017 commented 3 years ago

Don't think it's documented anywhere, so I wanted to add that the bounciness of conc grenades still isn't quite right. The FF implementation is supposedly more accurate with comments on that seen in the image.

https://i.imgur.com/bqKdHwQ.png

Here's the shown link for reference: https://github.com/fortressforever/fortressforever/blob/beta/game_shared/gamemovement.cpp#L1030

Kanisof commented 3 years ago

Just been beaten to the punch. I made 2 short basic videos to demonstrate this. Note: this is is over a very short distance also. It's even more apparent when you're dropping a long way onto a conc you've just thrown downwards at a wall

https://streamable.com/27fjot

https://streamable.com/i8ybkb

If you are close to the wall, then the bounciness seems even worse and more different from each other. This affects the game in a various number of ways, especially at higher levels when bouncing concs off walls (at various different angles also) becomes more prevalent.

harryjah commented 3 years ago

The conc bounciness was changed by feel for a temporary fix to earlier problems but should definitely be reverted (https://github.com/momentum-mod/game/commit/bf7f80d5a7e6d2bc8c18308cdcea4bd7d87e2642). Also the air accel should be reverted to 10 once the FF gamemovement code is fully implemented (15 AA is an okay approximation but the major difference seems to be that tfc/ff didn't use surface friction for any of the player movement calculations, as can be seen all the lines commented by mirv in the link zike posted)

squeek502 commented 3 years ago

If TFC-like conc collisions, throwing velocity, etc are desired, then FF won't be of much use. AFAIK we mostly use the Source engine implementation, with a few tweaks to get juggling against a wall working okay-ish (but it still differs from TFC). If you want it more TFC-like, it might be necessary to port over some GoldSrc entity collision physics, though I've never looked into how exactly they differ.

(FYI, nothing in gamemovement.cpp affects how concs behave)

Gocnak commented 2 years ago

Ammo trigger TODO is covered in #562 HUD that shows outstanding conc timers is now at https://github.com/momentum-mod/game/issues/1715

Closing this card now! Conc is basically fully supported now, pending tweaks to the movement based on TFC and feedback, which can be separate cards as we decide on it. See forums for more input.