Infos modding · pour les créateurs de cartes, les auteurs de mods, les créateurs de mutateurs et les auteurs de cerveaux

Infos modding

Un pack de cartes est un fichier .oamap, un mod un fichier .oamod, un mutateur un fichier .oamut, et un cerveau un fichier .oabrain : un zip avec un manifeste au sommet. Le jeu valide le manifeste, installe le paquet sous son identifiant et le joue selon les règles déclarées. Ce guide vous mène d'un dossier à une version du catalogue, et chaque chapitre renvoie au standard qu'il résume dans la documentation propre du moteur.

D'un dossier au jeu d'un joueurcarte de flux interactive

N'importe quel dossier : les cartes ou les archives et dossiers de données du mod, avec le manifeste à la racine.Votre dossiercartes, unités, scripts…oamap.yaml pour un pack de cartes, oamod.yaml pour un mod : YAML strict, un document, une table de premier niveau.Manifesteoamap.yaml / oamod.yamloa-tool pack vérifie le manifeste et les fichiers comme un chargement le ferait, et écrit l'index des cartes d'un pack.oa-tool packvalide, écrit l'indexUne archive zip sur un seul disque ; pas de liens, de noms de périphériques, de chemins absolus ni de .., au plus 4 Gio décompressés..oamap / .oamodun zip, un manifesteProposez le fichier à la bibliothèque de contenu de Core Prime, ou tenez votre propre registre.PublierCore Prime ou votre registreLe catalogue numérote chaque version d'une clé de paquet ; un numéro plus grand est une mise à jour. Les numéros de version des auteurs ne sont jamais ordonnés.Version du cataloguer1, r2 … jamais réordonnéesLe jeu lit le catalogue signé et installe une version avec GET.Bibliothèque du jeuOA › Cartes / Mods › GETUn .oamap ou .oamod ouvert sur le bureau s'installe lui-même ; les mêmes vérifications s'appliquent.Ouvrir le fichierun double-clic l'installeInstallé sous l'identifiant du manifeste, jamais sous le nom du fichier ; une version précédente est gardée dans .backup.Documents/Open AnnihilationMaps/<id> · Mods/<id>installerdécompresse par identifiantSurvolez une étape pour la règle qu'elle suit ; cliquez pour ouvrir le chapitre. Pointillés : le chemin sans registre.
01

Anatomie d'un pack de cartes

Le zip .oamap, son manifeste oamap.yaml, l'index des cartes écrit par l'empaqueteur, et comment la taille et les éléments d'une carte décident si elle convient à un jeu.

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

Anatomie d'un mod

Le zip .oamod et le profil oamod.yaml : identité, disposition, limites, clés de données, extensions de script et les règles standard qu'il active.

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

Créer un mutateur

Un petit .oamut posé sur le jeu de base ou n'importe quel mod : le dossier, le manifeste, le plan que mutate renvoie, les options, le bac à sable et l'ordre d'une pile.

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

Exemples Lua

Six scripts qui tournent, tirés de vrais paquets : une règle, une mise à l'échelle avec des bornes, un camp, un hook d'unités qui peut refuser la partie, un hook d'éléments et un plan de fichiers à dossiers empilés.

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

Porter un mutateur ancien

KroggyComm 1.1, de ses archives à un paquet, et un fichier de règles TA: Mutation gardé avec sm ou réécrit en Lua.

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

Vérifier, empaqueter et publier

oa-tool mutator check et pack, un essai à blanc, ce que montre la page du catalogue, l'icône et comment proposer le paquet à Core Prime.

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

Créer un cerveau

Un .oabrain qui joue un siège ordinateur : le dossier, chaque clé du manifeste, les étiquettes, les niveaux, la vue complète, où le script tourne, les budgets, et ce qui arrive quand il s'arrête.

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

Le Lua du cerveau

Le manifeste et le script de Steady Commander, les hooks, ce qu'un cerveau peut savoir et faire, les nombres, les tirages aléatoires, les minuteurs et le chat.

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

Classic, un exemple développé

Le joueur ordinateur intégré écrit en Lua : ses fichiers, la table des tâches, une tâche, les notes de bizarrerie, ce qui reste dans le moteur, et comment les mêmes ordres sont prouvés.

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

Réseaux appris

Pourquoi un cerveau embarquerait un .oann, l'arithmétique entière, les couches, en faire tourner un, oa-tool brain net, les limites, et ce que montre la Bibliothèque.

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

Vérifier, empaqueter et publier un cerveau

oa-tool brain pack et check, une partie sans interface et une trace, la vérification de la Bibliothèque et le journal du siège, le type oabrain du catalogue, et comment proposer le paquet à Core Prime.

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

Règles standard

Les règles documentées qu'un profil peut activer, chacune avec sa clé, ses valeurs et le comportement d'origine. Les règles de simulation doivent coïncider entre joueurs.

GitHub · docs/mods/standard-hacks
13

Extensions de script

Les valeurs qu'un profil peut fournir aux scripts d'unités d'un mod, comme le nombre de victimes d'une unité ou les alliances de son propriétaire, avec la façon dont un script COB lit chacune.

GitHub · docs/mods/script-extensions
14

Numéros et versions

Votre numéro de version est un texte libre jamais ordonné. packaging.revision augmente à chaque réempaquetage ; le catalogue numérote les versions. Ne réutilisez jamais un numéro et une révision avec d'autres octets.

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

Publier sur Core Prime

Vérifier un paquet, le proposer à la bibliothèque de contenu, comment une version apparaît dans le catalogue et dans la Bibliothèque de chaque joueur, et comment tenir son propre registre.

GitHub · docs/registries

Démarrage rapide : un pack de cartes

# un dossier, vos cartes dedans, un manifeste à la racine
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}

# valider et empaqueter ; l'index est écrit pour vous
$ oa-tool pack my-maps/ -o my-maps.oamap

Démarrage rapide : un mod

# un mod qui relève la limite d'unités et active deux règles partagées
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

# tout ce que le fichier omet se joue comme en 3.1c
$ oa-tool pack small-mod/ -o small-mod.oamod

Démarrage rapide : un mutateur

# Commander Radar, par Drinken : un dossier, le manifeste au sommet
commander-radar/
  oamut.yaml
  mutator.lua

# mutator.lua : une règle ; l'option radar choisit la portée
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

# empaquetez depuis l'extérieur du dossier, puis vérifiez le .oamut
$ oa-tool mutator pack commander-radar
$ oa-tool mutator check commander-radar-1.oamut

Démarrage rapide : un cerveau

# Steady Commander : un dossier, le manifeste au sommet
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:
  - "*"

# empaquetez le dossier, puis vérifiez le .oabrain contre un jeu
$ 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"