1 (edited by BlankMauser 2021-04-28 18:36:21)

Topic: Inaccuracies with Jump And Block States

There are a few inaccuracies with UFE and unsurprisingly both of them involve diagonals in some fashion. I've been trying to use diagonal input detection for a few things but its quite difficult because of how they're polled.

The 1st one is the most important to me. In the source code, UFE checks block like this:

            if ((hitType == HitType.Overhead || hitType == HitType.HighKnockdown) && currentState == PossibleStates.Crouch) return false;
            if ((hitType == HitType.Sweep || hitType == HitType.Low) && currentState != PossibleStates.Crouch) return false;

Instead of PossibleStates.Crouch, I'd like to check for if "Down" OR "DownBack" is being held. To demonstrate an example, I set this attack to 250 blockstun and to hit overhead: https://streamable.com/gk7j06

Even though I'm holding down back, I'm still able to block the overhead attack. This is not accurate to normal fighting games. A quirk normally exploited in high-level play is called a "fuzzy guard." Where the opponent can be stuck in standing blockstun, but still be blocking incorrectly.

A demonstration can be shown here:

https://www.youtube.com/watch?v=e32vSM2sVNI

Another reason this is problematic, is it makes high blockstun jump attack > into a quick low attack basically impossible to block.

The other unusual trait of UFE is that if I press Up-Forward and go into jump start-up, but I then let go of forward before the jump goes off, I no longer get jump forward. In a normal fighting game, the direction of your jump is buffered. In certain games, this lets you neutral jump and drift forward. By doing an input like Forward > Up > Forward.

Personally if I was given some pointers I'd try to fix them myself. I know where each of these is handled in the Controls Script, but the input system itself is rather difficult to hook into.

Share

Thumbs up Thumbs down

Re: Inaccuracies with Jump And Block States

The problem is actually the fact that during block stun the character is basically "stun locked" and states can't be changed.

Its a similar problem here:
http://www.ufe3d.com/forum/viewtopic.php?id=2739
I haven't had the chance to fix this behavior yet, but I'll try looking into it this week.

If you are planning on replacing the stance with inputs however, this can help you:
Under ControlsScript.translateInputs you will find this code segment:

newInputRefValue = ButtonPress.DownBack;

Try saving that information on a global variable,

pressingDownBack = newInputRefValue == ButtonPress.DownBack ? true : false;

and under TestBlockStances, use it as your check:

if ((hitType == HitType.Overhead || hitType == HitType.HighKnockdown) && pressingDownBack) return false;
Like UFE? Please rate and review us on the Asset Store!
Questions about the Forum? Check out our Karma FAQ.
Don't forget to check our discord channel.

Re: Inaccuracies with Jump And Block States

Awesome!

The correct behavior for maximum accuracy would be something like this:

1) If you block an attack, you can not change between crouching or blocking states until you block another attack.

2) While in blockstun, you must press down in ANY direction to block lows. Otherwise cross-up lows would knock you out of blockstun protection. This is a common situation in King of Fighters 13 for example. I will admit this is mostly preference.

Any word on if you can fix jumps too?

Share

Thumbs up Thumbs down

Re: Inaccuracies with Jump And Block States

Regarding changing states during blockstun I had two ideas.

1. Change states without visually effecting the game (probably ideal)
if char is in blockstun allow states to be changed but don't show visual change.
In gif char goes into stand state when in crouch blockstun but doesn't actually visually stand up

2. Change states while visually effecting the game (might end up looking ridiculous e.g teabagging during blockstun)
if char is in blockstun allow states to be changed and show visual change.

I was able to setup a quick example of both ways with a simple change to a script

In ControlsScript.cs look for

public void ExecuteCrouch()

Comment this out:

//&& !blockStunned

Result:
we can see that states can be changed to stand or crouch during blockstun.
we can see it visually changes to a crouch pose when in a standing state but it wont visually change to a stand pose when in a crouch state.
https://i.imgur.com/UtDtR2Y.gif

Share

Thumbs up +1 Thumbs down