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
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.md02Anatomí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.md03Crear 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.md04Ejemplos 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-forms05Portar 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-mutator06Comprobar, 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-mutator07Crear 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.md08El 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-know09Classic, 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-walkthrough10Redes 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-networks11Comprobar, 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-testing12Reglas 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-hacks13Extensiones 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-extensions14Nú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-releases15Publicar 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/registriesInicio 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"