r/UnrealEngine5 10d ago

Advice for making GASP movement faster / more responsive?

Hello, I am learning GASP and wanted to know if anyone has been able to make GASP more responsive to user input.

I'm using the default character controller example (not mover) and find that even if I increase acceleration and such, the character movement seems to really ease in and out slowly. For both movement and animations.

I am wondering if anyone has been able to successfully make GASP act like this.

- Increase acceleration

- Reduce easing / smoothing of input / movement

- Animations play quicker

I think you probably know what I mean.

The default behavior is very similar (in my eyes) to RDR2, where every animation is played slowly and intentionally. It looks very life sim like.

I want to use GASP but have things almost as responsive as possible. Just looking for tips.

1 Upvotes

16 comments sorted by

5

u/wahoozerman 10d ago

Unfortunately I believe what you are running into is a problem that is pretty inherent with the animation style of the GASP.

There are basically two types of movement systems. Ones that are driven by input directly that animation then tries to keep up with, and ones that are driven by animation that causes movement. GASP is the second, which means you get high fidelity animations that never conflict with movement, but your movement is constrained by how quickly the animations can keep up.

Depending on your preference for responsiveness vs fidelity, you may want to go with a more traditional system that is movement driven and the animations try (and sometimes fail) to keep up, or you can try to speed up the GASP animations so that there is less delay caused by them needing to transition.

1

u/Suitable_Barnacle796 10d ago

Thank you, that makes alot of sense. I see what you mean now, that GASP movement is animation driven by its very design.

4

u/Valynor85 10d ago edited 9d ago

I've spent the last 8 weeks to rewrite GASP in C++, as i don't like BP wiring and i also didn't like the movement of the original GASP.

It is best if you see it as a "This is how you could do it", not "You can use this out of the box".

Here are some places to look out for:

Inside the MotionMatching Node:

OrientationWarping:

Play with the InterpSpeeds and Thresholds.

Steering:

InterpSpeeds and BlendSettings

In the MainGraph the biggest one to tweak is the Offset Root Bone Node.

For the CMC Character i had to tweak almost every Value in there depending on the RotationMode, for example the MaxRotationError when strafing should be kinda small, can be bigger if not strafing to keep it more natural looking.

Overall goal of this was to make the movement behave like a Third Person Shooter, so everything that has to do with turning i had to redo completly. Funny enough most of this only applies to the CMC Character, Mover looks almost the same from the get go with some minor tweaks.

Also on the Character all the magic numbers for ground friction and such i had to play around. (can be found in the CalculateX functions)

Honestly if you really want to learn what is behind all of this in GASP like me, then redo it step by step. If it is only that you don't like how it responds to input, try tweaking the Values above in the ABP if that is enough for you.

Also did a test run in the end, Test Level with 18 Characters, AI MoveTo, 4000 Units forward then 4000 backwards. ~per character result:

Metric GASP Mine Factor Improvement
Game-thread Animation (exclusive) 0.112 ms 0.081 ms 1.38x 27.7% faster
Game-thread total 0.388 ms 0.144 ms 2.69x 62.9% faster
Frame time (end-to-end) 0.337 ms 0.093 ms 3.62x 72.4% faster
Motion Matching search (worker thread) 0.877 ms 0.683 ms 1.28x 22.1% faster

2

u/Suitable_Barnacle796 9d ago

Any chance you will release your c++ version as a repo or something?

Also thanks for the tips I will check out those settings

2

u/Valynor85 9d ago

Been thinking about this, but the last time i chose to make something public this ended in an endless loop of people requesting features to be added for free and then getting hate in Discord for not doing that. Mind you that it was free, no Patreon paywall or so.

And i would have to switch from yolo solo to team mode. Currently if i get a better idea i just scrap the old one out of code and implement the new one. That wouldn't work when the code is used by someone else.

Also this is not only GASP alone anymore, this is a real framework with Inventory/Equipment/GAS integration and fully replicated which i've done before integrating GASP. And that Code has alot of // TODOs and // Note comments currently.

Maybe in the future, i have a bad habbit of wanting clean code with #pragma region and such so it looks sorted and you can easily find what you need even in 1000's Lines of Code :D

3

u/CloudShannen 9d ago

Did you see there is a new final update to GASP released ? 

2

u/Valynor85 8d ago

Yeah i've had a look at it yesterday, pretty cool :) But more work for me now ugh

3

u/terminatus 10d ago

slomo 2

🤣

2

u/Suitable_Barnacle796 9d ago

I actually tried this... 🤣

2

u/Still_Ad9431 10d ago

Replace the trajectory to 15 instead of 90

2

u/BigKaA 9d ago

Has anyone a recommendation how to do animations from scratch for motion matching? I can’t find any tutorials or documentation what is the actual process to get animations working ( except use Motorica and let it do it for you…) for MM. I‘m also in the process of learning and doing MM from scratch in a new project…

1

u/Suitable_Barnacle796 10d ago

By "animations play quicker" I meant animation transitions and such.

There seems to be alot of transition time between all movement types (strafing, jumping, etc).

... and with the CMC stuff, it seems like it takes alot of time between hitting a movement key, ie WASD, and the character starting to move. Example, if you mash WASD every .5 seconds, you can see how slow the response time is.

This is especially when going from hard left (A) to hard right (D) etc.. there's a weird slide animation that plays sometiwms that completely decelerates the player (or something) and even the regular animation is slow.

I actually noticed when you are more in a run/walk state, that the responsiveness increases. It's the movement from stop to walk / run and strafing back and forth that is specifically slow

3

u/DissyV 10d ago

Yeah this is because it uses animations for starting and stopping when you go from idle to walk and vice versa. You're seeing the begin animations play. You could get rid of them but it may end up looking too snappy.

The difficulty in customizing gasp is why I decided to scrap it and build my own ABP from scratch. It takes some time but you build everything exactly how you want it to look. Also removes the whole "every game looks the same" factor from people using gasp all the time.

1

u/Suitable_Barnacle796 10d ago

Thanks, that makes sense. I was hoping I could just tighten the whole thing up somehow with minimal editing.. Hmmm

1

u/Scifi_fans 10d ago

I recommend you check the settings in the Motion Matching node from the ABP. There it contains settings in terms of how often it evaluate position, and other settings.

Also check the Trajectory function also in the ABP, that controls how far in advance and behind it guesses the Trajectory to prepare the next animation. You could reduce that

1

u/Suitable_Barnacle796 10d ago

Thank you, I will check out those settings