Showcase First-Person Character

A true first-person character with skeletal mesh and animations, basic movement options, physics interactions like grabbing, rotating and throwing objects, and basic movement audio. The character is tweakable using custom data assets that can be used to create presets for different purposes.

To test the capabilities of the modules and plugins developed at Barrelhouse, we required a versatile, controllable first-person character that could function as a placeholder during our showcases and demos.

Activities

  • Programmed the character's classes and behaviors.
  • Created data assets for storing presets for the camera, movement options, etc.
  • Created the animation blueprint for the character.
  • Recorded and implemented movement and footstep audio.
Project:
Showcase First-Person Character
Software:

Unreal Engine 5

Language:

C++
Blueprints

Year:
2023

The character was written in C++, with Blueprint derived classes being used for flexible asset serialization.

The character is a so called 'true first-person character', implying that the camera acts as the eyes of a physical entity. Therefore, the character has a skeletal mesh that interacts with the world, casts shadows, and becomes visible in reflections. This required an animation state machine that would convincingly handle animations for each movement action. I created an animation blueprint for the character that does this.

One of the blend spaces of the character's locomotion animation blueprint.

The character has custom data asset types for some of the components like the camera and movement. This allows us to easily interchange different behavioral patterns as required.

Designers can tweak the character to their liking using data assets for each component.


The character has the ability to grab, rotate, and hurl objects that are small or lightweight enough. In contrast, heavier objects can be moved by dragging or pushing them across the ground. Unique interactions can be created and integrated using the Interaction Component of the character. For example, a fan can be switched on or off, or a door can be maneuvered open or closed, and so on.

Any sizable physics simulating object can be interacted with.



Given the need for the character to move smoothly over small physics objects on the ground, I created a component that pushes light objects away from the character's feet, without impacting the character's movement component. This allows the character to traverse surfaces strewn with loose, physics-simulating debris without persistent glitching or getting stuck on them.

The character does not glitch on small physics objects, and pushes small objects out of the way without being affected.


The character features basic surface audio for most common surface types, such as gritty concrete, metal plates, grass, and more. Bulky clothing audio is also simulated when moving around.