Skip to content

Runtime/Common

Shared framework glue. Not a gameplay integration surface.

Runtime/Common exists to keep RevFramework systems decoupled by providing small cross-cutting seams, utilities, and “plumbing” code used across multiple systems.

This folder is not where you build game features.


Not a Supported Extension Point

  • ❌ Not intended for gameplay integration
  • ❌ Not intended as a primary public API surface
  • ❌ Not a stable extension contract (contents may evolve as systems are refined)

If you’re integrating a system into your game:

👉 Start in Runtime/Systems/<System> and follow that system’s: - Public API - Mental Model - FAQ - Samples - Teachables

Teachables live in: RevFramework/Teaching
Samples live in: RevFramework/Samples


What Lives Here (so you don’t panic when you see it)

1) Cross-system seams and small interfaces

Small, dependency-light contracts used by multiple systems (or used to avoid hard references between optional modules).

Examples include: - IDamageable, cooldown factors/sinks, movement factors - ITimeProvider (+ UnityTimeProvider, ManualTimeProvider) - authority guards and shared gating helpers

If you need a supported integration point, it should be documented on the System’s Public API page — not inferred from Common.


2) “Glue” utilities that keep optional modules optional

Compatibility and decoupling helpers that allow systems to remain modular and work across different Unity setups.

Examples include: - input / physics compatibility shims - duck-typed helpers for optional richer APIs - ResolveUtility (decoupled lookups)

If you can’t do something through documented public seams, you shouldn’t be doing it.
If you believe a supported seam should exist: reach out — we’ll review it.


3) Panel / UX infrastructure

Shared IMGUI helpers used by Teachables and debug panels: - PanelBase, TeachablePanelBase - layout helpers and style sizing - dependency guards and feedback utilities (PanelDependencyGuard, PanelFeedbackUtility) - OpResult / ReasonText mapping helpers

This supports the teaching/debug experience without pushing UI concerns into system modules.


4) Small sample-friendly components and adapters

Simple relays/adapters used by demo scenes or lightweight setups: - CurrencyServiceRelay - StableId - basic team providers, audio channels, etc.

These exist to keep demos usable without forcing your production architecture.


Design Intent

Common is a shared substrate:

  • Systems depend on Common
  • Common must not depend on Systems
  • Nothing here should force system-to-system references

If you add something here:

  • keep it small
  • keep it boring
  • keep it dependency-light
  • and double-check it doesn’t belong inside a specific system module instead

TL;DR

This folder makes RevFramework tick — but it’s not where you build your game.
Use Runtime/Systems/<System> and the documented seams.
If you need a capability that isn’t exposed, ask — seams are added deliberately.