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.