Cubey's Adventure
Live a full lifetime in two hours — start as a baby, reach your prime, grow old, and return as a ghost. Every life leaves a legacy. I built the State Tree enemy AI, networked player identity replication, and the dynamic player list.
⚠️ Work in progress — all features and visuals are subject to change.
Gameplay screenshots
Features I built
Feature 01 State Tree Enemy AI
❌ The problem
Without reactive enemies, players move through the world with little risk — reducing tension and making exploration and combat feel predictable over time.
✅ The solution
This State Tree gives enemies clear combat behaviors and real-time branch transitions. Enemies shift between patrol, chase, and attack based on what the player does, keeping encounters dynamic and engaging.
Feature 02 Replicated Player Usernames
❌ The problem
Without proper synchronization, clients can display different usernames for the same player — causing confusion and breaking the multiplayer experience.
✅ The solution
Rep Notify replication pushes the player's name to all clients automatically. When a player joins, the username replicates instantly and OnRep fires on every client to update the UI in real time.
Feature 03 Replicated Player Colors
❌ The problem
Without color replication, each client can show different character colors — breaking visual identity and making it hard to distinguish players across the network.
✅ The solution
Player colors are stored in a Rep Notify variable. When the value changes, a callback fires on all clients to update the character's dynamic material instance — keeping colors consistent everywhere.
Feature 04 Dynamic Player List
❌ The problem
Without a dynamic roster, join and leave events are not reflected reliably — causing confusion about who is active. Polling-based approaches add complexity and scale poorly.
✅ The solution
The player list auto-updates whenever the replicated player-state array changes. Every client calls UpdateWidget on the event — the roster stays synchronized without any polling logic.