
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.
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
Specs
- Engine
- Unreal Engine 5.6
- Role
- Solo: C++ gameplay, level design
- Team
- Solo
- Platforms
- Windows
- Genre
- Platformer, Obstacle Course
Tech

