rpgCore

The Problem

My Approach

    Key Highlights

      How It Works

      [!IMPORTANT] rpgCore has been succeeded by OperatorGame. While the technical foundation of rpgCore remains a valid architectural study, the development has shifted to the Rust-based Operator engine for production-grade performance and cross-platform mobile stability.


      The Problem

      Build a flexible game engine capable of powering multiple game genres (space shooters, RPGs, tycoon games) with integrated AI learning systems. The challenge was bridging Python’s scripting capabilities with Godot’s visual rendering while maintaining clean separation of concerns.

      My Approach

      • β†’ ECS Architecture: Entity-Component-System for decoupled game logic.

      • β†’ Godot 4.x C# Frontend: Rendering and visual debugging layer.

      • β†’ Python Core Engine: NEAT genetic algorithm for AI training.

      • β†’ IPC Communication: Socket-based messaging between C# and Python.

      Key Highlights

      • 1,400+ lines of well-tested core engine code.
      • 31/31 tests passing (100% pass rate).
      • Complete architecture documentation (DELIVERABLES.md, BUILD_PIPELINE.md).
      • Multi-genre support: Space, RPG, Tycoon compatible.
      • NEAT AI integration showing neural network evolution visualization.

      How It Works

      rpgCore represented my most ambitious technical projectβ€”a production-grade game engine built as a proof of concept for cross-language architecture at scale.

      The Challenge

      Most game engines are monolithic, written in a single language. I wanted to explore what happens when you intentionally separate concerns: high-level game scripting in Python, real-time rendering in C#/Godot, and AI training in a separate Python process.

      Architecture Highlights

      The system consists of three tightly coupled components:

      1. Python Core Engine: Houses all game state, physics, AI logic, and ECS framework. Uses Pydantic for configuration.
      2. Godot Frontend: C# layer handles rendering and visual debugging. Communicates with Python core via socket IPC.
      3. NEAT Integration: Neural networks evolve through genetic algorithm, learning to play games through environmental feedback.

      Lessons Learned

      This project taught me that architectural clarity often matters more than raw performance for game prototyping. The benefits of clear separation of concerns outweighed the overhead of socket communication. This 100% test pass rate gave me the confidence to refactor aggressively, a principle that carried over to its successor, OperatorGame.

      Explore

      View Code on GitHub Docs ← Back to Projects

      πŸ“– Related Blog Posts

      Explore