# xiisuma/sroptimizer architecture

> Architecture diagram of the GitHub repository xiisuma/sroptimizer, 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/xiisuma/sroptimizer
- Repository: https://github.com/xiisuma/sroptimizer

## Overview

SROptimizer is an SRML mod for Slime Rancher that currently provides performance diagnostics, persistent benchmark capture, configurable profiles, console controls, and a behavioral LOD module. The main workflow is game frames → sampling → overlay or CSV results, with console commands controlling profiles, modules, and capture. The README also lists allocation, registry, food-cache, autosave, culling, and physics optimizations as planned; they are not represented as implemented runtime components. Some wiring is omitted because the source excerpts are partial.

Main entry points: [`SROptimizer/src/SROptimizerMod.cs`](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/SROptimizerMod.cs) (Mod entry point), [`SROptimizer/src/Diagnostics/SROptimizerRunner.cs`](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Diagnostics/SROptimizerRunner.cs) (Frame runner), [`SROptimizer/src/Commands/SROptCommand.cs`](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Commands/SROptCommand.cs) (Console commands), [`SROptimizer/src/Diagnostics/PerfOverlay.cs`](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Diagnostics/PerfOverlay.cs) (Performance overlay)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_lifecycle["Mod lifecycle"]
  node_mod["Mod entry point<br/>[SROptimizerMod.cs]"]
end

subgraph group_controls["Configuration and controls"]
  node_config["Mod configuration"]
  node_profiles["Profiles<br/>[Profiles.cs]"]
  node_commands["Console commands<br/>[SROptCommand.cs]"]
end

subgraph group_diagnostics["Measurement and diagnostics"]
  node_runner["Frame runner"]
  node_monitor["Performance monitor<br/>[PerfMonitor.cs]"]
  node_overlay["Performance overlay<br/>[PerfOverlay.cs]"]
  node_bench["Benchmark recorder<br/>[BenchRecorder.cs]"]
  node_csv["Benchmark CSV"]
  node_actorcounter["Actor counter<br/>[ActorCounter.cs]"]
end

subgraph group_optimization["Optimization"]
  node_modulebase["Module lifecycle"]
  node_lod["Behavioural LOD"]
  node_roadmap["Planned optimizations"]
end

node_player(("Player"))
node_game["Slime Rancher"]
node_srml["SRML"]

node_srml -->|"loads mod"| node_mod
node_mod -->|"reads settings"| node_config
node_mod -->|"registers command"| node_commands
node_mod -->|"initializes"| node_runner
node_mod -->|"creates"| node_overlay
node_mod -->|"synchronizes modules"| node_modulebase
node_commands -->|"applies profile"| node_profiles
node_profiles -->|"sets switches"| node_config
node_commands -->|"controls"| node_mod
node_player -->|"enters commands"| node_commands
node_runner -->|"samples frames"| node_monitor
node_runner -->|"toggles visibility"| node_overlay
node_runner -->|"ticks capture"| node_bench
node_bench -->|"reads statistics"| node_monitor
node_bench -->|"writes rows"| node_csv
node_overlay -->|"reads statistics"| node_monitor
node_overlay -->|"reads counts"| node_actorcounter
node_actorcounter -->|"reads registry"| node_game
node_runner -->|"checks availability"| node_actorcounter
node_modulebase -->|"runs lifecycle"| node_lod
node_lod -->|"patches behaviour"| node_game
node_lod -->|"reads thresholds"| node_config

click node_mod "https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/SROptimizerMod.cs"
click node_config "https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Config/SROptimizerConfig.cs"
click node_profiles "https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Profiles.cs"
click node_commands "https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Commands/SROptCommand.cs"
click node_runner "https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Diagnostics/SROptimizerRunner.cs"
click node_monitor "https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Diagnostics/PerfMonitor.cs"
click node_overlay "https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Diagnostics/PerfOverlay.cs"
click node_bench "https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Diagnostics/BenchRecorder.cs"
click node_actorcounter "https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Diagnostics/ActorCounter.cs"
click node_modulebase "https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Modules/OptimizerModuleBase.cs"
click node_lod "https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Modules/BehaviourLodModule.cs"
click node_roadmap "https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Config/SROptimizerConfig.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_mod toneBlue
class node_config,node_profiles,node_commands toneAmber
class node_runner,node_monitor,node_overlay,node_bench,node_csv,node_actorcounter toneMint
class node_modulebase,node_lod,node_roadmap toneRose
class node_player,node_game,node_srml toneIndigo
```

## Components

### Mod lifecycle

- [Mod entry point](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/SROptimizerMod.cs): `SROptimizer/src/SROptimizerMod.cs`

### Configuration and controls

- [Mod configuration](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Config/SROptimizerConfig.cs): `SROptimizer/src/Config/SROptimizerConfig.cs`
- [Profiles](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Profiles.cs): `SROptimizer/src/Profiles.cs`
- [Console commands](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Commands/SROptCommand.cs): `SROptimizer/src/Commands/SROptCommand.cs`

### Measurement and diagnostics

- [Frame runner](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Diagnostics/SROptimizerRunner.cs): `SROptimizer/src/Diagnostics/SROptimizerRunner.cs`
- [Performance monitor](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Diagnostics/PerfMonitor.cs): `SROptimizer/src/Diagnostics/PerfMonitor.cs`
- [Performance overlay](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Diagnostics/PerfOverlay.cs): `SROptimizer/src/Diagnostics/PerfOverlay.cs`
- [Benchmark recorder](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Diagnostics/BenchRecorder.cs): `SROptimizer/src/Diagnostics/BenchRecorder.cs`
- **Benchmark CSV**
- [Actor counter](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Diagnostics/ActorCounter.cs): `SROptimizer/src/Diagnostics/ActorCounter.cs`

### Optimization

- [Module lifecycle](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Modules/OptimizerModuleBase.cs): `SROptimizer/src/Modules/OptimizerModuleBase.cs`
- [Behavioural LOD](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Modules/BehaviourLodModule.cs): `SROptimizer/src/Modules/BehaviourLodModule.cs`
- [Planned optimizations](https://github.com/xiisuma/sroptimizer/blob/main/SROptimizer/src/Config/SROptimizerConfig.cs): `SROptimizer/src/Config/SROptimizerConfig.cs`

### Other components

- **Player**
- **Slime Rancher**
- **SRML**

## Connections

- SRML → Mod entry point: loads mod
- Mod entry point → Mod configuration: reads settings
- Mod entry point → Console commands: registers command
- Mod entry point → Frame runner: initializes
- Mod entry point → Performance overlay: creates
- Mod entry point → Module lifecycle: synchronizes modules
- Console commands → Profiles: applies profile
- Profiles → Mod configuration: sets switches
- Console commands → Mod entry point: controls
- Player → Console commands: enters commands
- Frame runner → Performance monitor: samples frames
- Frame runner → Performance overlay: toggles visibility
- Frame runner → Benchmark recorder: ticks capture
- Benchmark recorder → Performance monitor: reads statistics
- Benchmark recorder → Benchmark CSV: writes rows
- Performance overlay → Performance monitor: reads statistics
- Performance overlay → Actor counter: reads counts
- Actor counter → Slime Rancher: reads registry
- Frame runner → Actor counter: checks availability
- Module lifecycle → Behavioural LOD: runs lifecycle
- Behavioural LOD → Slime Rancher: patches behaviour
- Behavioural LOD → Mod configuration: reads thresholds
