Skip to content

Games / Obstacle Assault

Obstacle Assault

A third-person obstacle course of moving platforms and spinning hazards, built in Unreal Engine 5.6 with C++.

Built following the GameDev.tv Unreal Engine C++ Developer course.

Course ProjectSep 29, 2026

Overview

Obstacle Assault is a third-person obstacle course. You work your way across floating pallets, beams, and platforms that slide and spin.

I built it following the GameDev.tv Unreal Engine C++ course. It’s where I learned how Unreal’s C++ side fits together: actors, the tick lifecycle, the reflection system, and handing C++ values to the editor for tuning.

The moving platform

Everything that moves in the level is one C++ class, AMovingPlatform. Each instance is configured in the editor with a velocity, a travel distance, and a rotation speed. The movement logic, with logging trimmed:

void AMovingPlatform::MovePlatform(float DeltaTime)
{
    DistanceMoved = GetDistanceMoved();

    if (DistanceMoved >= MoveDistance)
    {
        // Snap to the exact endpoint before reversing, so small per-frame
        // overshoots don't accumulate into drift over time.
        FVector MoveDirection = PlatformVelocity.GetSafeNormal();
        FVector NewStartLocation = StartLocation + MoveDirection * MoveDistance;
        SetActorLocation(NewStartLocation);
        StartLocation = NewStartLocation;

        PlatformVelocity = -PlatformVelocity;
    }
    else
    {
        SetActorLocation(GetActorLocation() + PlatformVelocity * DeltaTime);
    }
}

The simple version, “reverse when you’ve gone far enough”, drifts, because a platform always overshoots by a frame’s worth of movement. Snapping to the exact endpoint before reversing keeps every platform on its path, however long the level runs.

What’s next

This is v0.1. I’m planning to keep building on it with:

  • Music and sound effects
  • New mechanics beyond moving and rotating platforms
  • More levels

What I built

  • AMovingPlatform: a reusable C++ actor that moves back and forth and rotates, with velocity, travel distance, and rotation speed exposed to the editor via UPROPERTY
  • Overshoot correction so platforms reverse at exactly their travel distance instead of drifting over time
  • Frame-rate-independent movement using DeltaTime
  • Level built from those C++ platforms, configured per instance through Blueprint subclasses

Screenshots

Player standing on a stack of cinder blocks below a floating plank, with a village temple behindPlayer on a wooden pallet platform looking toward a moving beam and a thatched barn

Specs

Engine
Unreal Engine 5.6
Role
Solo: C++ gameplay, level design
Team
Solo
Platforms
Windows
Genre
Platformer, Obstacle Course

Tech

  • C++
  • Unreal Engine 5.6
  • Enhanced Input
  • Blueprints
  • Git LFS