Skip to content

RevFramework Documentation

This folder contains the bundled documentation for RevFramework systems.
Each system has its own README covering purpose, architecture, setup, and integration.

Audience

RevFramework is designed for developers comfortable with C# scripting in Unity.
If you’re looking for a no-code solution, this isn’t the right tool.


Start Here

👉 Start Here

If you're new to RevFramework, read this first.

It explains: - how to approach the framework - how to navigate the docs - how to avoid extending the wrong layer - how to learn using Teachables and Samples

The welcome window, and how to get it back

RevFramework opens a welcome window on your first import, with shortcuts to the documentation, the free test-suite download, and the Discord. It is shown once ever, not once per project, so it will not appear again in later projects — that is deliberate, not a fault.

Open it whenever you want from Tools ▸ RevGaming ▸ RevFramework ▸ Help ▸ Show … Welcome. Each package has its own entry, and an entry stays greyed out unless the systems it covers are actually installed — so a single-SKU install shows one live option, and a Complete install can open any of them.


Module Availability & SKUs

RevFramework documentation describes the entire modular ecosystem.

Some systems referenced here may belong to separate SKUs and may not be present in your project unless you’ve purchased that module.

This is intentional

  • Systems integrate automatically when present
  • No system is required unless explicitly stated
  • Missing modules do not cause errors or broken behaviour
  • Missing systems are treated as absent, not misconfigured
  • A system earns its place when your game has a problem for which it is currently the simplest appropriate solution — see One Rule

Documentation always shows how systems can work together — not what you must have installed.


Core Systems

Inventory

Handles items, containers, equipment, and runtime item logic.

Pickups

World pickups and interactables with modular effect delivery.

Crafting

Recipe-driven item creation with validation and modifiers.

Health

Damage, healing, shields, and combat rule pipelines.

Status Effects

Buffs, debuffs, DOTs, HOTs, and controller-driven lifecycle.

Loot

Drop tables, weighted and independent rolls, modifiers, and delivery to a receiver.

Currency

Ledger-based value system with policies and transactions.

Economy

High-level orchestration across money and items.

Attributes

A general container for the numbers a character is made of — values keyed by owner and id, with bounds, change events, and adapters onto the stat seams other systems consume. Complete only.


Cross-Cutting Areas

These are not systems and are not sold separately. Both ship in every package.

Save

The save coordinator collects a labelled string from each participant and hands them back on restore, without ever parsing a payload itself; the manager and file store beside it handle writing and reading. All of that lives in Runtime/Core, so it is in all four packages — the per-system participants that plug into it are the part gated on owning that system.

View Components

Read this before you write a HUD element. A short set of rules for any component that watches a service and draws what it sees — a currency bar, an inventory binder, a buff row. It exists because four separately written components each shipped a different half of the same bug, and every one of them was reachable by hiding a panel and showing it again.


How to Use These Docs

Each system folder contains:

  • Overview → what it does
  • Mental Model → how it works
  • Public API → what is supported
  • FAQ → decision guidance
  • Integration Surfaces → extension points
  • Guarantees Matrix → behavioural contract

You do not need to read everything — follow the path that matches your goal.


Integration Language (Important)

Documentation uses presence-based language:

  • “If Currency is present…”
  • “When Inventory is available…”

This is deliberate.

RevFramework systems: - work standalone
- expose integration hooks
- activate additional behaviour only when other modules exist

No hidden dependencies. No forced bundles.


Events: C# first or designer first?

Some systems raise their events in two flavours — a C# event for code, and a serialized UnityEvent for hooks wired in the inspector. Where both exist, which of the two fires first is a per-system fact, not a framework-wide guarantee, and it is not the same in every system:

System Order
Currency C# event, then the designer UnityEvent
Crafting C# event, then the designer UnityEvent
Health Designer UnityEvent, then the C# event
Status Effects Designer UnityEvent, then the C# event
Pickups Designer UnityEvent, then the C# event

Each of these five is pinned by a test, so it will not change under you without that being a deliberate, visible decision. What you should not do is learn the order from one system and rely on it in another — that is the one mistake this table exists to prevent.

Not every system has both flavours

This section used to open with "every system", which is not true and made the table look exhaustive. Inventory and Loot raise C# events only — there is no serialized UnityEvent in either, so there is no order to know: subscribe in code. Economy raises neither flavour at all.

Pickups has both, on InteractablePickupBase and ShieldSystem, and all three of its emitters are now pinned — so it has a row above rather than a note here. One difference is worth knowing if you create a pickup from code: unlike Health's, these UnityEvent fields are declared without an initializer, so a component added with AddComponent has them null and the designer hook does not fire. Unity's deserializer creates them for a pickup authored in a scene, which is where the order matters; the fields are private, so nothing could have been wired to a runtime-created one anyway.

If you have a designer hook and a code handler that must run in a known order relative to each other, do not lean on the raise order at all. Have one of them do the work and the other observe the result, or sequence them yourself from a single entry point.

Why they differ, and why they have not been unified

It was not a decision, it was drift — four systems written at different times. Unifying them now would silently reverse the order for anyone whose project already depends on the current one, in the two systems that raise the most events. The cost of that outweighs the tidiness, so the behaviour is documented and pinned instead of changed.


Missing Systems

If a system is not installed:

  • Integration paths are skipped
  • No errors are thrown
  • Core behaviour continues normally

SKU Overview (Reference Only)

System Inventory SKU Health SKU Economy SKU Complete
Inventory ✅ ❌ ❌ ✅
Pickups ✅ ❌ ❌ ✅
Crafting ✅ ❌ ❌ ✅
Loot ✅ ❌ ❌ ✅
Health ❌ ✅ ❌ ✅
Status Effects ❌ ✅ ❌ ✅
Currency ❌ ❌ ✅ ✅
Economy ❌ ❌ ✅ ✅
Attributes ❌ ❌ ❌ ✅
Save ✅ ✅ ✅ ✅
View Components ✅ ✅ ✅ ✅

The last two rows are not systems and cannot be bought on their own — they are in every package, which is why they have a tick in every column. Loot belongs to the Inventory SKU, alongside Inventory, Pickups and Crafting; it is not a separate purchase. Attributes ships in Complete only — it is the cross-system supply side of the stat seams, and no single system SKU owns that role.


Online Documentation

RevFramework Documentation Site


Quote

💡 Use one system, several, or the whole bloody lot.