No coding required to start. • Your game is never touched until you say so. • One command to undo everything.
You edit WARNO's generated files directly. It works — until it doesn't.
| Editing files directly | With YMB |
|---|---|
| 😖 A game update wipes your work | ✅ Your changes re-apply to the new files |
| 😖 "What did I even change?" | ✅ Every change is one readable line of config |
| 😖 Two features fight over one file | ✅ Conflicts are detected and explained |
| 😖 One typo breaks the whole mod | ✅ Checked before anything is installed |
| 😖 No way back | ✅ recover --yes restores the originals |
YMB never edits the game directly. You describe what to change; YMB works out how, shows you the result, and only installs it once you approve.
flowchart LR
A["✍️ You write<br/><b>one small change</b>"] --> B["🔍 <b>validate</b><br/>catches mistakes"]
B --> C["📦 <b>build</b><br/>preview you can read"]
C --> D["🚀 <b>sync</b><br/>installs it"]
D -.->|any time| E["↩️ <b>recover</b><br/>undoes it"]
style A fill:#1e293b,color:#fff
style D fill:#166534,color:#fff
style E fill:#7c2d12,color:#fff
Instead of rewriting a 27 MB game file, you say which value to change:
- op: modify
selector:
kind: field
by: path
value: Descriptor_Unit_T80U.FrontArmor
value: 7When WARNO updates, that instruction still finds the right unit. A copied file would not.
Requires: Windows and a WARNO mod folder made with the game's
CreateNewMod.bat.
- Download the latest release.
- Extract the
YMBfolder into your mod, besideCommonDataandGameData. - Double-click
YMB/YMB.bat. - Type
doctorand check the folders it lists.
<WARNO>/Mods/YourMod/
├── CommonData/
├── GameData/
└── YMB/ ← extract here
├── YMB.bat ← double-click this
└── mods/ ← your work goes here
Inside YMB.bat:
init --id my_pack --name "My Pack"
That writes a small working example — a patch, a replaced file, a script, and a test — so you can see every piece in context. Then:
validate --mod my_pack # anything broken?
build --mod my_pack # write a preview you can read
sync --mod my_pack --yes # install it
Changed your mind?
recover --mod my_pack --yes
👉 Full walkthrough, no coding needed →
|
Change one field, add one list entry, remove one block. Survives game updates. |
"Every missile gets double range." One rule, hundreds of blocks, with safety limits. |
|
Add, copy, refresh, or remove files and directories. |
Write TypeScript when config is not enough. Ships with NDF tools and caching. |
|
Define a number once, use it across every patch and file. |
Companion tests run automatically on every validate, build, and sync. |
| ✅ Guaranteed | Detail |
|---|---|
| Nothing installs by surprise | sync and recover refuse to run without --yes. |
| You review before you install | build writes a preview you can open and read. |
| Originals are kept | sync saves every file it replaces, so recover can restore them. |
| Your manual edits are noticed | YMB refuses to overwrite a synced file you changed by hand. |
| Broken output never ships | NDF is checked before and after every patch. |
| Interruptions roll back | A crashed sync is undone on the next command, not left half-applied. |
| Writes stay inside the mod | Output can only land under GameData or CommonData. |
⚠️ One thing YMB cannot check for you: generation scripts are real programs and run on your machine. Only use source mods you trust.
| Command | What it does |
|---|---|
doctor |
Check the folders, and what is currently installed |
init |
Create a starter mod to learn from |
list |
Show the mods and patches YMB can see |
explain |
Say why a patch was included or skipped |
find |
Search the game files for a block to target |
validate |
Check for mistakes. Changes nothing |
build |
Write the finished files to a preview folder |
sync --yes |
Install the built files into your game mod |
recover --yes |
Undo a sync and restore the originals |
cleanup |
Delete temporary files, keep the undo data |
Add --mod, --patch, --scope dev, or --verbose to any of them except init.
--dry-run and --no-cache apply to the commands that would write or cache — run
help or <command> --help for the exact list.
Scripting something? --json works on every command and prints one machine-readable
result instead of text. See How a build works → Scripting YMB.
| 🚀 Getting started | Install and ship your first change, no coding |
| 🔄 How a build works | The four commands and the safety model |
| ⚙️ Configuration | Every setting, explained |
| 🎯 Changing NDF files | Selectors and operations |
| 🧩 Variables | ${...} expressions and helpers |
| 📜 Generation scripts | The ymb/api reference |
| 🧠 Advanced topics | Layering, caching, recovery internals |
Source-available under a custom license — see LICENSE and NOTICE.
In plain language:
- ✅ Use YMB for what it is for, including mods you sell
- ✅ Build and publish whatever you like with it
- ✅ Modify your own copy, and modify it to send a contribution back
- ❌ Do not redistribute YMB itself, or modified copies, without written permission
- 📣 If you publish a mod built with YMB, credit YMB visibly with a working link
- 🤝 Contributions you submit may be used and relicensed as part of YMB
This list is a summary. The LICENSE is what actually applies.
Third-party software. YMB bundles commander,
yaml, and zod, and the
full archive also ships the Bun runtime. Each stays under its own license,
listed with a link to its terms in THIRD-PARTY-NOTICES.md inside every release.
Questions, bugs, or ideas → Discord