Download

How hard would it be to tweak the engine to be animation frame dependent?

Hello everyone!

The title isn’t quite clear enough.
I’m new to UE4, and new to programming too (studying C++ these days). I come from an artistic background, but these days I’m learning programming, and primarily using BPs to work with Unreal.
I’m trying to understand how feasible it would be to create a dependency between animation keyframes and the game’s framerate.

To elaborate, I want to create a situation where my animations, instead of being progressed by the passage of time, would be progressed by the rendering of frames.
Each new frame will result in a new animation keyframe being presented.

That way, the speed at which my animations play is entirely dependent on how many frames I’m rendering per second. More frames=faster gameplay.
Frames will only be presented at their “keyframe” value, meaning no interpolations whatsoever, we only see the actual frames that were created in the animation software.

Kinda like what they do in fighting games and japanese spectacle fighters, where framerate is locked and dips/spikes result in slower/faster gameplay.

I’m interested in this because I’d like to be able to have full control over what animation frames are rendered, for consistency in gameplay and timing between different events (a specific frame triggering a specific frame in a different game object).

Reading on this online, I realize this is not really a “thing” in UE4 (or competitors), and to achieve that you’d need to customize the engine. I suspect it would be a pretty heavy task, too… but I’d like to hear some opinions on this.
Also, if anybody here knows of alternative ways to achieve consistency in timing and behavior without guaranteeing specific rendered frames, I’d love to learn.

Thanks!

Just do the counter intuitive thing and attach your animation code to the blueprint tick without using tick delta. The tick node fires each frame.

Wait! is that a built-in blueprint feature, or would I have to write my own node for that?

That sounds like a great alternative!

The tick node on every blueprint - it fires once per frame. It also gives you the time delta between this frame and the last so you can correct for frame rates being all over the place, but you won’t want to do that - it’s good to learn what tick delta does though…

The idea being that if the frame rate delta was 1 (the system is running a 1 frame per second) and you want a car, for example, to move at 1 meter per second then you move the car 1 x 1m per tick(or frame). If the frame delta is 0.5 (2 frames per second) then you move the car 0.5 x 1m per tick(or frame - Still one meter per second, but over 2 frames). At 100 fps the delta is 0.001 , so you move the car 0.001 x 1m per tick or frame - still 1m per second but very smooth.

This way you can have a multiplayer car game networked between a 24 core Xeon with a quad SLI setup and a 486dx2 66 and a 3dfx voodoo card and both cars will reach the finish line at the same time. Again; the opposite of what you’re asking for.