The Unseen
A group project built in Unreal Engine 5, a psychological horror game. I mainly worked on gameplay programming, building reusable interaction, inventory, puzzle, room-state, and event-driven systems in C++ and Blueprint, and connecting them into the game's interactive gameplay.
Built the interaction system that lets players trigger gameplay events, then used it to develop and connect several puzzles, including their logic, states, and completion conditions.
Worked on the inventory and item handling, covering picking up, storing, and using items.
Created logic for rooms to shift between states, where a state change could affect objects, lighting, audio, and puzzles. This also drove interaction feedback like the radio and switches, so the world responds to what the player does.
Used events and delegates so gameplay systems could react to changes without constantly checking for updates, and built core functionality in C++ that's exposed to Blueprint so the rest of the team could use and configure it.
void APuzzleManager::ToggleRoomState()
{
bStateB = !bStateB;
GEngine->AddOnScreenDebugMessage(
-1,
2.f,
FColor::Green,
bStateB ? TEXT("STATE B") : TEXT("STATE A")
);
OnRoomStateChanged.Broadcast(bStateB);
}
void APuzzleManager::RegisterActivatedObject()
{
ActivatedObjects++;
GEngine->AddOnScreenDebugMessage(
-1,
2.f,
FColor::Yellow,
FString::Printf(TEXT("%d / %d"),
ActivatedObjects,
RequiredObjects)
);
if (ActivatedObjects >= RequiredObjects)
{
GEngine->AddOnScreenDebugMessage(
-1,
2.f,
FColor::Green,
TEXT("Puzzle Unlocked!")
);
OnPuzzleUnlocked.Broadcast();
}
}