Invasion
Solo Project — MonoGame/XNA — 2D Top-Down Shooter
Role:
Solo Developer / Gameplay Programmer - Focusing on player mechanics, enemy AI mechanics, scoring/lives system and level transitions
Tools:
C#
MonoGame/XNA
OOP structure (Player/Enemy/Bullet/Controller)
What I did:
Built a full top-down 2D shooter from scratch without a game engine, implementing the core Update/Draw loop, input handling, and SpriteBatch rendering
Structured gameplay around OOP responsibilities (Player, Enemy, Bullet, Controller/Manager) to keep logic clean and debuggable
Implemented arena-based level progression: clear enemies within a bounded area, then transition through a portal to the next level
Built score and lives systems to drive challenge and progression pressure
Built a controller/manager-driven enemy spawn system (enemy list + timer-driven logic) for pacing
What I learned:
Working without an engine meant properly understanding Update vs. Draw at a raw level, input/game state has to stay separate from rendering for things to remain stable
OOP separation scales even in small projects, keeping Player/Enemy/Bullet/Controller apart made debugging far easier than one tangled block of logic
Building this from scratch gave me a sharper appreciation for what UE5/Unity provide for free (collision helpers, UI systems), and a stronger low-level foundation underneath the engine-level work I do now
What’s in the game
Overview
Invasion was one of my first projects and my introduction to building a complete game without a full engine like Unity/Unreal. The focus was implementing a playable top-down shooter loop with clear level progression using fixed arenas and portal transitions.
A solo MonoGame top-down 2D shooter where the player fights enemies within fixed arena boundaries, then uses a portal to progress to the next level. Built from the ground up around core fundamentals: update/draw loop, input, enemies, bullets, scoring, lives, and level transitions.
How it was built (Structure)
I planned the project using a clear OOP split of responsibilities (Player, Enemy, Bullet and a Controller/Manager) with a central Game class handling the MonoGame lifecycle (Initialize → LoadContent → Update → Draw).
Top-down 2D shooter gameplay with movement restricted to set boundaries per level/arena.
Core shooter loop: fire bullets, manage enemies, and survive to push your score.
Portal progression: clear an area / meet progression conditions, then enter a portal to move to the next level.
Score + lives systems to drive challenge and progression pressure.
Structured spawning/pacing controlled via a controller/manager (enemy list + timer-driven logic).

