Modular Engine Systems
Separated rendering, input, combat, animation, state management, and persistence into organized systems for easier maintenance.
Game Engine Architecture Project
A custom 2D RPG engine built with C#, MonoGame, XML, and xUnit, focused on modular systems for rendering, input, animation, combat, persistence, and content editing.
Context & purpose
This project is a custom 2D RPG engine built to explore C# software architecture through rendering, input, state management, combat, animation, persistence, and tooling.
The codebase grew beyond 10,000 lines and became a long-running exercise in modular design, refactoring, testing, and maintaining reusable systems across iterative development cycles.
It also includes a WinForms editor that improved content creation efficiency and provided experience building tools around a larger application.
From Input to Rendered Gameplay
The engine processes player input, updates game state, handles combat and animation logic, then renders the updated scene through MonoGame.
Capture keyboard and player controls.
Apply game logic and state changes.
Resolve attacks, collisions, and interactions.
Update sprite frames and movement states.
Draw the updated scene through MonoGame.
Capture keyboard and player controls.
Apply game logic and state changes.
Resolve attacks, collisions, and interactions.
Update sprite frames and movement states.
Draw the updated scene through MonoGame.
Engine functionality
Separated rendering, input, combat, animation, state management, and persistence into organized systems for easier maintenance.
Built reusable combat components for attacks, player actions, hit detection, and enemy interactions.
Created sprite animation handling for character movement, directional animation states, and reusable animated objects.
Used XML-based persistence to store and reload game data across play sessions.
Developed a companion editor tool to speed up content creation and reduce manual configuration work.
Used xUnit tests to validate core systems and reduce regressions during iterative development.
Interface preview
Architecture & implementation
Used MonoGame to render 2D gameplay scenes, sprites, shapes, and user interface elements.
Organized the codebase into separate systems for rendering, input, animation, combat, state management, and persistence.
Used XML to store structured game data and support save/load workflows.
Implemented reusable shape and collision logic for gameplay objects, attacks, and interaction checks.
Built a desktop editor utility to support faster content creation and reduce repetitive setup work.
Added unit tests around core systems to improve reliability during ongoing refactoring and feature development.
Problem solving
Planned enhancements
Continue exploring
Browse additional full-stack applications, production websites, and software projects covering APIs, databases, testing, deployment, and maintainable system design.
Back to projects