# rhubarbvr/rhubarbvr_newer_old architecture

> Architecture diagram of the GitHub repository rhubarbvr/rhubarbvr_newer_old, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rhubarbvr/rhubarbvr_newer_old
- Repository: https://github.com/rhubarbvr/rhubarbvr_newer_old
- Video tour (about a minute): https://gitdiagram.com/rhubarbvr/rhubarbvr_newer_old/video

## Overview

RhubarbVR is a networked VR engine for building and sharing multiplayer worlds. The main runtime loop starts in the Godot host, which adapts platform rendering, audio, and input for the engine; users then enter or create worlds whose state can be synchronized with session peers. The repository also exposes world-building, asset/file handling, UI programs, physics, and scripting capabilities. Sampled excerpts establish the host loop, world startup, authentication, and selected subsystem behavior; several capability links are based on the documented product and directory structure rather than inspected call sites.

Main entry points: [`RhuEngine/WorldObjects/ECS/Entity.cs`](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/WorldObjects/ECS/Entity.cs) (World state), [`RhuEngine/Engine.cs`](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Engine.cs) (Engine loop), [`RhubarbGodot/Bindings/GodotEngineLink.cs`](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhubarbGodot/Bindings/GodotEngineLink.cs) (Godot adapter), [`RhubarbGodot/EngineRunner.cs`](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhubarbGodot/EngineRunner.cs) (Godot host)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Runtime host"]
  node_godot["Godot host<br/>[EngineRunner.cs]"]
  node_engine["Engine loop<br/>[Engine.cs]"]
  node_godotlink["Godot adapter<br/>[GodotEngineLink.cs]"]
end

subgraph group_world["World experience"]
  node_worldmanager["World manager<br/>[WorldManager.cs]"]
  node_worldstate["World state<br/>[Entity.cs]"]
  node_worldui["Private-space UI"]
  node_rendering["Rendering components<br/>[Camera3D.cs]"]
  node_physics["Physics simulation"]
end

subgraph group_platform["Platform services"]
  node_input["Input systems<br/>[InputManager.cs]"]
  node_audio["Audio components<br/>[AudioSource.cs]"]
  node_assets["Asset manager<br/>[AssetManager.cs]"]
  node_files["File handling<br/>[NetworkedDrive.cs]"]
end

subgraph group_network["Networking"]
  node_auth["Cloud account API"]
  node_relay["Peer relay service<br/>[RelayServer.cs]"]
end

subgraph group_extensibility["Creation and scripting"]
  node_commands["Engine commands<br/>[CommandManager.cs]"]
  node_wasm["WASM runtime<br/>[WasmManager.cs]"]
  node_plugins["Plugin system<br/>[PluginManager.cs]"]
  node_numerics["Geometry and math<br/>[IMesh.cs]"]
end

node_user(("VR user"))

node_user -->|"provides input"| node_godot
node_godot -->|"creates adapter"| node_godotlink
node_godotlink -->|"binds engine"| node_engine
node_godot -->|"steps loop"| node_engine
node_engine -->|"loads statics"| node_godotlink
node_godotlink -->|"loads drivers"| node_input
node_engine -->|"updates worlds"| node_worldmanager
node_worldmanager -->|"creates worlds"| node_worldstate
node_worldmanager -->|"starts networking"| node_worldstate
node_worldui -->|"requests logout"| node_auth
node_worldui -->|"uploads profile"| node_auth
node_engine -->|"initializes"| node_commands
node_worldstate -.->|"renders through"| node_rendering
node_worldstate -.->|"uses simulation"| node_physics
node_worldstate -.->|"references assets"| node_assets
node_worldstate -.->|"runs scripts"| node_wasm
node_worldstate -.->|"extends via"| node_plugins
node_worldstate -.->|"uses geometry"| node_numerics
node_worldstate -.->|"connects peers"| node_relay
node_worldstate -.->|"uses drives"| node_files
node_engine -->|"initializes audio"| node_audio

