A 2D Action-Survival game (Survivor-like) built with C# and MonoGame featuring an isometric perspective. This project demonstrates a complete game loop including procedural map generation, spatial partitioning for physics, a custom map editor, and a scalable entity component structure.
- Isometric Engine: Custom rendering logic converting world coordinates to isometric screen space with depth sorting (
IsoMath). - Procedural Generation: Algorithms to generate infinite-feeling arenas with lakes, dirt patches, and walls.
- Custom Map Editor: A built-in tool to create, edit, and save maps (
.json) with tile placement and trigger zones. - Optimization: Implements Spatial Hashing (
SpatialGrid) to handle collision detection for hundreds of entities efficiently. - Gameplay Systems:
- Upgrade System: Level-up logic with random weapon/passive upgrades (RNG).
- Weapons: Auto-firing wands, orbiting shields, and projectile logic.
- Pathfinding: A* algorithm implementation for enemy navigation.
- State Management: Robust Finite State Machine handling Menu, Game, Editor, Pause, and Level Up states.
- WASD / Arrows: Move Character.
- ESC: Pause Game.
- Space/Enter: Confirm selections (Level Up).
- Attacks are automatic based on weapon cooldowns.
- Tab: Switch between Tile Mode and Trigger Mode.
- WASD / Arrows: Pan Camera.
- Left Click: Place Tile / Select Trigger.
- Right Click: Erase Tile / Add Trigger.
- Q / E: Cycle through Tile Palette.
- Ctrl + S: Save Map.
- Ctrl + N: New Map.
- Scroll: Zoom In/Out.
-
Prerequisites
- .NET 8.0 SDK
- Visual Studio 2022 (with .NET Desktop Development workload).
-
Clone and Open
git clone https://github.com/g-brrzzn/IsometricGame-MonoGame.git Open the .sln file in Visual Studio. Build Press F5 to build and run the project. Ensure Content is built correctly via the MonoGame Content Pipeline if modifying assets.
- Language: C# (.NET 8)
- Framework: MonoGame
- Data: JSON (Newtonsoft) for Map serialization.
- Physics: Custom AABB implementation with Isometric projection.
Developed as a personal project to explore game architecture patterns and MonoGame capabilities.