Reventa is a third-person melee action game developed solo on Unreal Engine 4 for PC and is currently available on Steam.

 
Reventa_Release1_BlueExampleImage.gif

Background

Initial development began in 2006 on a proprietary game engine written in C++ and utilizing DirectX9.0c before porting to UE4 in 2016. The game successfully completed Steam Greenlight in 2017 and entered Early Access to become publicly available for the first time.

Anim Dynamics

The game’s characters feature many loosely-moving parts that would be difficult and time-consuming to animate by hand. Taking advantage of UE4’s dynamics systems, this secondary animation can be added to characters by adding skeletal joints to the rig in Maya then creating appropriate physics bodies in Unreal to represent the collision shape and mass.

Because this secondary animation is driven by physical simulation, there is a natural variance in the generated motion, allowing cyclical animations like running to have a layer of random variation that would otherwise take an considerable amount of time and additional animation to replicate.

 
 

Animation Retargeting

Unlike a first-person game, a third-person viewpoint necessarily requires many full-body animations to allow for all of the movements possible. To reduce this workload to something achievable by a single developer, animation retargeting was used within UE4 to allow similar characters to share source animation despite having different skeleton heirarchies.

This proved invaluable in allowing different player skins to be used despite each requiring different anim dynamics and physical body requirements.

AnimAtion Inheritance

There are vehicles in the game that can be used by both the player and enemies. Rather than create multiple animation sets for each combination, a shared and retargeted library of common actions is used similar to the way player character animations are shared between different skins, but in addition to this the scripting that drives the state machine controlling the animation playback is reused using a form of inheritance.

 

There is a universal state machine and animation logic for the vehicle that both the player and enemies derive from to drive their own animation logic. The state machine for the vehicle uses a set of flags to determine flow from one state to another.

The derived animation logic need only set the flags that affect the subset of allowed behaviors. As an example, enemies can not crouch while using the same vehicle but players can. Because of this, the character animation script makes use of the IsCrouch flag while the enemy animation script does not. Because this flag can never change value from the default for enemies, the shared state machine simply never branches into states that require the flag.

In this way, the need to rebuild animation state machines and flow logic is reduced to the bare minimum required.

 
 
 

Realtime cloth sim

UE4 supports realtime cloth simulation, and this feature was used extensively to provide additional secondary animation to characters and to solve the problem of long hair. By treating locks of hair as strips of cloth and controlling the self-collision consideration bounds, a reasonable and performant representation of stylized hair was achieved.