click node_godot "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhubarbGodot/EngineRunner.cs"
click node_engine "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Engine.cs"
click node_godotlink "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhubarbGodot/Bindings/GodotEngineLink.cs"
click node_worldmanager "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Managers/WorldManager.cs"
click node_worldstate "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/WorldObjects/ECS/Entity.cs"
click node_worldui "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Components/PrivateSpace/UserInterfaceManager.cs"
click node_rendering "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Components/Rendering3D/Camera3D.cs"
click node_physics "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Physics/PhysicsSimulation.cs"
click node_input "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Managers/InputManager.cs"
click node_audio "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Components/Audio/AudioSource.cs"
click node_assets "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Managers/AssetManager.cs"
click node_files "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/FileManagment/NetworkedDrive.cs"
click node_auth "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhubarbCloudClient/RhubarbAPIClient_Auth.cs"
click node_relay "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RelayHolePuncher/RelayServer.cs"
click node_commands "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Terminal/CommandManager.cs"
click node_wasm "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Wasm/WasmManager.cs"
click node_plugins "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Managers/PluginManager.cs"
click node_numerics "https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RNumerics/mesh/IMesh.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_godot,node_engine,node_godotlink,node_user toneBlue
class node_worldmanager,node_worldstate,node_worldui,node_rendering,node_physics toneAmber
class node_input,node_audio,node_assets,node_files toneMint
class node_auth,node_relay toneRose
class node_commands,node_wasm,node_plugins,node_numerics toneIndigo
```

## Components

### Runtime host

- [Godot host](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhubarbGodot/EngineRunner.cs): `RhubarbGodot/EngineRunner.cs`
- [Engine loop](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Engine.cs): `RhuEngine/Engine.cs`
- [Godot adapter](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhubarbGodot/Bindings/GodotEngineLink.cs): `RhubarbGodot/Bindings/GodotEngineLink.cs`

### World experience

- [World manager](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Managers/WorldManager.cs): `RhuEngine/Managers/WorldManager.cs`
- [World state](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/WorldObjects/ECS/Entity.cs): `RhuEngine/WorldObjects/ECS/Entity.cs`
- [Private-space UI](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Components/PrivateSpace/UserInterfaceManager.cs): `RhuEngine/Components/PrivateSpace/UserInterfaceManager.cs`
- [Rendering components](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Components/Rendering3D/Camera3D.cs): `RhuEngine/Components/Rendering3D/Camera3D.cs`
- [Physics simulation](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Physics/PhysicsSimulation.cs): `RhuEngine/Physics/PhysicsSimulation.cs`

### Platform services

- [Input systems](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Managers/InputManager.cs): `RhuEngine/Managers/InputManager.cs`
- [Audio components](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Components/Audio/AudioSource.cs): `RhuEngine/Components/Audio/AudioSource.cs`
- [Asset manager](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Managers/AssetManager.cs): `RhuEngine/Managers/AssetManager.cs`
- [File handling](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/FileManagment/NetworkedDrive.cs): `RhuEngine/FileManagment/NetworkedDrive.cs`

### Networking

- [Cloud account API](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhubarbCloudClient/RhubarbAPIClient_Auth.cs): `RhubarbCloudClient/RhubarbAPIClient_Auth.cs`
- [Peer relay service](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RelayHolePuncher/RelayServer.cs): `RelayHolePuncher/RelayServer.cs`

### Creation and scripting

- [Engine commands](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Terminal/CommandManager.cs): `RhuEngine/Terminal/CommandManager.cs`
- [WASM runtime](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Wasm/WasmManager.cs): `RhuEngine/Wasm/WasmManager.cs`
- [Plugin system](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RhuEngine/Managers/PluginManager.cs): `RhuEngine/Managers/PluginManager.cs`
- [Geometry and math](https://github.com/rhubarbvr/rhubarbvr_newer_old/blob/main/RNumerics/mesh/IMesh.cs): `RNumerics/mesh/IMesh.cs`

### Other components

- **VR user**

## Connections

- VR user → Godot host: provides input
- Godot host → Godot adapter: creates adapter
- Godot adapter → Engine loop: binds engine
- Godot host → Engine loop: steps loop
- Engine loop → Godot adapter: loads statics
- Godot adapter → Input systems: loads drivers
- Engine loop → World manager: updates worlds
- World manager → World state: creates worlds
- World manager → World state: starts networking
- Private-space UI → Cloud account API: requests logout
- Private-space UI → Cloud account API: uploads profile
- Engine loop → Engine commands: initializes
- World state → Rendering components: renders through
- World state → Physics simulation: uses simulation
- World state → Asset manager: references assets
- World state → WASM runtime: runs scripts
- World state → Plugin system: extends via
- World state → Geometry and math: uses geometry
- World state → Peer relay service: connects peers
- World state → File handling: uses drives
- Engine loop → Audio components: initializes audio
