# ukrangler/universal-test-lab architecture

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

- Interactive diagram: https://gitdiagram.com/ukrangler/universal-test-lab
- Repository: https://github.com/ukrangler/universal-test-lab

## Overview

Universal Test Lab is a Windows mission-studio application that configures and generates local War Thunder User Missions. Its documented workflow is to select the game folder, sync base files, configure a vehicle and mission, then launch the generated mission in War Thunder. The excerpts show the UI/controller relationship, preset handling, base installation and file generation; other feature links are based on the README and tree, so uncertain internal wiring is omitted.

Main entry points: [`ModernShell.cs`](https://github.com/ukrangler/universal-test-lab/blob/main/ModernShell.cs) (Mission Studio UI), [`UniversalTestLab.cs`](https://github.com/ukrangler/universal-test-lab/blob/main/UniversalTestLab.cs) (Mission Controller), [`data`](https://github.com/ukrangler/universal-test-lab/tree/main/data) (Vehicle & Weapon Catalogs), [`data/combined_maps.tsv`](https://github.com/ukrangler/universal-test-lab/blob/main/data/combined_maps.tsv) (Combined Map Layouts)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_studio["Mission Studio"]
  node_ui["Mission Studio UI<br/>[ModernShell.cs]"]
  node_controller["Mission Controller"]
end

subgraph group_configuration["Mission Configuration"]
  node_vehicle["Vehicle Selection"]
  node_aircraft["Aircraft Settings"]
  node_ground["Ground Settings<br/>[ModernShell.cs]"]
  node_loadouts["Loadouts &amp; Weapons<br/>[ModernShell.cs]"]
  node_targets["Targets &amp; Sights<br/>[ModernShell.cs]"]
  node_scenario["Combined Scenario<br/>[ModernShell.cs]"]
  node_presets["Preset Management<br/>[ModernShell.cs]"]
  node_catalogs["Vehicle &amp; Weapon Catalogs"]
  node_maps["Combined Map Layouts<br/>[combined_maps.tsv]"]
end

subgraph group_generation["Game Integration"]
  node_base["Base Mission Installer"]
  node_mission["Mission Generator"]
  node_sight["Custom Sight Integration"]
end

node_user(("Player"))
node_gamefiles[("War Thunder Files")]
node_game(("War Thunder"))

node_user -->|"configures"| node_ui
node_ui -->|"controls"| node_controller
node_ui -->|"selects"| node_vehicle
node_ui -->|"configures"| node_aircraft
node_ui -->|"configures"| node_ground
node_ui -->|"edits"| node_loadouts
node_ui -->|"configures"| node_targets
node_ui -->|"selects"| node_scenario
node_ui -->|"manages"| node_presets
node_ui -->|"selects"| node_maps
node_controller -->|"reads"| node_catalogs
node_controller -->|"captures"| node_presets
node_presets -->|"saves locally"| node_gamefiles
node_controller -->|"installs"| node_base
node_base -->|"writes base files"| node_gamefiles
node_controller -->|"generates"| node_mission
node_mission -->|"writes mission files"| node_gamefiles
node_controller -->|"attaches sight"| node_sight
node_sight -->|"updates sight files"| node_gamefiles
node_user -->|"launches mission"| node_game
node_gamefiles -->|"provides mission files"| node_game

click node_ui "https://github.com/ukrangler/universal-test-lab/blob/main/ModernShell.cs"
click node_controller "https://github.com/ukrangler/universal-test-lab/blob/main/UniversalTestLab.cs"
click node_vehicle "https://github.com/ukrangler/universal-test-lab/blob/main/UniversalTestLab.cs"
click node_aircraft "https://github.com/ukrangler/universal-test-lab/blob/main/UniversalTestLab.cs"
click node_ground "https://github.com/ukrangler/universal-test-lab/blob/main/ModernShell.cs"
click node_loadouts "https://github.com/ukrangler/universal-test-lab/blob/main/ModernShell.cs"
click node_targets "https://github.com/ukrangler/universal-test-lab/blob/main/ModernShell.cs"
click node_scenario "https://github.com/ukrangler/universal-test-lab/blob/main/ModernShell.cs"
click node_presets "https://github.com/ukrangler/universal-test-lab/blob/main/ModernShell.cs"
click node_catalogs "https://github.com/ukrangler/universal-test-lab/tree/main/data"
click node_maps "https://github.com/ukrangler/universal-test-lab/blob/main/data/combined_maps.tsv"
click node_base "https://github.com/ukrangler/universal-test-lab/blob/main/UniversalTestLab.cs"
click node_mission "https://github.com/ukrangler/universal-test-lab/blob/main/UniversalTestLab.cs"
click node_sight "https://github.com/ukrangler/universal-test-lab/blob/main/UniversalTestLab.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_ui,node_controller toneBlue
class node_vehicle,node_aircraft,node_ground,node_loadouts,node_targets,node_scenario,node_presets,node_catalogs,node_maps,node_gamefiles toneAmber
class node_base,node_mission,node_sight toneMint
class node_user,node_game toneIndigo
```

## Components

### Mission Studio

- [Mission Studio UI](https://github.com/ukrangler/universal-test-lab/blob/main/ModernShell.cs): `ModernShell.cs`
- [Mission Controller](https://github.com/ukrangler/universal-test-lab/blob/main/UniversalTestLab.cs): `UniversalTestLab.cs`

### Mission Configuration

- [Vehicle Selection](https://github.com/ukrangler/universal-test-lab/blob/main/UniversalTestLab.cs): `UniversalTestLab.cs`
- [Aircraft Settings](https://github.com/ukrangler/universal-test-lab/blob/main/UniversalTestLab.cs): `UniversalTestLab.cs`
- [Ground Settings](https://github.com/ukrangler/universal-test-lab/blob/main/ModernShell.cs): `ModernShell.cs`
- [Loadouts & Weapons](https://github.com/ukrangler/universal-test-lab/blob/main/ModernShell.cs): `ModernShell.cs`
- [Targets & Sights](https://github.com/ukrangler/universal-test-lab/blob/main/ModernShell.cs): `ModernShell.cs`
- [Combined Scenario](https://github.com/ukrangler/universal-test-lab/blob/main/ModernShell.cs): `ModernShell.cs`
- [Preset Management](https://github.com/ukrangler/universal-test-lab/blob/main/ModernShell.cs): `ModernShell.cs`
- [Vehicle & Weapon Catalogs](https://github.com/ukrangler/universal-test-lab/tree/main/data): `data`
- [Combined Map Layouts](https://github.com/ukrangler/universal-test-lab/blob/main/data/combined_maps.tsv): `data/combined_maps.tsv`

### Game Integration

- [Base Mission Installer](https://github.com/ukrangler/universal-test-lab/blob/main/UniversalTestLab.cs): `UniversalTestLab.cs`
- [Mission Generator](https://github.com/ukrangler/universal-test-lab/blob/main/UniversalTestLab.cs): `UniversalTestLab.cs`
- [Custom Sight Integration](https://github.com/ukrangler/universal-test-lab/blob/main/UniversalTestLab.cs): `UniversalTestLab.cs`

### Other components

- **Player**
- **War Thunder Files**
- **War Thunder**

## Connections

- Player → Mission Studio UI: configures
- Mission Studio UI → Mission Controller: controls
- Mission Studio UI → Vehicle Selection: selects
- Mission Studio UI → Aircraft Settings: configures
- Mission Studio UI → Ground Settings: configures
- Mission Studio UI → Loadouts & Weapons: edits
- Mission Studio UI → Targets & Sights: configures
- Mission Studio UI → Combined Scenario: selects
- Mission Studio UI → Preset Management: manages
- Mission Studio UI → Combined Map Layouts: selects
- Mission Controller → Vehicle & Weapon Catalogs: reads
- Mission Controller → Preset Management: captures
- Preset Management → War Thunder Files: saves locally
- Mission Controller → Base Mission Installer: installs
- Base Mission Installer → War Thunder Files: writes base files
- Mission Controller → Mission Generator: generates
- Mission Generator → War Thunder Files: writes mission files
- Mission Controller → Custom Sight Integration: attaches sight
- Custom Sight Integration → War Thunder Files: updates sight files
- Player → War Thunder: launches mission
- War Thunder Files → War Thunder: provides mission files
