Project : DUST

Engine : Unreal Engine

Platforms : PC

Status : WIP prototype

Date : 2025

What is this project?

DUST is a 3rd person shooter survival / exploration prototype that I’m currently making from scratch.

For systems and mechanics, I’m taking references from games that likes to have minimalistic and diegetic ones. ( Astroneer, Dead Space etc.)

Core pillars/intentions are :

  • Explore an unknown place
  • Scooting is living
  • You cannot survive alone

I will try to add multiplayer because I’d love to play around 2 player exploration focused actions/puzzles, including traversal and combat.

Why am I doing it?

I wanted to strengthen my visual scripting skills and learn how to have a better project’s scripting architecture. (No spaghetti code allowed in here!)

And I simply find it fun to do visual scripting and learn new stuff on Unreal, so doing it by crafting a narrow scoped experience looked like a good idea.

What's the plan?

DUST is made from a blank project, where everything will be added through visual scripting.

I started to make the project’s basic systems and mechanics while focusing on readability and flexibility.
Things will be added to the base skeleton and not making it a nightmare is a big concern!

I’m adding metric tools at the same time I’m doing mechanics like jumping, mantling… so I can quickly test by building gyms.
Visual scripting examples will be shown on my implementations!

🚧 Construction details 🚧

Movement

XY Axis simple movement

There is a basic movement system using X & Y inputs, allowing our character to move in all eight directions.

I’m also using these inputs to get directionality.

Movement function Swizzle XY inputs

Movement states : Jumping & Running

I added a sprint, including camera FOV changes, and a jump action.

I made a state machine to control the character’s move state, using an Enum and booleans. This Enum is used to set the different speeds our character can use.

Typical states to know if the character is jumping or falling are also added.

Clean states debug were added too!

Sprinting & FOV changes

Setting movement states through the move inputs

Speed setting function taking state Enum

Systems

Character animations

I wanted the project to have an original look and I love the pixel art & 3D world mix (Like Octopath Traveler). I got sprites from Itch.io and integrated them.

While dealing with states, I made the character controller’s animation tree using the PaperZD plugin, a tool for 2D animated projects.

I made my animations assets and linked them with the retrieved directionality from move inputs. The state Enums are used for the AnimTree’s conditionals.

Character controller animation graph

Animation sequences with directionality parameters

Cameras

For cameras, I wanted 3 types/modes :

  • Third person shoulder view
  •  Shoulder aiming focus
  •  Aiming down sights / Switch TPS <> FPS
Took some time to tweak a the cameras’ first draft to get a good feel
 
I had to be careful about the different states my character could be in and prevent unwanted behaviors, like switching TPS/FPS while sprinting.

Switch FPS <> TPS

Aiming Shoulder mode

Systems

Basic mantling

One of the core traversal mechanics will be mantling.
I wanted this feature to be flexible & easy to execute as a player. 

The mantling is based on having tagged ledges that can be grabbed by the player. When grabbed, the player can mantle over it.

The mantling mechanic has 3 steps :

  • Checking for climbable ledges
  • Getting the character on the ledge
  •  Releasing the ledge and going back to movement

Component on ledge assets giving them the ‘Climbable’ tag

Climbing scripting located as an character controller’s component

Hold & Release Input Action with the mantling behavior, including its functions

Detecting climbable ledges with tracing

Repositioning the character on the ledge, based on values from the ledge detection

Ejecting from the ledge

W I P