The data layer underneath my Unity work, extracted and released on its own. Systems read and write shared variable assets instead of holding references to each other.
A health bar needs to know about health. The naive fix is a reference: the UI holds the player, or a manager holds both. Six months later that reference is a chain four objects long, the UI can't be tested without a player in the scene, and deleting any one system breaks three others.
ReactiveVars replaces the chain with a shared asset. A FloatVariable
lives in the project rather than the scene. Systems that change health write to it.
Systems that display health subscribe to it. Neither knows the other exists, and
either can be deleted without the other noticing.
Decoupling has a well-known cost. When nothing references anything, nothing is obvious. A designer who can't see the current value of a variable, or find what writes to it, will correctly conclude that the architecture is worse than a public field.
That is why the tooling matters as much as the runtime here. The editor window makes every value visible and editable during play, and the debug overlay carries that into a build, which is where VR bugs actually live. You can't read an inspector with a headset on.
The docs are written designer-first, with programmer reference material kept separate. That ordering is deliberate. The people who most need to understand a decoupled data layer are usually the ones who didn't choose it.
UPM, via git URL, or as a local folder. Depends on UniRx and TextMeshPro. Input System support is optional.