Clay Beats
Couch co-op rhythm game - Unreal Engine 5 (Blueprints & C++)
Clay Beats is a fast-paced, couch co-op rhythm game developed as my senior capstone and released on Steam. I worked on gameplay systems, UI, level transitions, and the underlying interaction systems using a mix of Blueprints and C++ to ship a polished, performant experience.
Role: Gameplay Programmer - Blueprints & C++
- Collaborated with a large multidisciplinary team to implement song selection, input/interaction indicators, and camera systems.
- Built persistent settings, level streaming transitions, and optimized Blueprint-heavy systems for a ~30% performance improvement.
- Owned integration tasks for the corkboard selection system and assisted with packaging and Steam deployment.
What I Worked On - Technical & Design Highlights
Sprint 1 - Curved Level Shader & Parameter Collection (Oct 17, 2024)
I created a reusable material function that applies a subtle curvature effect to levels based on the player camera. To make it designer-friendly, I exposed all important variables through a global parameter collection so changes propagate immediately across all materials that use the function. This improved the visual cohesion of levels while keeping artist iteration fast.
Sprint 2 - Corkboard Blueprint & Camera Transitions (Oct 24, 2024)
Implemented the first corkboard blueprint used for song selection. There are two modes: an automatic camera transition that activates when the player nears the board, and a version that boots directly to the corkboard on level load. This system included camera blending, input handling, and a simple UI overlay for selection.
Sprint 3 - Song Selection Logic & Highlighting (Nov 7, 2024)
Expanded the corkboard to support per-paper behavior: clicking a paper selects its song, hovering highlights the paper, and papers can be hidden if no song is linked. I implemented a flexible data-driven system so designers could swap songs or behaviors without touching code.
Sprint 4 - Controller Support & Level Streaming (Nov 21, 2024)
Added controller navigation to the corkboard and integrated level streaming to smoothly transition between the overworld and the corkboard levels. This reduced load hiccups and allowed sections of the game to remain modular during development.
Sprint 5 - Settings Menu & Persistence (Dec 10, 2024)
Built the Options menu by repurposing existing UI assets. To keep the game approachable for all ages we exposed a single quality slider (rather than many discrete toggles) and wired volume/resolution/quality settings to persistent storage so player preferences survive launches.
Sprint 6 - Loading Screens & Interaction Indicators (Jan 23, 2025)
Implemented fading transitions, loading screens, and started adding indicators that show when players can interact with nearby objects. These indicators are highlighted per-player so two players can quickly see which interactable belongs to them.
Gold Sprints - Interaction Systems, Quest Link, Stabilization (Feb-Mar 2025)
Built the player interaction indicator system: indicators appear when a player is near an interactable and are color/highlighted depending on the player. I connected the corkboard into the in-game quest system and performed numerous bug fixes across UI, input handling, and streaming transitions.
Live Ops - Controller/Keyboard Edge Cases (Apr 3, 2025)
During live ops I focused on multiplayer input edge cases: two players sharing one keyboard, and mixed controller/keyboard setups. I fixed race conditions that caused conflicting selections on the corkboard and cleaned up lingering Blueprint/logic issues discovered during playtests.
Deep Technical Notes
I primarily used Blueprints for UI and designer-facing systems, and moved performance-sensitive logic into C++ where appropriate. Profiling revealed several Blueprint graph hotspots; by refactoring high-frequency code paths and caching expensive calls, I reduced frame-time spikes and achieved an approximate 30% performance improvement for the target levels. For level streaming and transitions I relied on Unreal's streaming volumes with custom loading screens and fade logic to hide pop-in and maintain perceived frame stability.
The corkboard is data-driven: each paper is bound to an entry that defines the song asset, preview image, and on-select behavior. This allowed rapid iteration by designers without code churn. Interaction indicators are player-index aware and use a small replicated struct to sync which player currently 'owns' or is nearest an interactable in local co-op sessions.
Gallery