What features should a general-purpose character controller asset have?

Some in the community have shown interest in using a general-purpose humanoid character controller asset that could be dropped into a game without any further modifications. Unreal Engine has such a controller built into the engine. (CharacterMovementComponent) Other engines have third-party assets that can be found on their asset stores typically for free.

If the community was to build a general-purpose character movement asset that could be used across a wide variety of games, what features would you expect it to have?

I’ll start a list:

  • Walking

    • Acceleration and deceleration
    • Friction
    • Max walk speed
  • Falling and jumping

    • Gravity (duh)
    • Similar lateral movement to walking, but with separate parameters
    • Heavily customizable jump parameters and parabola
    • Velocity verlet integration
    • Potential double-jumping support
    • Jump buffering and coyote time
  • Moving platforms

    • Attachment to moving platforms
    • Apply platform velocity to character when the character leaves the platform

For moving platforms. It should pick those up automatically and not have to put a script on the platform.

Gravity is any direction changeable on the fly with option to have direction of collider change with it.

Easily networkable. So that way it could work well with the Arizona framework

It may be worth making it an Actor so it is very easy to integrate into scripts (just have to get Actor instead of finding script)… Just a thought… Maybe this isn’t a good idea…

1 Like

I agree. This is a matter of like 15 lines of code. You just need to track the position and rotation of the object the character is standing on.

If we’re doing this with the default charcater controller as a physical base, this is not possible, as the up direction of the PhysX KCC cannot be modified.

I agree. I’m not versed in network programming, but it’s a must-have feature.

This depends on if the implementation chosen is either based off of the default CharacterController, or if a completely custom solution is used. Both have their advantages and disadvantages, and this is another point worth dicussing.