Моддинг · для авторов карт, модов, мутаторов и мозгов

Моддинг

Набор карт — это один файл .oamap, мод — один файл .oamod, мутатор — один файл .oamut, а мозг — один файл .oabrain: zip-архив с манифестом в корне. Игра проверяет манифест, устанавливает пакет под его id и играет по объявленным в нём правилам. Это руководство проведёт вас от папки до выпуска в каталоге, а каждая глава ссылается на стандарт в документации движка, который она кратко пересказывает.

От папки до игры у игрокаинтерактивная схема

Любая папка: карты или архивы и папки данных мода, с манифестом в корне.Ваша папкакарты, юниты, скрипты…oamap.yaml для набора карт, oamod.yaml для мода: строгий YAML, один документ, одно отображение верхнего уровня.Манифестoamap.yaml / oamod.yamloa-tool pack проверяет манифест и файлы так же, как при загрузке, и пишет индекс карт для набора.oa-tool packпроверяет, пишет индексZip-архив из одного тома: без ссылок, имён устройств, абсолютных путей и .., не больше 4 ГиБ в распакованном виде..oamap / .oamodодин zip, один манифестПредложите файл в библиотеку контента Core Prime или запустите собственный реестр.ПубликацияCore Prime или ваш реестрКаталог нумерует каждый выпуск ключа пакета, и больший номер означает обновление. Версии никогда не упорядочиваются.Выпуск в каталогеr1, r2 … порядок не меняетсяИгра читает подписанный каталог и устанавливает выпуск кнопкой ПОЛУЧИТЬ.Библиотека в игреOA › Карты / Моды › ПОЛУЧИТЬФайл .oamap или .oamod, открытый на рабочем столе, устанавливается сам. Проверки те же.Открыть файлдвойной щелчок устанавливаетУстанавливается под id из манифеста, а не под именем файла. Одна предыдущая версия хранится в .backup.Documents/Open AnnihilationMaps/<id> · Mods/<id>установкараспаковка по idНаведите указатель на шаг, чтобы увидеть его правило, и щёлкните, чтобы открыть главу. Пунктир — путь без реестра.
01

Устройство набора карт

Zip-файл .oamap, его манифест oamap.yaml, индекс карт, который пишет упаковщик, и как размер и объекты карты решают, подходит ли она к игре.

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

Устройство мода

Zip-файл .oamod и профиль oamod.yaml: идентификация, структура, лимиты, ключи данных, расширения скриптов и стандартные доработки, которые включает мод.

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

Сделать мутатор

Небольшой .oamut поверх основной игры или любого мода: папка, манифест, план, который возвращает mutate, параметры, песочница и порядок применения стека.

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

Примеры на Lua

Шесть рабочих скриптов из настоящих пакетов: одно правило, масштаб с ограничениями, одна сторона, хук units с отказом от игры, хук features и план files со слоями папок.

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

Перенос старого мутатора

KroggyComm 1.1 из исходных архивов в пакет, а также файл правил TA: Mutation, оставленный через sm или переписанный на Lua.

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

Проверка, упаковка и публикация

oa-tool mutator check и pack, пробный прогон, что показывает страница каталога, значок и как предложить пакет Core Prime.

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

Сделать мозг

Пакет .oabrain для одного места компьютера: папка, все ключи манифеста, теги, уровни, полный обзор, где выполняется скрипт, бюджеты и что бывает, когда он останавливается.

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

Lua мозга

Манифест и скрипт Steady Commander, хуки, что мозг может знать и делать, числа, случайные значения, таймеры и чат.

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

Classic: разбор примера

Встроенный компьютерный игрок на Lua: файлы, таблица задач, одна задача, заметки о причудах, что остаётся в движке и как доказано, что приказы совпадают.

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

Обученные сети

Зачем мозгу поставлять .oann, целочисленная арифметика, слои, запуск сети, oa-tool brain net, лимиты и что показывает Библиотека.

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

Проверка, упаковка и публикация мозга

oa-tool brain pack и check, матч без графики и трассировка, проверка в Библиотеке и журнал места, тип oabrain в каталоге и как предложить пакет Core Prime.

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

Стандартные доработки

Задокументированные правила, которые может включить профиль: ключ, значения и исходное поведение каждого. Доработки симуляции должны совпадать у всех игроков.

GitHub · docs/mods/standard-hacks
13

Расширения скриптов

Значения, которые профиль может передать скриптам юнитов мода, например число убийств юнита или союзы его владельца, и как скрипт COB читает каждое из них.

GitHub · docs/mods/script-extensions
14

Версии и выпуски

Версия — произвольный текст без порядка. packaging.revision растёт с каждой переупаковкой, каталог нумерует выпуски. Не выпускайте одну версию и ревизию с разными байтами.

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

Публикация в Core Prime

Проверка пакета, отправка в библиотеку контента, как выпуск появляется в каталоге и в Библиотеке у каждого игрока и как запустить собственный реестр.

GitHub · docs/registries

Быстрый старт: набор карт

# одна папка, внутри ваши карты, в корне манифест
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}

# проверка и упаковка, индекс пишется автоматически
$ oa-tool pack my-maps/ -o my-maps.oamap

Быстрый старт: мод

# мод, который поднимает лимит юнитов и включает два общих правила
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

# всё, что файл не указывает, работает как в 3.1c
$ oa-tool pack small-mod/ -o small-mod.oamod

Быстрый старт: мутатор

# Commander Radar от Drinken: одна папка, манифест в корне
commander-radar/
  oamut.yaml
  mutator.lua

# mutator.lua: одно правило, параметр radar выбирает дальность
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

# упакуйте снаружи папки, затем проверьте .oamut
$ oa-tool mutator pack commander-radar
$ oa-tool mutator check commander-radar-1.oamut

Быстрый старт: мозг

# Steady Commander: одна папка, манифест в корне
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:
  - "*"

# упакуйте папку, затем проверьте .oabrain с игрой
$ 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"