Gameplay Systems & UI Engineering
Unity • C# • UI/UX • Gameplay Architecture • Systems Programming
This project was developed collaboratively as a team, but the following page focuses exclusively on my personal contributions.
Overview
Throughout the project, I designed and implemented several of the game’s core gameplay and UI systems, including:
- A complete Card Upgrade & Selection System
- A polished Card Selection UI with animations, controller navigation
- A modular Upgrade Manager featuring rarity logic, stat scaling, and deck management
- Persistent upgrade‑based visual feedback on anchors when reaching specific thresholds
- A dynamic Player Shield System with unique elemental behaviors
- A modular Main Menu system with dynamic sub-menus for Audio,video, and Controls
- A fully implemented Victory Scene
- A dynamic Credit Scene with auto‑generated scrolling credits
- A polished UI Navigation Manager for seamless interaction across menus
- A responsive Pause Menu System integrated with gameplay flow
- A customizable Wave System that controls level progression and pacing
These systems work together to create a smooth, reactive, and polished player experience.
Card Upgrade & Selection System
Core Features
- Randomized card draws with rarity weighting
- Level‑based stat progression for every upgrade
- Dynamic descriptions showing before → after values
- A temporary blacklist that prevents the selected card from appearing in the next round
- Automatic removal of max‑level cards from the deck
- Event‑driven UI updates across the game
- Full controller navigation support
Gameplay Flow
- Wave ends → Card Selection UI appears
- Game freezes (
Time.timeScale = 0) - Three cards spawn sequentially with flip‑in animations
- Player chooses one
- Selected Card dissolves, providing clear visual feedback
- Game unfreezes (
Time.timeScale =1) - UI hides, HUD returns, next wave begins
Technical Highlights
- UpgradeManager.cs
- Tracks runtime levels
- Handles rarity rolls
- Computes stat totals per element
- Manages deck shrinkage
- Integrates with UI and anchor visuals
- UpgradeDataSO.cs
- Custom description templates
- Auto‑generated stat transitions
- Level‑based value accumulation
- Supports ability cards (non‑stat upgrades)
- CardUI.cs / CardIconUI.cs
- Flip‑in animation using
Time.unscaledDeltaTime - Fadeout animation
- Hover scaling and dynamic description preview
- Clean button callback registration
- Flip‑in animation using
Player Shield System (Fire, Ice, Wind)
I designed and implemented the entire shield mechanic, including:
Shield Types & Behaviors
- Fire Shield
- Breaks on hit
- Triggers a fire explosion damaging nearby enemies
- Has cooldown + auto‑reactivation
- Ice Shield
- Breaks on hit
- Freezes enemies in a radius
- Has cooldown + auto‑reactivation
- Wind Shield
- Multiple charges
- Breaks only when charges reach zero
- Has cooldown + auto‑reactivation
Technical Highlights
- Event‑driven shield break notifications
- Cooldown routines using coroutines
- Area‑based explosion logic
- Integration with the player anchor
- Clean separation of shield logic vs. upgrade logic
Pause Menu System
I implemented a robust pause system that:
- Freezes gameplay safely
- Prevents pausing during card selection or death
- Auto‑selects the first button for controller navigation
- Plays FMOD open/close sounds
- Restores cursor lock state properly
- Refreshes upgrade icons inside the pause menu
- Ensures input maps rebind correctly when switching action maps
This system ensures the game feels polished and consistent across keyboard, mouse, and controller.
Wave System Integration
While not the main author of the wave system, I integrated:
- Card selection triggers at wave completion
- Debug skip‑to‑wave functionality
- Kill‑all‑enemies debug tool
- Victory screen transition after final wave
- Area‑based wave gating (transition waves)
This ensures the upgrade system and wave progression work together seamlessly.
Anchor Visual Upgrade Feedback
I implemented visual progression on anchors:
- Mesh activation at upgrade thresholds (5, 10, 15+)
- Automatic gold material swap at high upgrade counts
- Event‑driven updates via
OnUpgradesChanged
This gives players clear visual feedback on their progression.
Main Menu Scene
I implemented a structured and responsive main menu that:
- Handles scene transitions for gameplay and credits
- Provides expandable Audio, Video, and Controls sub‑menus
- Ensures clean UI state management when opening or closing options
- Disables buttons intelligently to prevent overlapping interactions
- Initializes all sub‑menus hidden for a polished first‑time experience
- Supports controller‑friendly navigation across all menu elements
This system ensures the player enters the game smoothly and interacts with settings without confusion or UI conflicts.
Victory Scene
A simple, clean, and fully integrated end‑of‑game screen.
My contributions:
- Automatic transition after the final wave
- Victory UI layout and animations
- Controller‑friendly navigation
- Return‑to‑menu flow
Credit Scene
A dynamic scrolling credit scene built with Unity UI and TextMeshPro.
My contributions:
- Automatic generation of credit text from
CreditSectiondata - Custom typography (titles, spacing, sizes, formatting)
- Smooth vertical scrolling using
RectTransform.anchoredPosition - Configurable scroll speed and line spacing
- Clean UI integration using TextMeshPro
- Button to return to the main menu
- Simple, readable, and easily extendable code (Example from the script: “creditText.text += $”<size=60><b>{section.title}</b></size>\n”;”) (Scrolling logic: “scrollRoot.anchoredPosition += Vector2.up * scrollSpeed * Time.deltaTime;”)
Technical Strengths to Highlight
- Clean separation of systems (UI, upgrades, shields, waves)
- Event‑driven architecture (
OnUpgradesChanged,OnShieldBroken) - Modular ScriptableObject‑based upgrade design
- Controller‑friendly UI navigation
- Polished animations using unscaled time
- Safe pause logic integrated with gameplay flow
- Expandable upgrade and card system
- Strong debugging tools (skip waves, kill enemies, logs)
Conclusion
My contributions focused on building core gameplay systems, UI/UX polish, and upgrade mechanics that make the game feel responsive, dynamic, and satisfying. These systems are modular, scalable, and designed for future expansion whether adding new cards, new elements, new waves, or new player abilities.
