GroveEngine/docs
StillHammer aa3c35bd2f docs: Update all documentation to reflect development stage
COMPREHENSIVE DOCUMENTATION CLEANUP:

DEVELOPER_GUIDE.md:
- Add prominent warning at top (development-ready, NOT production-ready)
- New 'Current Limitations' section with detailed warnings:
  * Non-deterministic execution
  * Single-threaded only
  * Not suitable for networked games
  * No error recovery, limited optimizations
- Change all 'Production Ready' → 'Development Ready' status tags
- BgfxRenderer: Phase 8 complete | Experimental
- UIModule: Phase 7 complete | Experimental
- InputModule: Phase 1-3 complete | Gamepad Phase 2 TODO
- Add 'What GroveEngine IS Good For' section (prototyping, learning, AI-assisted dev)
- Add Production Roadmap section

USER_GUIDE.md:
- Add experimental/development warning with link to README

Module READMEs:
- BgfxRenderer/README.md: Add development stage warning
- InputModule/README.md: Clarify Phase 1-3 complete, gamepad TODO
- UIModule/README.md: Add experimental warning, clarify thread-safe design is for future

All documentation now consistently reflects that GroveEngine is:
 Excellent for rapid prototyping and experimentation
⚠️ NOT ready for production games
⚠️ Non-deterministic execution
⚠️ Single-threaded only (for now)

Total changes: 5 files, 62 insertions, 13 deletions
2026-01-15 09:26:23 +07:00
..
architecture feat: Add integration test scenarios 11-13 for IO and DataNode systems 2025-11-18 15:09:39 +08:00
implementation Initial commit: Grove Engine core architecture 2025-10-28 00:19:15 +08:00
performance_reports fix: Resolve deadlock in IntraIOManager + cleanup SEGFAULTs 2025-11-23 11:36:33 +08:00
plans feat: Complete Phase 6.5 - Comprehensive BgfxRenderer testing 2025-11-29 22:56:29 +08:00
coding_guidelines.md fix: Resolve deadlock in IntraIOManager + cleanup SEGFAULTs 2025-11-23 11:36:33 +08:00
DEVELOPER_GUIDE.md docs: Update all documentation to reflect development stage 2026-01-15 09:26:23 +07:00
FEATURES.md fix: Resolve bgfx Frame 1 crash on Windows DLL + MinGW GCC 15 compatibility 2025-12-30 11:03:06 +07:00
PLAN_BGFX_RENDERER.md feat(BgfxRenderer): Complete Phase 4 - ShaderManager integration 2025-11-26 22:27:19 +08:00
PROMPT_UI_MODULE_PHASE6.md feat: Complete UIModule Phase 7 - ScrollPanel & Tooltips 2025-11-29 07:13:13 +08:00
README.md docs: Add complete IDataTree system architecture documentation 2025-10-28 16:18:15 +08:00
UI_ARCHITECTURE.md feat: UIModule - Dynamic text updates, documentation restructure, and IIO improvements 2026-01-14 22:34:36 +07:00
UI_MODULE_DEMO.md feat: Add UIModule interactive showcase demo 2025-11-29 08:52:25 +08:00
UI_MODULE_PHASE2_COMPLETE.md feat: Complete UIModule Phase 7 - ScrollPanel & Tooltips 2025-11-29 07:13:13 +08:00
UI_MODULE_PHASE3_COMPLETE.md feat: Complete UIModule Phase 7 - ScrollPanel & Tooltips 2025-11-29 07:13:13 +08:00
UI_MODULE_PHASE6_PROGRESS.md feat: Complete UIModule Phase 7 - ScrollPanel & Tooltips 2025-11-29 07:13:13 +08:00
UI_MODULE_PHASE7_COMPLETE.md feat: Complete UIModule Phase 7 - ScrollPanel & Tooltips 2025-11-29 07:13:13 +08:00
UI_RENDERING.md feat: Retained mode rendering for UIModule 2026-01-06 14:06:28 +07:00
UI_TOPICS.md feat: UIModule - Dynamic text updates, documentation restructure, and IIO improvements 2026-01-14 22:34:36 +07:00
UI_WIDGETS.md feat: UIModule - Dynamic text updates, documentation restructure, and IIO improvements 2026-01-14 22:34:36 +07:00
USER_GUIDE.md docs: Update all documentation to reflect development stage 2026-01-15 09:26:23 +07:00

