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).

Previous
Previous

Hungry Bear