Interactive Mermaid diagrams showing every layer, every connection, every flow in PGX.
In a star topology, every L2 plugin depends exclusively on the L1 core (PGXCoreRuntime). This means:
Zero inter-plugin coupling — removing any L2 plugin never breaks another. Predictable compilation — changing one system only recompiles that system and the core. Clean testing — each subsystem can be tested in isolation.
The three documented exceptions (Loading→GameFlow, Loading→PSO, PSO→GameFlow) exist because loading screen orchestration genuinely requires awareness of game flow state and PSO precaching. These are validated, load-order critical dependencies — not convenience shortcuts.
PGX enforces a strict initialization order through subsystem dependencies. Profile initializes first (platform budgets must be available before any system reads configuration). EventHandler initializes last (it needs all systems registered to route events correctly).
This eliminates race conditions and ensures that when a subsystem's Initialize() runs, all its dependencies are already live.
Every PGX system discovers its configuration at startup through AssetRegistry scanning. The developer creates a DataAsset in the Content Browser, fills in properties, and the system picks it up automatically.
Profile v2.0 adds platform-aware budgets: 11 subsystems read their limits from UPGXPlatformConfig and enforce them at runtime. This means the same project can target mobile, console, and PC with different quality levels — all from DataAssets, zero code changes.
Message Bus (green) — Fire-and-forget notifications. "Something happened, anyone who cares can react." No return value, no priority, no conflict resolution. Use for: damage events, pickup notifications, UI updates.
EventHandler Bus (orange) — "Something wants to happen, who decides?" Priority-based resolution with conflict policies. Handlers compete to handle the event. Use for: ability activation, interaction resolution, AI behavior selection.
Native Delegates (blue) — Direct C++ multicast for performance-critical paths within a single system. No cross-plugin routing. Use for: state change callbacks within a subsystem's own scope.
Layer 1 contains base classes, shared types, interfaces, and all editor infrastructure (factories, Content Browser extension, toolbar, Hub dashboard). It's the foundation everything else builds on.
Layer 2 contains the 13 production subsystems and 14 stub plugins ready for future implementation. Each L2 plugin has a Runtime module (gameplay logic) and optionally an Editor module (inspector panels, custom widgets).
Tool Plugins are editor-only utilities: documentation viewer, simulation harness, project scaffolding, and more. They never ship in packaged builds.