Ogryn unable to vault ledges/fences a lot

Issue Type (Required):

Player Mechanics

Issue Description (Required):

Ogryn fails to vault a lot of things that humans can. It’s not that he can’t do it, it’s that it’s broken and just makes him slide off a lot of the time. If you try it 10+ times it usually works. It usually happens on those small fences

Steps to Reproduce (Required):

  1. play ogryn
  2. find a fence
  3. try to vault it
  4. ???
  5. bug
5 Likes

in the meantime (guess it’ll be a while until they “fix” it) rule of thumb:

the more crap and clutter is leaned or tacked onto the railing the easier ogryn character model registers it as vault-able.

2 Likes

Crouch jumping usually gets me over the weird semi-vaultable jumps, ogryn or not

1 Like

Happens to other characters too. It’s so important to fill the maps with useless clutter, like Clandestine rails, otherwise we’d think the devs as lazy.

2 Likes

The Ogryn issue is definitely a particular, seperate issue. There are fences and spots that are jumpable 100% consistently for humans, but Ogryns just can’t vault them unless they try 10+ times. No amount of looking up, looking down, changing keybinds, crouching etc helps as far as I’ve found. I know vaulting inherently has a little bit of jank but it’s consistent on humans at least.

The relevant distinction I’m trying to make is just that certain kite loops that work fine for humans completely brick an Ogryn players clutch attempt and get him cornered and killed because he thought he could vault a fence that he has vaulted hundreds of times on a human class. Extremely frustrating, and has been in the game in this form for a long time now, over a year.

4 Likes

It’s a problem that Ogryn suffers from the most, it’s very rare for a human class to have issues trying to vault anything but it happens far more frequently on Ogryn.

1 Like

It’s not just a particular issue for Ogryn it seems. After reading your reply I did a few tests with tallest Psyker and tallest Zealot. Zealot seems less affected than Psyker when it comes to sprint slide stuck, and jumping off ledges issue. Maybe it boils down to speed? I don’t know.

It could definitely be an acceleration thing I suppose although wouldn’t the human classes be the same when using the same weapons? I’m not exactly sure if the accel and inertia etc is consistent among human classes, but I do know Ogryn has different values for those in particular.

1 Like

Good point, I should clarify when I said this it’s usually a moving crouch jump instead of standing next to a rail/barrier/whatever like you would when trying to vault. Still imperfect but it usually turns a 1/10 chance of getting over to a ~9/10 chance.

1 Like

Stuff behaves differently for humans, e.g. immediately vaulting over a window ledge or ledge railing no jumping or mid-air checks, where ogryn has more hurdles to jump (sorry); the human skips virtually all the checks. The vaultable stuff’s heights seem tailor-made for human who do the grab animation and vault over, ogryn doesn’t have these animations.

I think some of the Ogryn values may be wrong or at least ill-thought out in relation to their size.

Humans vs Ogryns (renamed vars for clarity)

local ledge_vault_tweak_values_human_orig = {
	allowed_flat_distance_to_ledge = 1.5,
	allowed_height_distance_max = 1.3,
	allowed_height_distance_min = 0.31,
	inair_allowed_height_distance_max = 0.65,
	inair_allowed_height_distance_min = 0.31,
}
local ledge_vault_tweak_values_ogryn_orig = {
	allowed_flat_distance_to_ledge = 1.5,
	allowed_height_distance_max = 0.8,
	allowed_height_distance_min = 0.5,
	always_step_up = true,
	inair_allowed_height_distance_max = 0.65,
	inair_allowed_height_distance_min = 0.5,
}

The values seem to cause issues in LedgeVaulting.can_enter(…) ?

local height_distance = ledge.height_distance_from_player_unit

		if height_distance <= allowed_height_distance_max and allowed_height_distance_min <= height_distance then

That famous little fence ledge on Consignment Yard for instance, the ogryn’s first attempt to vault on ground, then jumping in_air seems to exceed the maximum allowed height in the match calculations (other spots it’s min!?):
Holding jump is checked for vaulting pre-check.

 LedgeVaulting.can_enter()
NOT in_air
height_distance FAIL    1.0948877334594727      min     0.5     max     0.80000000000000004
****PlayerCharacterStateWalking _check_transition


 ***** JUMPING ***** PlayerCharacterStateJumping on_enter walking 5187.1153846154
 jump_held      walking 5187.1346153846152      5187.1346153846152
