Skip to main content

Engineering project

Modular 2D RPG Engine

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.

C#MonoGamexUnitXMLWinForms

Project overview

The context behindthe final result.

A closer look at the goals, decisions, and technical thinking that shaped the project.

The project began as a game and gradually evolved into a reusable engine with distinct systems for gameplay, rendering, input, persistence, and content creation.

Its primary value is the architecture behind the game: reusable components, data-driven content, testable systems, and tooling that reduces repetitive setup work.

Key features

What the projectneeded to accomplish.

Core capabilities delivered for Modular 2D RPG Engine.

01

Modular engine systems

Rendering, input, combat, animation, state management, and persistence are separated into focused systems for easier maintenance.

02

Custom combat logic

Reusable combat components handle attacks, player actions, hit detection, and enemy interactions.

03

Animation system

Sprite animation supports movement, directional states, and reusable animated objects.

04

Save and load persistence

XML-based persistence stores and restores structured game data across play sessions.

05

WinForms editor tooling

A companion editor reduces manual configuration and speeds up content creation.

06

Automated testing

xUnit tests validate core systems and reduce regressions during ongoing development.

Engine flow

From input to rendered gameplay

Each frame captures player input, applies game-state changes, resolves interactions, updates animation, and renders the resulting scene.

  1. 01

    Input

    Capture keyboard and player controls.

  2. 02

    Update

    Apply game logic and state changes.

  3. 03

    Combat

    Resolve attacks, collisions, and interactions.

  4. 04

    Animate

    Update sprite frames and movement states.

  5. 05

    Render

    Draw the updated scene through MonoGame.

Technical highlights

The systems behindthe interface.

Selected architectural and implementation decisions that shaped the project.

01

MonoGame rendering

MonoGame renders gameplay scenes, sprites, shapes, and interface elements.

02

C# engine architecture

The codebase is organized into separate systems with clear responsibilities.

03

XML persistence

Structured XML data supports save, load, and content-driven workflows.

04

Geometry and collision logic

Reusable shape and collision systems support attacks, objects, and interaction checks.

05

Desktop tooling

WinForms utilities support content creation outside the running game.

06

xUnit testing

Tests improve reliability during refactoring and feature development.

Challenges

The difficult partsshaped the better decisions.

The constraints and implementation problems that required the most thought.

01

Managing engine complexity

As the project grew, large systems had to be separated into smaller reusable components with clearer responsibilities.

02

Building reusable game systems

Systems needed to support different gameplay objects without becoming tightly coupled to one feature.

03

Improving content creation

Manual configuration became time-consuming, which led to the creation of dedicated editor tooling.

Future direction

Still evolving.Still worth refining.

Potential next steps identified through the current implementation.

  1. 01

    Expand map editor features

  2. 02

    Add more enemy behaviors

  3. 03

    Improve combat balancing

  4. 04

    Expand inventory and quest systems

  5. 05

    Improve the asset-loading pipeline

  6. 06

    Package a playable demo

Explore what comes next

Need something with similar depth?

Custom software projects are scoped around the workflow, users, and technical requirements involved.