Project Overview
A feature-rich 2D platformer game built with MonoGame framework, showcasing advanced game development techniques including custom physics systems, sprite animation, level design, and cross-platform deployment. The game features smooth character movement, engaging gameplay mechanics, and polished visual effects.
This project demonstrates proficiency in C# programming, game engine architecture, 2D graphics programming, and cross-platform game development. The platformer includes multiple levels, collectibles, enemies, and a progression system that creates an engaging player experience.



Key Features
Custom Physics Engine
Implemented gravity, collision detection, and responsive platformer physics for smooth character movement.
Sprite Animation System
Frame-based animation system with smooth transitions between running, jumping, and idle states.
Built-in Level Editor
Comprehensive level design tools with real-time editing, collision visualization, and tile placement system.
Enemy AI Behavior
Intelligent enemy movement patterns with pathfinding and player detection systems.
Combat & Magic System
Spell casting mechanics with visual effects, damage systems, and attack collision detection.
Cross-Platform Support
Deployable to Windows, Mac, Linux, and mobile platforms using MonoGame's cross-platform capabilities.
Technical Implementation
Built using the MonoGame framework with C#, leveraging object-oriented programming principles and game development design patterns for maintainable and scalable code architecture.
Core Technologies:
- MonoGame Framework - Cross-platform game development framework
- C# Programming - Object-oriented game logic and systems
- Content Pipeline - Asset management and optimization
- SpriteBatch Rendering - Optimized 2D graphics rendering
- Custom Physics - Collision detection and response systems

Animation & Character System:
The game features a sophisticated animation system with multiple character states and smooth transitions:

// Player state management with animation transitions
public enum motion { none, walk, jump, idle1, idle2, duck, spell, ouch }
public enum duck_state { down, up }
public enum jump_state { start, air, end }
public enum Facing { left = -1, right = 1 }
// Animation control with MeoMotion and MeoPlayer systems
MeoMotion meo; // reference to MonsterSys's meoMotion player
MeoPlayer meo_play; // for controlling enemy character animations
bool flip; // flip horizontally
Vector2 rescale; // adjusts meo player image scale for resolutionPhysics & Movement System
The platformer implements realistic physics with precise collision detection and responsive character controls:

Physics Constants:
// Physics constants for realistic platformer feel
const float GRAVITY = 0.25f;
const float MAX_FALL_SPEED = 20;
const float MAX_VELOCITY = 7.3f; // max walk/run speed
const float MAX_JUMP = -12; // maximum jump-up speed
// Player collision and positioning
const int half_player_width = 32;
const int player_feet_offset = 26;
const int player_head_offset = 71;Input System Implementation:


// Responsive input handling with state tracking
public KeyboardState kb, okb;
public bool shift_down, control_down, alt_down;
public bool shift_press, control_press, alt_press;
public void Update()
{
old_alt_down = alt_down; old_shift_down = shift_down; old_control_down = control_down;
okb = kb;
kb = Keyboard.GetState();
// Detect key press events (not just held down)
if ((shift_down) && (!old_shift_down)) shift_press = true;
if ((control_down) && (!old_control_down)) control_press = true;
if ((alt_down) && (!old_alt_down)) alt_press = true;
}Enemy AI & Monster System
The game features intelligent enemy behavior with different monster types and sophisticated AI patterns:

Monster Types & Behavior:

// Monster type system with different AI behaviors
enum MonsterType { None, Mouster, Hellcat }
public class Monster
{
const float GRAVITY = 0.25f, MAX_FALL_SPEED = 20;
const float MAX_JUMP = -12;
public enum Act { idle, walk, run, attack, jump, ouch } // AI states
public enum Mode { wander, chase, escape, patrol } // AI behavior modes
MonsterType type; // which type of monster
public bool dead; // if it's dead, skip processing it
public int life; // life status
public Vector2 pos, vel; // world position, velocity
public Vector2 target_vel; // velocity goal (either random or deliberate)
public Rectangle bbox; // bounding box for collision detection
public Rectangle attack_box;// for collision detection of attack from monster
bool grounded; // monster on ground or not
}HUD & User Interface
The game includes a comprehensive HUD system with health management, score tracking, and visual feedback:

HUD Components:
// HUD class for displaying player status
class Hud
{
SpriteBatch spriteBatch;
SpriteFont font;
Texture2D hud_tex;
Rectangle lifebar_border, lifebar, life_word, mini_hero, life_rect;
Vector2 lifebar_pos, lives_pos, life_word_pos, count_pos;
public float life; // amount of life in lifebar
public int lives; // number of retries
public Hud(SpriteBatch spr, SpriteFont fnt)
{
spriteBatch = spr;
font = fnt;
lifebar_border = new Rectangle(0, 64, 284, 21);
lifebar = new Rectangle(0,0,284,21);
life_word = new Rectangle(0, 22, 60, 27);
mini_hero = new Rectangle(326, 14, 48, 37);
life_word_pos = new Vector2(10, 6);
lifebar_pos = new Vector2(70, 10);
lives_pos = new Vector2(360, 3);
count_pos = new Vector2(410, 10);
}
}System Architecture
The game implements a modular architecture with well-defined system boundaries and clear separation of concerns:

Core Game Systems:

// Game state management and core systems
Hud hud; // reference to Game1.hud for display of player status
Facing direction = Facing.right; // which direction is the character facing
motion hero_motion = motion.idle1, last_hero_motion = motion.none;
duck_state duck_mode = duck_state.down;
jump_state jump_mode = jump_state.start;
// Coordinate system management
public Vector4 bbox; // bounding box used in other modules
public Vector2 pos; // player's position in world coordinates
public Vector2 screen_pos; // player's position as it appears on screen
public Point loc; // player tile-map location
Vector2 old_pos; // previous world position
Point old_loc; // previous map location (in tiles)
Vector2 snow_loc; // snow location
Vector2 vel; // player's velocity
float MAX_JUMP = -14f; // maximum jump-up speed
bool grounded; // player on ground or notLevel Design & Built-in Editor
The game features a comprehensive level editor integrated directly into the gameplay experience:

Level Editor Features:
- Tile Placement - A-Z keys for adding different tile types and terrain
- Collision Editing - Visual collision box editing with F12 debug view
- Character Placement - 1-9 keys for adding different characters and enemies
- Save/Load System - Export levels to Content\\lev1.txt format
- Real-time Testing - Enter key for instant level testing
- Visual Feedback - Red collision boxes and tile placement indicators
Advanced Level Features:
- Dynamic Backgrounds - Parallax scrolling space environments
- Interactive Elements - Spring platforms, collectible management
- Environmental Hazards - Lava, spikes, and moving platforms
- Atmospheric Effects - Particle systems and visual polish
Advanced Game Mechanics
Combat System:
The game implements a sophisticated combat system with multiple interaction types:
- Spell Casting - Magic projectile system with visual effects
- Collision Detection - Separate bounding boxes for movement and attack
- Damage System - Health management with visual feedback
- Enemy Interactions - Multiple monster types with unique behaviors
Character Movement:
Responsive platformer controls with realistic physics:
- Variable Jump Height - Jump height based on input duration
- Ground Detection - Precise collision detection for jumping
- Momentum System - Realistic acceleration and deceleration
- State Transitions - Smooth animation between movement states
Visual Systems:
Polished visual presentation with dynamic effects:
- Sprite Flipping - Automatic character orientation based on movement
- Animation Timing - Frame-perfect sprite animation system
- Screen Effects - Dynamic camera positioning and visual feedback
- UI Integration - Responsive HUD with health and status indicators
Development Challenges & Solutions
Frame-Rate Independent Physics:
Challenge: Ensuring consistent physics behavior across different frame rates and platforms.
Solution: Implemented delta time-based physics calculations with fixed timestep integration for stable collision detection and movement.
Complex Animation State Management:
Challenge: Managing multiple animation states with smooth transitions and timing.
Solution: Created a comprehensive enum-based state system with transition logic and frame timing controls for seamless animation flow.
Level Editor Integration:
Challenge: Building a level editor that works seamlessly within the game runtime.
Solution: Developed a real-time editing system with visual feedback, instant testing capabilities, and persistent save/load functionality.
Cross-Platform Compatibility:
Challenge: Ensuring consistent gameplay experience across different platforms and input methods.
Solution: Used MonoGame's cross-platform capabilities with abstracted input handling and scalable rendering systems.
Future Enhancements
Planned improvements and additional features for continued development:
- Multiplayer Mode - Local co-op gameplay with shared screen mechanics
- Enhanced Level Editor - Visual tile palette, brush tools, and advanced editing features
- Mobile Controls - Touch-optimized interface for mobile platforms
- Boss Battles - Complex enemy encounters with unique mechanics and patterns
- Story Mode - Narrative elements and character development progression
- Sound System - Dynamic audio with environmental effects and music
- Achievement System - Progress tracking and unlock rewards
- Online Leaderboards - Competitive scoring and time trial rankings