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

Info de modding

Um pacote de mapas é um ficheiro .oamap, um mod é um ficheiro .oamod, um mutador é um ficheiro .oamut e um cérebro é um ficheiro .oabrain: um zip com um manifesto no topo. O jogo valida o manifesto, instala o pacote pelo seu id e joga-o segundo as regras que declara. Este guia acompanha-o desde uma pasta até um lançamento no catálogo, e cada capítulo tem uma ligação para a norma que resume, na documentação do próprio motor.

De uma pasta até ao jogo de um jogadormapa interativo do processo

Qualquer pasta: os mapas, ou os arquivos e as pastas de dados do mod, com o manifesto no topo.A sua pastamapas, unidades, scripts…oamap.yaml para um pacote de mapas, oamod.yaml para um mod: YAML estrito, um documento, um único mapeamento de nível superior.Manifestooamap.yaml / oamod.yamlO oa-tool pack verifica o manifesto e os ficheiros tal como um carregamento faria, e escreve o índice de mapas de um pacote.oa-tool packvalida e escreve o índiceUm arquivo zip num só disco: sem ligações, nomes de dispositivos, caminhos absolutos nem .., e no máximo 4 GiB descompactado..oamap / .oamodum zip, um manifestoOfereça o ficheiro à biblioteca de conteúdos do Core Prime, ou mantenha um repositório próprio.PublicarCore Prime ou o seu repositórioO catálogo numera cada lançamento de uma chave de pacote, e um número mais alto é 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 no ambiente de trabalho instala-se sozinho, com as mesmas verificações.Abrir o ficheiroum duplo clique instala-oInstalado pelo id do manifesto, nunca pelo nome do ficheiro. Uma versão anterior fica guardada em .backup.Documents/Open AnnihilationMaps/<id> · Mods/<id>instalardescompacta pelo idPasse o ponteiro sobre um passo para ver a regra que segue e clique nele para abrir o capítulo. A tracejado: o caminho sem repositório.
01

Anatomia de um pacote de mapas

O zip .oamap, o seu manifesto oamap.yaml, o índice de mapas que o empacotador escreve, e como o tamanho e os elementos de um mapa decidem se é compatível com uma 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 predefinidos que ativa.

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

Criar um mutador

Um pequeno .oamut sobreposto ao jogo base ou a qualquer mod: a pasta, o manifesto, o plano que mutate devolve, as opções, a sandbox e a ordem pela qual uma pilha se aplica.

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

Exemplos em Lua

Seis scripts funcionais de pacotes reais: uma regra, escalonamento com limites, um lado, um hook de unidades que pode recusar a partida, um hook de elementos e um plano de ficheiros com pastas sobrepostas.

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

Portar um mutador legado

O KroggyComm 1.1, dos seus arquivos até um pacote, e um ficheiro 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 ensaio, 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, todas as chaves do manifesto, as etiquetas, os níveis, a visão total, onde o script corre, as quotas e o que acontece quando 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, temporizadores 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 seus ficheiros, a tabela de tarefas, uma tarefa, as notas sobre peculiaridades, o que fica no motor e como se prova que as ordens são as mesmas.

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

Redes treinadas

Porque é que um cérebro pode incluir um .oann, a aritmética de inteiros, as camadas, como executar uma, 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 rasto, a verificação da Biblioteca e o registo do lugar, o tipo oabrain do catálogo e como oferecer o pacote ao Core Prime.

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

Ajustes predefinidos

As regras documentadas que um perfil pode ativar, cada uma com a sua chave, os seus valores e o comportamento de onde veio. Os ajustes de simulação têm de coincidir entre os jogadores.

GitHub · docs/mods/standard-hacks
13

Extensões de script

Os valores que um perfil pode dar aos scripts das unidades de um mod, como o número de abates de uma unidade ou as alianças do seu dono, e como um script COB lê cada um.

GitHub · docs/mods/script-extensions
14

Versões e lançamentos

A sua versão é texto livre e nunca é ordenada. packaging.revision sobe a cada novo empacotamento, e o catálogo numera os lançamentos. Nunca reutilize uma versão e uma revisão com bytes diferentes.

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

Publicar no Core Prime

Verificar um pacote, oferecê-lo à biblioteca de conteúdos, como um lançamento aparece no catálogo e na 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, os seus mapas lá 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 automaticamente
$ 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 partilhadas
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 ficheiro omite joga-se como na 3.1c
$ oa-tool pack small-mod/ -o small-mod.oamod

Início rápido: um mutador

# Commander Radar, de Drinken: uma pasta, com 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

# empacote a partir de fora da pasta e depois verifique 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, com 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:
  - "*"

# empacote a pasta e depois verifique 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"