Modding-Infos · für Kartenmacher, Mod-Autoren, Mutator-Macher und Gehirn-Autoren

Modding-Infos

Ein Kartenpaket ist eine .oamap-Datei, ein Mod eine .oamod-Datei, ein Mutator eine .oamut-Datei und ein Gehirn eine .oabrain-Datei: ein Zip mit einem Manifest obenauf. Das Spiel prüft das Manifest, installiert das Paket unter seiner Kennung und spielt es nach den erklärten Regeln. Diese Anleitung führt vom Ordner bis zum Katalog-Release, und jedes Kapitel verlinkt den Standard, den es in der Engine-Dokumentation zusammenfasst.

01

Aufbau eines Kartenpakets

Das .oamap-Zip, sein Manifest oamap.yaml, der Kartenindex, den der Packer schreibt, und wie Größe und Elemente einer Karte entscheiden, ob sie zu einem Spiel passt.

GitHub · docs/maps/oamap-standard.md
02

Aufbau eines Mods

Das .oamod-Zip und das Profil oamod.yaml: Identität, Layout, Limits, Datenschlüssel, Skripterweiterungen und die Standardregeln, die es einschaltet.

GitHub · docs/mods/oamod-standard.md
03

Einen Mutator machen

Ein kleines .oamut über dem Grundspiel oder jedem Mod: der Ordner, das Manifest, der Plan, den mutate zurückgibt, Optionen, die Sandbox und die Reihenfolge eines Stapels.

GitHub · docs/mutators/oamut-standard.md
04

Lua-Beispiele

Sechs lauffähige Skripte aus echten Paketen: eine Regel, Skalieren mit Grenzen, eine Seite, ein Einheiten-Hook, der das Spiel ablehnen kann, ein features-Hook und ein Dateiplan mit geschichteten Ordnern.

GitHub · docs/mutators/oamut-standard.md#61-the-lua-forms
05

Einen alten Mutator übertragen

KroggyComm 1.1 von seinen Archiven zum Paket, und eine Regeldatei von TA: Mutation, die mit sm bleibt oder als Lua neu geschrieben wird.

GitHub · docs/mutators/authoring.md#15-importing-a-ta-mutation-mutator
06

Prüfen, packen und veröffentlichen

oa-tool mutator check und pack, ein Probelauf, was die Katalogseite zeigt, das Icon und wie du das Paket Core Prime anbietest.

GitHub · docs/mutators/authoring.md#1-a-first-mutator
07

Ein Gehirn machen

Eine .oabrain, die einen Computersitz spielt: der Ordner, jeder Schlüssel des Manifests, die Tags, die Stufen, die volle Sicht, wo das Skript läuft, die Budgets und was geschieht, wenn es anhält.

GitHub · docs/brains/oabrain-standard.md
08

Das Lua des Gehirns

Manifest und Skript von Steady Commander, die Hooks, was ein Gehirn wissen und tun darf, Zahlen, Zufallsziehungen, Timer und Chat.

GitHub · docs/brains/oabrain-standard.md#7-what-a-brain-may-know
09

Classic, ein ausgearbeitetes Beispiel

Der eingebaute Computerspieler, in Lua geschrieben: seine Dateien, die Aufgabentabelle, eine Aufgabe, die Notizen zu den Eigenheiten, was in der Engine bleibt, und wie dieselben Befehle nachgewiesen werden.

GitHub · docs/brains/authoring.md#13-classic-a-walkthrough
10

Gelernte Netze

Warum ein Gehirn ein .oann mitliefern kann, Ganzzahlarithmetik, die Schichten, eines ausführen, oa-tool brain net, die Grenzen und was die Bibliothek zeigt.

GitHub · docs/brains/oabrain-standard.md#9-neural-networks
11

Ein Gehirn prüfen, packen und veröffentlichen

oa-tool brain pack und check, ein Match ohne Oberfläche und ein Trace, die Prüfung der Bibliothek und das Sitzprotokoll, die oabrain-Art des Katalogs und wie man das Paket Core Prime anbietet.

