Info de modding · para criadores de mapas e autores de mods, de mutadores e de cérebros

Info de modding

Um pacote de mapas é um arquivo .oamap, um mod é um arquivo .oamod, um mutador é um arquivo .oamut e um cérebro é um arquivo .oabrain: um zip com um manifesto no topo. O jogo valida o manifesto, instala o pacote pelo ID e o joga segundo as regras que ele declara. Este guia leva você de uma pasta até um lançamento no catálogo, e cada capítulo traz o link do padrão que ele resume, na documentação do próprio motor.

De uma pasta ao jogo de um jogadormapa interativo do fluxo

Qualquer pasta: os mapas, ou os arquivos compactados e as pastas de dados do mod, com o manifesto no topo.Sua pastamapas, unidades, scripts…oamap.yaml para um pacote de mapas, oamod.yaml para um mod: YAML estrito, um documento, um mapeamento de nível superior.Manifestooamap.yaml / oamod.yamloa-tool pack confere o manifesto e os arquivos como um carregamento faria, e escreve o índice de mapas de um pacote.oa-tool packvalida e escreve o índiceUm arquivo zip num só volume. Sem links, nomes de dispositivo, caminhos absolutos nem .., e no máximo 4 GiB descompactado..oamap / .oamodum zip, um manifestoOfereça o arquivo à biblioteca de conteúdo do Core Prime, ou mantenha um repositório próprio.PublicarCore Prime ou seu repositórioO catálogo numera cada lançamento da chave de um pacote, e um número maior é uma atualização. As versões nunca são ordenadas.Lançamento no catálogor1, r2 … nunca reordenadosO jogo lê o catálogo assinado e instala um lançamento com OBTER.Biblioteca no jogoOA › Mapas / Mods › OBTERUm .oamap ou .oamod aberto na área de trabalho se instala sozinho. As mesmas verificações valem.Abrir o arquivoum clique duplo o instalaInstalado pelo ID do manifesto, nunca pelo nome do arquivo. A versão anterior fica guardada em .backup.Documents/Open AnnihilationMaps/<id> · Mods/<id>instalardescompacta pelo IDPasse o mouse sobre uma etapa para ver a regra que ela segue e clique para abrir o capítulo. Tracejado: o caminho sem repositório.
01

Anatomia de um pacote de mapas

O zip .oamap, o manifesto oamap.yaml, o índice de mapas que o empacotador escreve e como o tamanho e os elementos de um mapa decidem se ele serve numa partida.

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

Anatomia de um mod

O zip .oamod e o perfil oamod.yaml: identidade, estrutura, limites, chaves de dados, extensões de script e os ajustes padrão que ele ativa.

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

Criar um mutador

Um .oamut pequeno sobre o jogo base ou qualquer mod: a pasta, o manifesto, o plano que mutate retorna, as opções, o sandbox e a ordem em que uma pilha se aplica.

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

Exemplos em Lua

Seis scripts de pacotes reais: uma regra, escala com limites, um lado, um hook de unidades que pode recusar a partida, um hook de elementos e pastas de arquivos em camadas.

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

Portar um mutador antigo

O KroggyComm 1.1, dos arquivos compactados originais a um pacote, e um arquivo de regras do TA: Mutation mantido com sm ou reescrito em Lua.

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

Verificar, empacotar e publicar

oa-tool mutator check e pack, uma execução de teste, o que a página do catálogo mostra, o ícone e como oferecer o pacote ao Core Prime.

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

Criar um cérebro

Um .oabrain que joga num lugar de computador: a pasta, cada chave do manifesto, as tags, os níveis, a visão total, onde o script roda, as cotas e o que acontece quando ele para.

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

O Lua do cérebro

O manifesto e o script do Steady Commander, os hooks, o que um cérebro pode saber e fazer, números, sorteios aleatórios, timers e chat.

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

Classic, um exemplo comentado

O computador integrado escrito em Lua: os arquivos, a tabela de tarefas, uma tarefa, as notas de peculiaridades, o que fica no motor e como se prova que as ordens são iguais.

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

Redes treinadas

Por que um cérebro levaria um .oann, aritmética de inteiros, as camadas, como executar uma rede, oa-tool brain net, os limites e o que a Biblioteca mostra.

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

Verificar, empacotar e publicar um cérebro

oa-tool brain pack e check, uma partida sem interface e um rastreamento, a verificação da Biblioteca e o log do lugar, o tipo oabrain e como oferecer o pacote ao Core Prime.

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

Ajustes padrão

As regras documentadas que um perfil pode ativar, com chave, valores e o comportamento de origem. Os ajustes de simulação precisam ser iguais entre os jogadores.

GitHub · docs/mods/standard-hacks
13

Extensões de script

Os valores que um perfil pode passar aos scripts de unidade de um mod, como os abates de uma unidade ou as alianças do dono, e como um script COB lê cada um.

GitHub · docs/mods/script-extensions
14

Versões e lançamentos

A versão é texto livre e nunca é ordenada. packaging.revision sobe a cada reempacotamento, e o catálogo numera os lançamentos. Não reutilize versão e revisão com outros bytes.

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

Publicar no Core Prime

Verificar um pacote, oferecê-lo à biblioteca de conteúdo, como um lançamento chega ao catálogo e à Biblioteca de cada jogador, e como manter um repositório próprio.

GitHub · docs/registries

Início rápido: um pacote de mapas

# uma pasta, seus mapas dentro, um manifesto no topo
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}

# validar e empacotar: o índice é escrito para você
$ oa-tool pack my-maps/ -o my-maps.oamap

Início rápido: um mod

# um mod que aumenta o limite de unidades e ativa duas regras compartilhadas
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

# tudo o que o arquivo omite funciona como no 3.1c
$ oa-tool pack small-mod/ -o small-mod.oamod

Início rápido: um mutador

# Commander Radar, de Drinken: uma pasta, o manifesto no topo
commander-radar/
  oamut.yaml
  mutator.lua

# mutator.lua: uma regra; a opção radar escolhe a distância
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

# empacotar de fora da pasta e depois verificar o .oamut
$ oa-tool mutator pack commander-radar
$ oa-tool mutator check commander-radar-1.oamut

Início rápido: um cérebro

# Steady Commander: uma pasta, o manifesto no topo
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:
  - "*"

# empacotar a pasta e depois verificar o .oabrain com um jogo
$ 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"