My Contributions
Sole programmer on a team of four. My work includes:
Gameplay Systems
Player controller: Jump, crouch, swim, sprint, walk
Boat system: APawn based rowboat with seat physics, water floating, and wave riding
Health system: Replicated HPComponent with networked damage and healing
Affliction system: Status effect component that drives colored HP bar slices for active conditions
Animation: Locomotion blending and IK feet
UI: Main Menu, Pause Menu, Win/Lose Screen
Team Infrastructure
Perforce server: Set up and maintain a Perforce depot with SSL for the remote team
This project is currently in development and represents my most technically ambitious work to date.
Technical Details
Built With:
Unreal Engine 5
C++
Blueprint
Animation Blueprint
Enhanced Input System
Multiplayer Networking (UE Replication)
Procedural generation
Perforce
Marooned
A multiplayer survival game set on the open ocean. Players explore, scavenge, and survive while hopping from island to island in search of Salvation Island!
Genre: Multiplayer Survival / Adventure
Platform: PC (Windows)
Engine: Unreal Engine 5
Language: C++
Development Time: In Development
Role: Sole Programmer & Game Design (Underscore Games)
Show your work
Boat and Water System: On the Open Water
The boat is an APawn that samples the ocean wave height at multiple points along the hull and applies buoyancy force at each one, so it pitches and rolls with the swells instead of sitting flat. Because it reads the same wave data the water surface is rendered from, the physics and the visuals stay in sync as the boat moves. The harder problem is the player: while standing on the deck they inherit the boat's motion every frame, staying planted without sliding or jitter as the surface shifts beneath them.
Health and Stamina System: One Bar, Two Systems
A single replicated component runs health and stamina as one tied system. Damage and healing are server authoritative, and stamina is capped to current health and drawn as a faded layer over the same bar, so one HP bar shows both at once and taking damage shrinks each together.
Affliction System: Death by a Thousand Cuts
A status effect system built on GameplayTags. To create a hazard, a designer drops a data only zone component onto any actor with collision and sets two values: the affliction tag and a drain rate per second. When the player overlaps it, the AfflictionComponent picks it up and ref counts overlapping sources, so several zones of the same type aggregate into one clean drain instead of stacking chaotically. Each active affliction then claims health from the HP bar as its own colored slice, so claimed and available HP always sum to the player's max and a single glance shows exactly what is wearing them down and by how much. Recovery is set per affliction: some tick back once the player leaves the hazard, others lock that health until a heal pays it down.
The Foundation
A friend had an idea, so we swam with it…