# xmoezzz/siglus_rs architecture

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

## Overview

siglus_rs is a multi-engine visual-novel game reimplementation, with SiglusEngine as its primary focus and UK2, AVG32, and RealLive also supported. The main user flow is to import or select a game, identify its engine, and launch the corresponding runtime to load game data, execute scenes, present graphics and audio, and persist progress. The graph combines README-documented capabilities with sampled runtime evidence; several subsystem connections are documented or implied by module roles but their internal wiring was not sampled.

Main entry points: [`crates/siglus_scene_vm/src/vm.rs`](https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/vm.rs) (Scene Execution), [`crates/game_launcher/src/runtime/mod.rs`](https://github.com/xmoezzz/siglus_rs/blob/main/crates/game_launcher/src/runtime/mod.rs) (Runtime Selection), [`crates/siglus_scene_vm/src/resource.rs`](https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/resource.rs) (Resource Loading), [`crates/game_launcher/src/lib.rs`](https://github.com/xmoezzz/siglus_rs/blob/main/crates/game_launcher/src/lib.rs) (Game Library)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_launcher["Game Launcher"]
  node_launcher["Game Library<br/>[lib.rs]"]
  node_detect["Engine Detection<br/>[lib.rs]"]
  node_launch_runtime["Runtime Selection<br/>[mod.rs]"]
end

subgraph group_siglus["Siglus Runtime"]
  node_siglus_entry["Siglus Player<br/>[siglus_engine.rs]"]
  node_scene_vm["Scene Execution<br/>[vm.rs]"]
  node_scene_stream["Scene Loading<br/>[scene_stream.rs]"]
  node_resources["Resource Loading<br/>[resource.rs]"]
  node_images["Image Management<br/>[image_manager.rs]"]
  node_render["Rendering<br/>[mod.rs]"]
  node_audio["Audio Playback<br/>[engine.rs]"]
  node_sfx["Sound Effects<br/>[sfx_engine.rs]"]
  node_save["Game Saves<br/>[original_save.rs]"]
end

subgraph group_legacy["Other Game Runtimes"]
  node_uk2["UK2 Engine<br/>[lib.rs]"]
  node_avg32["AVG32 Engine<br/>[engine.rs]"]
  node_reallive["RealLive Engine<br/>[engine.rs]"]
end

subgraph group_assets["Assets and Media"]
  node_game_fs["Game Filesystem<br/>[lib.rs]"]
  node_siglus_assets["Siglus Asset Formats<br/>[lib.rs]"]
  node_media_decode["Media Decoders<br/>[lib.rs]"]
end

node_player(("Player"))
node_game_files[("Game Files")]

node_player -->|"selects game"| node_launcher
node_launcher -->|"imports files"| node_game_files
node_launcher -->|"identifies engine"| node_detect
node_detect -->|"selects runtime"| node_launch_runtime
node_launch_runtime -->|"starts Siglus"| node_siglus_entry
node_launch_runtime -->|"starts UK2"| node_uk2
node_launch_runtime -->|"starts AVG32"| node_avg32
node_launch_runtime -->|"starts RealLive"| node_reallive
node_siglus_entry -->|"runs scenes"| node_scene_vm
node_siglus_entry -->|"reads game files"| node_game_fs
node_scene_vm -->|"loads scenes"| node_scene_stream
node_scene_vm -->|"loads resources"| node_resources
node_scene_vm -->|"manages images"| node_images
node_scene_vm -->|"controls music"| node_audio
node_scene_vm -->|"controls effects"| node_sfx
node_scene_vm -->|"saves progress"| node_save
node_scene_vm -->|"renders scene"| node_render
node_resources -->|"decodes assets"| node_siglus_assets
node_resources -->|"reads files"| node_game_fs
node_audio -->|"decodes audio"| node_siglus_assets
node_render -->|"uses images"| node_images
node_resources -.->|"decodes video"| node_media_decode

click node_launcher "https://github.com/xmoezzz/siglus_rs/blob/main/crates/game_launcher/src/lib.rs"
click node_detect "https://github.com/xmoezzz/siglus_rs/blob/main/crates/engine-detect/src/lib.rs"
click node_launch_runtime "https://github.com/xmoezzz/siglus_rs/blob/main/crates/game_launcher/src/runtime/mod.rs"
click node_siglus_entry "https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/bin/siglus_engine.rs"
click node_scene_vm "https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/vm.rs"
click node_scene_stream "https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/scene_stream.rs"
click node_resources "https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/resource.rs"
click node_images "https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/image_manager.rs"
click node_render "https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/render/mod.rs"
click node_audio "https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/audio/engine.rs"
click node_sfx "https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/audio/sfx_engine.rs"
click node_save "https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/original_save.rs"
click node_game_fs "https://github.com/xmoezzz/siglus_rs/blob/main/crates/game_fs/src/lib.rs"
click node_siglus_assets "https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_assets/src/lib.rs"
click node_media_decode "https://github.com/xmoezzz/siglus_rs/blob/main/crates/na_mpeg2_decoder/src/lib.rs"
click node_uk2 "https://github.com/xmoezzz/siglus_rs/blob/main/crates/uk2/src/lib.rs"
click node_avg32 "https://github.com/xmoezzz/siglus_rs/blob/main/crates/avg32/src/engine.rs"
click node_reallive "https://github.com/xmoezzz/siglus_rs/blob/main/crates/reallive/src/engine.rs"

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_launcher,node_detect,node_launch_runtime toneBlue
class node_siglus_entry,node_scene_vm,node_scene_stream,node_resources,node_images,node_render,node_audio,node_sfx,node_save,node_game_files toneAmber
class node_uk2,node_avg32,node_reallive toneMint
class node_game_fs,node_siglus_assets,node_media_decode toneRose
class node_player toneIndigo
```

## Components

### Game Launcher

- [Game Library](https://github.com/xmoezzz/siglus_rs/blob/main/crates/game_launcher/src/lib.rs): `crates/game_launcher/src/lib.rs`
- [Engine Detection](https://github.com/xmoezzz/siglus_rs/blob/main/crates/engine-detect/src/lib.rs): `crates/engine-detect/src/lib.rs`
- [Runtime Selection](https://github.com/xmoezzz/siglus_rs/blob/main/crates/game_launcher/src/runtime/mod.rs): `crates/game_launcher/src/runtime/mod.rs`

### Siglus Runtime

- [Siglus Player](https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/bin/siglus_engine.rs): `crates/siglus_scene_vm/src/bin/siglus_engine.rs`
- [Scene Execution](https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/vm.rs): `crates/siglus_scene_vm/src/vm.rs`
- [Scene Loading](https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/scene_stream.rs): `crates/siglus_scene_vm/src/scene_stream.rs`
- [Resource Loading](https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/resource.rs): `crates/siglus_scene_vm/src/resource.rs`
- [Image Management](https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/image_manager.rs): `crates/siglus_scene_vm/src/image_manager.rs`
- [Rendering](https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/render/mod.rs): `crates/siglus_scene_vm/src/render/mod.rs`
- [Audio Playback](https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/audio/engine.rs): `crates/siglus_scene_vm/src/audio/engine.rs`
- [Sound Effects](https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/audio/sfx_engine.rs): `crates/siglus_scene_vm/src/audio/sfx_engine.rs`
- [Game Saves](https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_scene_vm/src/original_save.rs): `crates/siglus_scene_vm/src/original_save.rs`

### Other Game Runtimes

- [UK2 Engine](https://github.com/xmoezzz/siglus_rs/blob/main/crates/uk2/src/lib.rs): `crates/uk2/src/lib.rs`
- [AVG32 Engine](https://github.com/xmoezzz/siglus_rs/blob/main/crates/avg32/src/engine.rs): `crates/avg32/src/engine.rs`
- [RealLive Engine](https://github.com/xmoezzz/siglus_rs/blob/main/crates/reallive/src/engine.rs): `crates/reallive/src/engine.rs`

### Assets and Media

- [Game Filesystem](https://github.com/xmoezzz/siglus_rs/blob/main/crates/game_fs/src/lib.rs): `crates/game_fs/src/lib.rs`
- [Siglus Asset Formats](https://github.com/xmoezzz/siglus_rs/blob/main/crates/siglus_assets/src/lib.rs): `crates/siglus_assets/src/lib.rs`
- [Media Decoders](https://github.com/xmoezzz/siglus_rs/blob/main/crates/na_mpeg2_decoder/src/lib.rs): `crates/na_mpeg2_decoder/src/lib.rs`

### Other components

- **Player**
- **Game Files**

## Connections

- Player → Game Library: selects game
- Game Library → Game Files: imports files
- Game Library → Engine Detection: identifies engine
- Engine Detection → Runtime Selection: selects runtime
- Runtime Selection → Siglus Player: starts Siglus
- Runtime Selection → UK2 Engine: starts UK2
- Runtime Selection → AVG32 Engine: starts AVG32
- Runtime Selection → RealLive Engine: starts RealLive
- Siglus Player → Scene Execution: runs scenes
- Siglus Player → Game Filesystem: reads game files
- Scene Execution → Scene Loading: loads scenes
- Scene Execution → Resource Loading: loads resources
- Scene Execution → Image Management: manages images
- Scene Execution → Audio Playback: controls music
- Scene Execution → Sound Effects: controls effects
- Scene Execution → Game Saves: saves progress
- Scene Execution → Rendering: renders scene
- Resource Loading → Siglus Asset Formats: decodes assets
- Resource Loading → Game Filesystem: reads files
- Audio Playback → Siglus Asset Formats: decodes audio
- Rendering → Image Management: uses images
- Resource Loading → Media Decoders: decodes video
