Capstone Game Development Project
Overview
This capstone project brings together game development coursework, object-oriented programming, and project planning into a finished game prototype. The goal is to turn a broad concept into something playable, demonstrable, and tested enough to explain as a complete software project.
What I Built
- A playable game with a defined core loop and clear player goals.
- Gameplay systems organized around object-oriented code rather than one-off scripting.
- Iteration checkpoints for mechanics, visual feedback, balancing, and presentation.
- A project structure that can be explained, demonstrated, and extended after the course.
Technical Focus
The project emphasizes C# fundamentals, class design, state management, and gameplay-loop thinking. I'm treating the capstone as both a game project and a software-engineering project; the architecture needs to stay understandable as features get added.
Parallel Web Stack (Cozy)
I also maintain Cozy, a TypeScript and Svelte 5 codebase that prototypes the same systems thinking in the browser: a small engine, data-driven maps, NPCs, progression, plus a map editor for iteration. The structure below reflects the bundled web demo architecture.
Engine + Runtime Class View
Display
- + applyDrawQueue(commands)
- + resizeToContainer()
Game
- - canvas: CanvasLib
- - loader: Loader
- + load(fn)
- + update(fn)
- + draw(fn)
- + drawOnce(fn)
GameInput
- + snapshot(): GameInputState
SessionProgress
- + collect(id)
- + completeTask(id)
- + snapshot(): ProgressSnapshot
SceneOrchestrator
- - game: Game
- - progress: SessionProgress
- + mountGame(container)
- + loadScene(url)
LoadedTileMap
- + tileLayers
- + doors
- + entities
- + tileWorldSize(): Vec2
- Display *-- Game
- GameInput --* Game
- Game --* SceneOrchestrator
- SessionProgress *-- SceneOrchestrator
- SceneOrchestrator ..> LoadedTileMap loads JSON
- Game ..> LoadedTileMap renders
Game wires CanvasLib through Display and GameInput, while mountGame builds SessionProgress and drives loadTileMap() into LoadedTileMap.
Engineering Decisions
Game projects require multiple engineering decisions in one small system: input handling, state changes, feedback, asset coordination, and deadline-driven scope control. This project shows I can carry an idea from design through implementation and presentation.