Info de modding · para creadores de mapas, autores de mods, de mutadores y de cerebros

Info de modding

Un paquete de mapas es un archivo .oamap, un mod un archivo .oamod, un mutador un archivo .oamut y un cerebro un archivo .oabrain: un zip con un manifiesto en la raíz. El juego valida el manifiesto, instala el paquete bajo su identificador y lo juega según las reglas declaradas. Esta guía te lleva de una carpeta a una versión del catálogo, y cada capítulo enlaza el estándar que resume en la documentación del motor.

De una carpeta al juego de un jugadormapa de flujo interactivo

Cualquier carpeta: los mapas o los archivos y carpetas de datos del mod, con el manifiesto en la raíz.Tu carpetamapas, unidades, scripts…oamap.yaml para un paquete de mapas, oamod.yaml para un mod: YAML estricto, un documento, un mapa de nivel superior.Manifiestooamap.yaml / oamod.yamloa-tool pack comprueba el manifiesto y los archivos como lo haría una carga, y escribe el índice de mapas de un paquete.oa-tool packvalida, escribe el índiceUn archivo zip en un solo disco; sin enlaces, nombres de dispositivo, rutas absolutas ni .., como mucho 4 GiB descomprimidos..oamap / .oamodun zip, un manifiestoOfrece el archivo a la biblioteca de contenido de Core Prime, o mantén tu propio registro.PublicarCore Prime o tu registroEl catálogo numera cada versión de una clave de paquete; un número mayor es una actualización. Los números de versión de los autores nunca se ordenan.Versión del catálogor1, r2 … nunca se reordenanEl juego lee el catálogo firmado e instala una versión con GET.Biblioteca en el juegoOA › Mapas / Mods › GETUn .oamap o .oamod abierto en el escritorio se instala solo; se aplican las mismas comprobaciones.Abrir el archivoun doble clic lo instalaInstalado bajo el identificador del manifiesto, nunca bajo el nombre del archivo; se guarda una versión anterior en .backup.Documents/Open AnnihilationMaps/<id> · Mods/<id>instalardescomprime por identificadorPasa el ratón por un paso para ver su regla; haz clic para abrir el capítulo. Discontinuo: el camino sin registro.
01

Anatomía de un paquete de mapas

El zip .oamap, su manifiesto oamap.yaml, el índice de mapas que escribe el empaquetador, y cómo el tamaño y los elementos de un mapa deciden si encaja en un juego.

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

Anatomía de un mod

El zip .oamod y el perfil oamod.yaml: identidad, disposición, límites, claves de datos, extensiones de script y las reglas estándar que activa.

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

Crear un mutador

Un .oamut pequeño sobre el juego base o cualquier mod: la carpeta, el manifiesto, el plan que devuelve mutate, las opciones, el aislamiento y el orden en que se aplica una pila.

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

Ejemplos en Lua

Seis scripts que funcionan, de paquetes reales: una regla, escalar con topes, un bando, un hook de unidades que puede rechazar la partida, un hook de elementos y un plan de archivos con carpetas en capas.

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

Portar un mutador antiguo

KroggyComm 1.1, de sus archivos a un paquete, y un archivo de reglas de TA: Mutation que se conserva con sm o se reescribe en Lua.

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

Comprobar, empaquetar y publicar

oa-tool mutator check y pack, una prueba en seco, qué muestra la página del catálogo, el icono y cómo ofrecer el paquete a Core Prime.

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

Crear un cerebro

Un .oabrain que juega un asiento de ordenador: la carpeta, cada clave del manifiesto, las etiquetas, los niveles, la visión total, dónde corre el script, las asignaciones y qué pasa cuando se detiene.

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

El Lua del cerebro

El manifiesto y el script de Steady Commander, los hooks, lo que un cerebro puede saber y hacer, los números, las tiradas aleatorias, los temporizadores y el chat.

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

Classic, un ejemplo desarrollado

El jugador de ordenador integrado escrito en Lua: sus archivos, la tabla de tareas, una tarea, las notas de peculiaridades, lo que se queda en el motor y cómo se demuestran las mismas órdenes.

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

Redes aprendidas

Por qué un cerebro puede incluir un .oann, la aritmética entera, las capas, ejecutar una, oa-tool brain net, los límites y qué muestra la Biblioteca.

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

Comprobar, empaquetar y publicar un cerebro

oa-tool brain pack y check, una partida sin interfaz y una traza, la comprobación de la Biblioteca y el registro del asiento, el tipo oabrain del catálogo y cómo ofrecer el paquete a Core Prime.

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

Reglas estándar

Las reglas documentadas que un perfil puede activar, cada una con su clave, sus valores y el comportamiento del que proviene. Las reglas de simulación deben coincidir entre jugadores.

GitHub · docs/mods/standard-hacks
13

Extensiones de script

Los valores que un perfil puede dar a los scripts de unidades de un mod, como las bajas de una unidad o las alianzas de su dueño, y cómo los lee un script COB.

GitHub · docs/mods/script-extensions
14

Números y versiones

Tu número de versión es texto libre y nunca se ordena. packaging.revision sube con cada reempaquetado; el catálogo numera las versiones. Nunca reutilices un número y una revisión con otros bytes.

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

Publicar en Core Prime

Comprobar un paquete, ofrecerlo a la biblioteca de contenido, cómo aparece una versión en el catálogo y en la Biblioteca de cada jugador, y cómo mantener un registro propio.

GitHub · docs/registries

Inicio rápido: un paquete de mapas

# una carpeta, tus mapas dentro, un manifiesto en la raíz
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 y empaquetar; el índice se escribe por ti
$ oa-tool pack my-maps/ -o my-maps.oamap

Inicio rápido: un mod

# un mod que sube el límite de unidades y activa dos reglas compartidas
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

# todo lo que el archivo omite se juega como en 3.1c
$ oa-tool pack small-mod/ -o small-mod.oamod

Inicio rápido: un mutador

# Commander Radar, de Drinken: una carpeta, el manifiesto en la raíz
commander-radar/
  oamut.yaml
  mutator.lua

# mutator.lua: una regla; la opción radar elige el alcance
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

# empaqueta desde fuera de la carpeta y luego comprueba el .oamut
$ oa-tool mutator pack commander-radar
$ oa-tool mutator check commander-radar-1.oamut

Inicio rápido: un cerebro

# Steady Commander: una carpeta, el manifiesto en la raíz
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:
  - "*"

# empaqueta la carpeta y luego comprueba el .oabrain contra un juego
$ 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"