⚠️ AI-Agent-Only RepositoryThis repo is planned, maintained, and managed exclusively by AI Agents. Slop issues, rough edges, and AI artifacts are expected and intentionally present as part of an HITL-less / minimized AI-DD metaproject focused on learning, refining, and brute-force training both the agents and the human operator. Bug reports and contributions are still welcome, but please expect AI-generated code, comments, and documentation throughout.
General-purpose mod platform for Diplomacy is Not an Option.
DINOForge is a mod operating system, not a single mod. It provides the framework, registries, schemas, and tooling for building any type of mod — from simple balance tweaks to full total conversion packs.
- Pack System — YAML-first declarative content packs with dependency resolution, conflict detection, and schema validation
- Typed Registries — Units, buildings, factions, weapons, projectiles, doctrines, skills, waves, squads with layered override priority
- ECS Bridge — Maps mod content to DINO's actual Unity ECS components at runtime (30+ component mappings)
- Asset Pipeline — Full import → validate → optimize → LOD → prefab → Addressables pipeline; 38 catalog entries with 3-level LOD (100%/60%/30%)
- Pack Submodule Management — Add/list/update/lock git submodule packs via CLI and Desktop Companion
- Asset Browser & Mod Manager — Desktop Companion with visual asset browser, mod conflict detection, and update management
- Asset Library & Catalog — SQLite asset catalog with source adapters and CLI asset-library commands
- Warfare Domain — Faction archetypes (Order, Industrial Swarm, Asymmetric), doctrines, unit role validation, wave composition, balance calculation
- Star Wars Clone Wars Pack — 28 units (Republic + CIS) and 10 buildings with visual assets, prefabs, and Addressables entries
- Dev Tooling — PackCompiler CLI, DumpTools, in-game debug overlay, entity dumper
- MCP Server — game automation and analysis tools (screenshot capture, UI automation, input injection, state and catalog queries)
- Schema Validation — 24 JSON schemas catch errors before runtime
- Polyglot Build — Rust, Go, and Zig optimization modules with seamless .NET integration
- Game Automation Framework — Headless game testing, UI automation, and state validation
- 95%+ Test Coverage — 3,613+ passing tests (unit, integration, parameterized, property-based, and E2E)
- 27 Tier 2 Analyzers — 162 / 16,200 fuzz property cases with 5 caught SUT bugs
- 30+ Pattern Catalog — 28 CI-gated patterns (12 new in iter-122-141), 11 retired, 100% enforcement
| Milestone | Description | Status |
|---|---|---|
| M0 | Reverse-Engineering Harness (entity dumps, 45K entities) | Done |
| M1 | Runtime Scaffold (BepInEx plugin, ECS systems) | Done |
| M2 | Generic Mod SDK (registries, schemas, ContentLoader) | Done |
| M3 | Dev Tooling (PackCompiler, DumpTools, DebugOverlay) | Done |
| M4 | Warfare Domain (archetypes, doctrines, roles, waves, balance) | Done |
| M5 | Example Packs (warfare-starwars, warfare-aerial, warfare-guerrilla, warfare-modern) | Done |
| M6 | In-Game Mod Menu + HMR (F9/F10, hot reload) | Done |
| M7 | Installer + Universe Bible | Done |
| M8 | Runtime Integration (ModPlatform, ECS bridge, asset swap) | Done |
| M9 | Desktop Companion (WinUI 3, Mica, pack manager) | Done |
| M10 | Fuzzing (FsCheck 30+ props, SharpFuzz, corpus, nightly CI) | Done |
| M11 | Test Coverage + Code Completion (1017+ tests) | Done |
| M12 | Pack Submodule Management (PackSubmoduleManager, CLI pack add/list/update/lock) | Done |
| M13 | Asset Browser + Mod Manager (DesktopCompanion Asset Browser page, Browse/Update/Conflict views) | Done |
| M14 | Asset Library & Catalog (SQLite AssetCatalogStore, asset-library CLI commands, LocalSourceAdapter) | Done |
Current Status (v0.25.0-dev)
- Build: ✅ Clean (exit 0)
- Tests: ✅ 3,613+ passing / 0 failures
- Pattern Catalog: ✅ 30+ entries (27 Tier 2 analyzers, 12 new patterns), 11 RETIRED, 100% CI-gated
- Audit-Rotation: ✅ Converged (iter-122-141, 5 fuzz SUT bugs caught)
- v0.24.0: Released 2026-05-06 at commit f222cd3
- v0.25.0-dev: In progress (closure-gate on fix branch)
Windows (PowerShell) — recommended:
irm https://raw.githubusercontent.com/KooshaPari/Dino/main/scripts/install-companion.ps1 | iexWSL / bash:
curl -fsSL https://raw.githubusercontent.com/KooshaPari/Dino/main/scripts/install-companion.sh | bashOr download DINOForge.Companion-vX.Y.Z-win-x64.zip directly from Releases.
First run: Settings → set Packs Directory to
BepInEx\dinoforge_packs\in your game folder.
irm https://raw.githubusercontent.com/KooshaPari/Dino/main/src/Tools/Installer/Install-DINOForge.ps1 | iexFor non-interactive CI/scripted installs:
irm https://raw.githubusercontent.com/KooshaPari/Dino/main/src/Tools/Installer/Install-DINOForge.ps1 -OutFile .\Install-DINOForge.ps1
.\Install-DINOForge.ps1 -Silentcurl -fsSL https://raw.githubusercontent.com/KooshaPari/Dino/main/src/Tools/Installer/install.sh | bash -s -- --silentDINOForge publishes core libraries as NuGet packages for independent consumption:
| Package | Version | Purpose | Docs |
|---|---|---|---|
| DINOForge.SDK | Registries, schemas, pack loading, asset tools | Docs | |
| DINOForge.Bridge.Protocol | JSON-RPC 2.0 bridge messages and interfaces | Docs | |
| DINOForge.Bridge.Client | Out-of-process game bridge client (netstandard2.0) | Docs | |
| DINOForge.Templates | dotnet new templates for packs and mods | Docs |
Installation:
dotnet add package DINOForge.SDK
dotnet add package DINOForge.Bridge.Protocol
dotnet add package DINOForge.Bridge.ClientAdditional tools available as GitHub releases:
| Tool | Platform | Purpose | Latest |
|---|---|---|---|
| dinoforge-resolver | Windows, Linux | Pack dependency resolution (topological sort) | Release |
| dinoforge-asset-pipeline | Windows, Linux | High-performance asset import & LOD generation (Rust) | Release |
See LIBIFICATION_ROADMAP.md for complete package ecosystem documentation.
New to DINOForge? Start here:
- Developer Guide — Complete setup instructions, architecture overview, and development workflow
- Contributing Guidelines — How to contribute, testing requirements, and release process
If you're building a mod or integration using DINOForge packages:
# Core SDK (registries, schemas, content loading)
dotnet add package DINOForge.SDK
# Game bridge (JSON-RPC protocol and client)
dotnet add package DINOForge.Bridge.Protocol
dotnet add package DINOForge.Bridge.ClientSee NuGet Packages below for full package list and documentation links.
- .NET 8.0 SDK (or .NET 11 preview for tool projects)
- Diplomacy is Not an Option (for Runtime deployment)
- BepInEx 5.4.x (installed in game directory)
dotnet build src/DINOForge.slndotnet test src/DINOForge.slndotnet run --project src/Tools/PackCompiler -- validate packs/example-balanceScaffold a new pack with the CLI:
dotnet run --project src/Tools/Cli -- new my-balance-mod --author "YourName" --type balanceThis creates packs/my-balance-mod/ with a complete template. Then add YAML content files in the referenced directories.
See Your First Mod for a 5-minute quickstart, or packs/example-balance/ for a complete example.
[!EMBED] HAVE — Star Wars pack model previews (#958) Headless-rendered previews of the
warfare-starwarspack's real 3D models. Full gallery:docs/screenshots/model-previews/(contact sheet + per-model hero shots; rendered viaunity-assetbundle-builder/Assets/Editor/RenderModelPreviews.cs).
| Droideka | Clone Trooper (Phase 2) | AAT Walker | V-19 Torrent |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Droid Starfighter | B1 Battle Droid | Probe Droid | ARF Trooper |
![]() |
![]() |
![]() |
![]() |
[!EMBED] STUB — in-game mod menu + live pack swap A recording of the F10 mod menu, a live pack hot-reload, and an in-game asset swap belongs here. Pending rich-embed pipeline (#966). Source frames available under
docs/screenshots/.
graph TD
subgraph "Content Layer"
P1[warfare-modern]
P2[warfare-starwars]
P3[warfare-guerrilla]
P4[example-balance]
end
subgraph "Domain Layer"
W[Warfare Plugin]
E[Economy Plugin]
S[Scenario Plugin]
end
subgraph "SDK Layer"
REG[Registries]
SCH[Schema Validation]
CL[ContentLoader]
AST[Asset Pipeline]
DEP[Dependency Resolver]
end
subgraph "Runtime Layer"
PLG[BepInEx Plugin]
BRG[ECS Bridge]
DMP[Entity Dumper]
OVL[Debug Overlay]
end
subgraph "Game"
DINO[Diplomacy is Not an Option<br/>Unity ECS / DOTS]
end
P1 & P2 & P3 & P4 --> CL
W & E & S --> REG
CL --> REG & SCH & DEP
REG & AST --> BRG
BRG & PLG & DMP & OVL --> DINO
sequenceDiagram
participant PC as PackCompiler
participant CL as ContentLoader
participant SV as SchemaValidator
participant DR as DependencyResolver
participant RG as Registry
PC->>CL: LoadPacks(packsDir)
CL->>CL: Discover pack.yaml files
CL->>DR: Resolve dependencies
DR-->>CL: Topological load order
loop Each pack in order
CL->>SV: Validate content YAML
SV-->>CL: ValidationResult
CL->>RG: Register(id, data, source, packId)
end
CL-->>PC: ContentLoadResult
┌─────────────────────────────────┐
│ Pack (priority 3000+) │ ← Mod content overrides
├─────────────────────────────────┤
│ Domain Plugin (priority 2000+) │ ← Warfare/Economy defaults
├─────────────────────────────────┤
│ Framework (priority 1000+) │ ← DINOForge defaults
├─────────────────────────────────┤
│ Base Game (priority 0+) │ ← Vanilla DINO values
└─────────────────────────────────┘
Higher priority wins. Same priority = conflict detected.
| Layer | Purpose | Target |
|---|---|---|
| Runtime | BepInEx bootstrap, ECS system injection, component mapping | netstandard2.0 |
| SDK | Public mod API — registries, schemas, pack loading, asset tools | netstandard2.0 |
| Domains | Game logic — factions, doctrines, combat, economy | netstandard2.0 |
| Tools | CLI — pack compiler, dump analyzer, asset inspector | net8.0 |
| Tests | xUnit + FluentAssertions | net8.0 |
The dinoforge MCP server provides a core set of game automation and analysis tools for Claude Code integration (39+ tools total in server runtime):
| Tool | Purpose |
|---|---|
game_launch |
Launch game exe + wait for bridge |
game_status |
Running state, entity count, loaded packs |
game_query_entities |
Query ECS entities by component type |
game_get_stat |
Read a stat value on an entity |
game_apply_override |
Apply a stat override |
game_reload_packs |
Hot-reload packs without restarting |
game_dump_state |
Trigger entity dump to file |
game_screenshot |
Capture game window screenshot |
game_verify_mod |
Verify mod is loaded and active |
game_wait_for_world |
Wait until ECS world is ready |
game_ui_automation |
Automate game UI interactions |
game_launch_test |
Launch TEST instance (second concurrent DINO for testing) |
game_analyze_screen |
Capture screenshot + detect UI elements via OmniParser (health bars, unit portraits, buttons, faction indicators) |
game_input |
Inject keyboard/mouse input to game without requiring focus (Win32 SendInput) |
game_wait_and_screenshot |
Poll for visual change then capture screenshot (configurable timeout/interval) |
game_navigate_to |
Navigate to game state (main_menu/gameplay/pause_menu) via input sequences |
The MCP server runs in persistent HTTP mode on http://127.0.0.1:8765 and is the active default for CC.
Quick start:
# Start MCP once in the background (plus optional hot-reload watcher)
./scripts/start-mcp.ps1 -Detached -Watch
# Check health/status
./scripts/start-mcp.ps1 -Action status
# Stop cleanly
./scripts/start-mcp.ps1 -Action stopIn Claude Code, use URL transport configuration:
{
"mcpServers": {
"dinoforge": {
"url": "http://127.0.0.1:8765"
}
}
}.claude/mcp-servers.json is already checked in with this URL transport. Copy it to your
user-level ~/.claude/mcp-servers.json (or the local equivalent in %APPDATA%) and restart CC.
For unattended harness startup, use the repo-managed CC hook in .claude/settings.json; MCP starts automatically on session/prompt.
You can still start it manually from CLI during debugging:
.\scripts\start-mcp.ps1 -Action start -Detachedbefore MCP tool calls. Set DINOFORGE_MCP_WATCH=1 (or pass -Watch) if you want hot-reload.ps1 -Watch to run automatically.
DINOForge/
src/
Runtime/ # BepInEx plugin + ECS Bridge
SDK/ # Public mod API
Domains/Warfare/ # Warfare domain plugin
Tools/PackCompiler/# CLI: validate, build, assets
Tools/DumpTools/ # CLI: dump analysis
Tests/ # Unit + integration tests
packs/ # Content packs
schemas/ # JSON Schema definitions
docs/ # Documentation (VitePress)
Visit kooshapari.github.io/Dino for full documentation.
- SECURITY.md describes private vulnerability reporting, supported versions, and response timelines.
- SUPPORT.md describes support channels, self-service checks, and issue routing.
- FUZZING.md documents the current randomized testing posture and remaining fuzzing gaps.
- CONTRIBUTING.md defines contributor workflow, testing expectations, and release hygiene.
- SDD (Spec-Driven Development) — specifications drive the pipeline
- BDD (Behavior-Driven Development) — acceptance criteria before implementation
- TDD (Test-Driven Development) — unit tests for all public APIs
- DDD (Domain-Driven Design) — bounded contexts (Warfare, Economy, Scenario)
- ADD (Agent-Driven Development) — fully agent-authored codebase
- CDD (Contract-Driven Development) — schemas as contracts between packs and engine
- Coverage — Code coverage is published to Codecov from CI and governed by
codecov.yml. - Versioning — public releases use SemVer tags (
vX.Y.Z) withVERSIONtracking the latest released version. - Changelog —
CHANGELOG.mdfollows Keep a Changelog with a permanent[Unreleased]section. - Ownership —
.github/CODEOWNERSis the review-routing source of truth. - Release Process — see RELEASING.md.
- Shared KooshaPari semantics — see docs/reference/kooshapari-project-semantics.md.
See CONTRIBUTING.md for guidelines.
For Project Planning & Roadmap:
- v0.25.0 Roadmap — Planned features, milestones, and timeline
- Performance Baseline — Performance metrics, benchmarks, and optimization targets
- Pattern Catalog — 30+ CI-gated code quality patterns and governance
Coming in v0.25.0+:
- VDD (Virtual Display Driver) — Tier 1 isolated headless game testing
- Docker backend — Containerized game automation for CI/CD environments
- phenocompose integration — AI-assisted parallel game fleet testing (phenocompose v1.0)
MIT
- BepInEx — Unity mod loader
- AssetsTools.NET — Unity asset bundle library
- devopsdinosaur/dno-mods — Pioneering DINO modding patterns