LedgeVaulting.can_enter()
in_air
height_distance FAIL    1.0179834365844727      min     0.5     max     0.65000000000000002
 jump_held      walking 5187.1538461538466      5187.1538461538466
LedgeVaulting.can_enter()
in_air
height_distance FAIL    0.94530773162841797     min     0.5     max     0.65000000000000002
 jump_held      walking 5187.1730769230771      5187.1730769230771
LedgeVaulting.can_enter()
in_air
height_distance FAIL    0.87702465057373047     min     0.5     max     0.65000000000000002
 jump_held      walking 5187.1923076923076      5187.1923076923076
LedgeVaulting.can_enter()
in_air
height_distance FAIL    0.81315135955810547     min     0.5     max     0.65000000000000002
 jump_held      walking 5187.211538461539       5187.211538461539
LedgeVaulting.can_enter()
in_air
height_distance FAIL    0.75367641448974609     min     0.5     max     0.65000000000000002
NO jump_held    walking 5187.2307692307695      5187.211538461539

There’s only a few frames where jump is considered held if you press but not held.
So the for the initial checks (there’s more) where jump_held==true , the distance check to see if it fall is in [min…max] fails most of time?.
Edit: Some checks pass but the actual vaulting over fails?is it because of the pipe railing behind the sheet metal? This section at least doesn’t seem to be tagged as a ledge for vaulting on its own, all of it ?

***** JUMPING ***** PlayerCharacterStateJumping on_enter walking 1785.6923076923
 jump_held      walking 1785.7115384615386      1785.7115384615386
LedgeVaulting.can_enter()
NO ledges found

First vault attempt fails, not in air, doesn’t fall in range.
The last check where jump is considered held after pressing spacebar fails because it’s in_air height of 0.81 > max of 0.65.

And in this window the set range check failing ?


Fails if you press jump, often, but if you hold it, it finds an interval to pass.

There’s more to it that just that I think, but some of it at least seems to come down to these values and how/when the jump is being “held”.
If you hold jump it usually finds a frame to go through, held when moving forward. Basically skipping the initial gatepeeking checks:

if input_source:get("jump_held") and not dodge_jumping then
		local can_vault, ledge = LedgeVaulting.can_enter(self._ledge_finder_extension, self._ledge_vault_tweak_values, self._unit_data_extension, self._input_extension, self._visual_loadout_extension)

So in the pictured window above, Humans are not in the air so they use the ground values allowed_height_distance_max = 1.3 and
allowed_height_distance_min = 0.31 and
,

NOT in_air
distance_flat_sq        0.31989318132400513
height_distance PASS    0.52335071563720703     min     0.31    max     1.3     true    distance_flat_sq        0.31989318132400513
ledge_forward   Vector3(-1, 4.76799e-05, 0)     Vector3(-0.986227, -0.0126924, -0.16491)        dot     0.98622649908065796

PlayerCharacterStateLedgeVaulting on_enter walking 6957

They walk up to ledge, check for jump input and transition from walk (sprint) to vault.

BUT playing with the ogryn values:

local ledge_vault_tweak_values_ogryn = {
	allowed_flat_distance_to_ledge = 1.5,
	allowed_height_distance_max = 0.8 * 2,
	allowed_height_distance_min = 0.5 / 2,
	always_step_up = true,
	inair_allowed_height_distance_max = 0.65 * 2,
	inair_allowed_height_distance_min = 0.5 / 2,
}

Seems to at least make it easier to pass the checks ? halving the min and doubling the max.
I haven’t looked at the other parts of the equation much, PlayerCharacterStateLedgeVaulting.* as the initial roadblocks seemed worse, but it seems a combination of things at play.
Even when the initial checks pass it doesn’t actually follow through with vaulting here, so are certain in-word object like railing cancelling?

P.S. Quite possible my somewhat perfunctory analysis is wrong and not getting the whole pic(most done when I should have been sleeping), so take with a grain of salt (which btw Ogryn can’t vault over, the grain).
Again, the humans simply grab on and vault over skipping all these jump checks. I’m tired of looking at this crap.

3 Likes

Thanks for digging all this out, this seems to entirely check out with what I experience ingame, it’s definitely certain props/geometry that won’t get vaulted consistently and that seems consistent with your findings.
Hopefully this will end up helping them finally fix this issue

2 Likes