GroveEngine Documentation

Overview

GroveEngine is a modular game engine architecture designed for distributed systems and hot-reload development. It provides a clean separation between business logic (modules) and infrastructure (engine, IO, scheduling).

Architecture Documents

Core Systems

  • Data Tree System - Unified config/data/runtime management

    • IDataNode/IDataValue/IDataTree interfaces
    • JSON backend implementation
    • Hot-reload and persistence
    • Distributed configuration synchronization
  • Modular Architecture - Module system design

    • IModule interface and constraints
    • IModuleSystem execution strategies
    • Hot-reload workflow
    • Claude Code optimization
  • Claude Code Integration - AI development workflow

    • Micro-context development
    • Hot-reload for rapid iteration
    • Module development best practices

Quick Start

Creating a Module

#include <grove/IModule.h>
#include <grove/IDataNode.h>

class TankModule : public IModule {
private:
    IIO* m_io;
    int m_armor;
    double m_speed;

public:
    void setConfiguration(const IDataNode& config, IIO* io, ITaskScheduler* scheduler) override {
        m_io = io;
        m_armor = config.getInt("armor", 100);
        m_speed = config.getDouble("speed", 5.0);
    }

    void process(const IDataNode& input) override {
        // Game logic here

        // Save state via IIO
        auto state = createDataNode({
            {"armor", m_armor},
            {"speed", m_speed}
        });
        m_io->publish("save:tank:state", std::move(state));
    }

    std::unique_ptr<IDataNode> getState() override {
        return createDataNode({
            {"armor", m_armor},
            {"speed", m_speed}
        });
    }

    void setState(const IDataNode& state) override {
        m_armor = state.getInt("armor", 100);
        m_speed = state.getDouble("speed", 5.0);
    }

    std::string getType() const override { return "tank"; }
};

Using the Data Tree

#include <grove/DataTreeFactory.h>

// Create tree
auto tree = DataTreeFactory::create("json", "./gamedata");

// Access configuration (read-only)
auto configRoot = tree->getConfigRoot();
auto tankConfig = configRoot->getChild("tanks")->getChild("heavy");
int armor = tankConfig->getInt("armor");

// Access persistent data (read-write)
auto dataRoot = tree->getDataRoot();
auto progress = dataRoot->getChild("campaign")->getChild("progress");
progress->setData(createDataNode({{"level", 5}}));
tree->saveData();

// Hot-reload config
if (tree->reloadIfChanged()) {
    // Config changed, refresh modules
}

Key Concepts

Module System

  • Modules: 200-300 line business logic units
  • IModuleSystem: Execution strategy (Sequential, Threaded, Distributed)
  • Hot-reload: Replace modules without restarting
  • State preservation: getState/setState for seamless updates

Data Management

  • config/: Read-only game configuration (hot-reload, distributed)
  • data/: Persistent player data (local saves)
  • runtime/: Temporary state (never saved)

Communication

  • IIO: Pub/sub messaging between modules
  • ITaskScheduler: Delegate heavy computation
  • Save pattern: Modules publish "save:*" messages, Engine persists

Distribution

  • Coordinator: Master config with hot-reload
  • Engines: Local replicas, synchronized config
  • Isolation: Each Engine has independent data/

Design Principles

  1. Interface-based: Work with abstractions (IDataNode, not JsonDataNode)
  2. Backend-agnostic: Swap implementations without code changes
  3. Minimal coupling: Modules communicate only via IIO
  4. Hot-reload first: Development optimized for instant feedback
  5. Distribution-ready: Config sync, data isolation built-in

Project Status

Implemented

  • Complete IDataNode/IDataTree system
  • JSON backend (JsonDataValue, JsonDataNode, JsonDataTree)
  • Hot-reload for config files
  • Save/load for persistent data
  • Pattern matching and property queries
  • SHA256 hashing for validation

In Progress 🚧

  • Coordinator synchronization implementation
  • Module system integration with DataTree
  • Example modules and tests

Planned 📋

  • Binary format backend
  • Database backend
  • Network synchronization protocol
  • Schema validation
  • Migration system

Contributing

When adding new features:

  1. Start with interface definition (.h file)
  2. Add documentation to this folder
  3. Implement concrete class
  4. Update architecture docs
  5. Write usage examples

Further Reading


Last Updated: 2025-10-28 Engine Version: 1.0.0