GitHub · docs/brains/authoring.md#11-testing
12

Standardregeln

Die dokumentierten Regeln, die ein Profil einschalten kann, jede mit Schlüssel, Werten und dem Verhalten, aus dem sie stammt. Simulationsregeln müssen zwischen Spielern übereinstimmen.

GitHub · docs/mods/standard-hacks
13

Skripterweiterungen

Die Werte, die ein Profil den Einheitenskripten eines Mods geben kann, etwa die Abschüsse einer Einheit oder die Bündnisse ihres Besitzers, und wie ein COB-Skript jeden liest.

GitHub · docs/mods/script-extensions
14

Versionen und Releases

Deine Version ist freier Text und wird nie sortiert. packaging.revision steigt mit jedem Neupacken; der Katalog nummeriert Releases. Verwende nie Version und Revision mit anderen Bytes wieder.

GitHub · docs/mods/oamod-standard.md#47-catalogue-releases
15

Auf Core Prime veröffentlichen

Ein Paket prüfen, es der Inhaltsbibliothek anbieten, wie ein Release im Katalog und in der Bibliothek jedes Spielers erscheint, und wie man ein eigenes Register betreibt.

GitHub · docs/registries

Schnellstart: ein Kartenpaket

# ein Ordner, deine Karten darin, ein Manifest obenauf
my-maps/
  oamap.yaml
  Ridge.tnt  Ridge.ota
  Long Lakes.tnt  Long Lakes.ota

# oamap.yaml
oamap: 1
id: my-maps
name: My Maps
version: "1.0"
author: {name: A. Mapper}
packaging: {revision: 1, date: 2026-10-18, packager: A. Mapper}

# prüfen und packen; der Index wird für dich geschrieben
$ oa-tool pack my-maps/ -o my-maps.oamap

Schnellstart: ein Mod

# ein Mod, der das Einheitenlimit anhebt und zwei gemeinsame Regeln einschaltet
oamod: 1
id: small-mod
name: Small Mod
version: "1.0"
author: {name: A. Modder}
packaging: {revision: 1, date: 2026-10-04, packager: A. Modder}

limits:
  units-per-player: {default: 500, max: 1000}

hacks:
  units.id-reuse-delay: true
  economy.deterministic-wind: true

# alles, was die Datei weglässt, spielt sich wie 3.1c
$ oa-tool pack small-mod/ -o small-mod.oamod

Schnellstart: ein Mutator

# Commander Radar, von Drinken: ein Ordner, das Manifest obenauf
commander-radar/
  oamut.yaml
  mutator.lua

# mutator.lua: eine Regel; die Option radar wählt die Reichweite
function mutate(ctx)
  local distance = ctx.options.radar == "none" and 0 or 2880
  return {
    rules = {
      where { commander = 1, bmcode = 1 }:change {
        radardistance = set(distance),
      },
    },
  }
end

# von außerhalb des Ordners packen, dann die .oamut prüfen
$ oa-tool mutator pack commander-radar
$ oa-tool mutator check commander-radar-1.oamut

Schnellstart: ein Gehirn

# Steady Commander: ein Ordner, das Manifest obenauf
steady-commander/
  oabrain.yaml
  brain.lua

# oabrain.yaml
oabrain: 1
id: steady-commander
name: Steady Commander
version: "1.0"
author:
  name: Ridge Workshop
description: "Builds a little economy, then a factory, and sends a squad when it is ready."
tags:
  - economy
  - teaching
works-with:
  - "*"

# den Ordner packen, dann die .oabrain gegen ein Spiel prüfen
$ build/oa-tool brain pack brains/examples/steady-commander --out /tmp/brain-scratch/steady-commander.oabrain
$ build/oa-tool brain check /tmp/brain-scratch/steady-commander.oabrain --game-dir "$OA_GAME_DIR"