Skip to content

BREAKING CHANGE: major file management refactor#222

Merged
aernw merged 7 commits into
devfrom
refactor-game-engine
Feb 2, 2026
Merged

BREAKING CHANGE: major file management refactor#222
aernw merged 7 commits into
devfrom
refactor-game-engine

Conversation

@aernw
Copy link
Copy Markdown
Owner

@aernw aernw commented Feb 2, 2026

Project Structure & Build System Refactor:

  • The project is renamed from RType to RTypeEngine and version bumped to 2.0.0, reflecting its new role as a reusable engine. The build system is reorganized to separate generic engine code (engine/) from game-specific code (games/rtype/, games/breakout/), and asset copying is now automated. The CMake configuration is updated to build engine libraries first, then games, then network libraries, and finally tests. A new demo game (breakout) is added to showcase engine reusability.

Core Engine Subsystems (New Features):

  • Event Bus: Introduces EventBus for decoupled publish-subscribe event handling, with built-in events for entities, collisions, scenes, and input actions.
  • Input Manager: Adds InputManager for action/axis-based input abstraction, supporting both keyboard and mouse, with customizable bindings.
  • Resource Manager: Adds ResourceManager to centralize asset loading and caching, supporting loader registration for different resource types.
  • Scene Manager: Adds SceneManager for scene lifecycle and transition management, allowing registration, loading, unloading, and transition between scenes.

Engine API Enhancements:

  • The Engine class now exposes accessors for the new subsystems (GetSceneManager, GetResourceManager, GetInputManager, GetEventBus), and includes them as member variables, making them available to all engine users.

Testing Improvements:

  • New test targets are added for the new subsystems (test_event_bus, test_scene_manager, test_camera_system), and test linking is updated to use the new modular engine libraries.

These changes significantly modernize the codebase, improve modularity, and lay the groundwork for supporting multiple games and future engine extensions.

  • Project structure and build system refactor:
    • Renamed project to RTypeEngine, reorganized CMake to separate engine and games, automated asset copying, and added a new demo game (breakout).
    • Added EventBus for decoupled event handling.
    • Added InputManager for action/axis-based input abstraction.
    • Added ResourceManager for centralized asset loading and caching.
    • Added SceneManager for scene lifecycle management.
  • Engine API enhancements:
    • Exposed new subsystems via the Engine class interface and included them as members.
  • Testing improvements:
    • Added new tests for core subsystems and updated test linkage to use modular engine libraries.

@aernw aernw merged commit 0b6a261 into dev Feb 2, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant