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

Моддинг

Набір мап — це один файл .oamap, мод — один файл .oamod, мутатор — один файл .oamut, а мозок — один файл .oabrain: zip-архів із маніфестом у корені. Гра перевіряє маніфест, установлює пакет за його ідентифікатором і грає за оголошеними в ньому правилами. Цей посібник проведе тебе від теки до випуску в каталозі, а кожен розділ посилається на стандарт, який він стисло викладає, у власній документації рушія.

Від теки до гри гравцяінтерактивна схема

Будь-яка тека: мапи або архіви й теки даних моду, з маніфестом у корені.Твоя текамапи, юніти, скрипти…oamap.yaml для набору мап, oamod.yaml для моду: строгий YAML, один документ, одне відображення верхнього рівня.Маніфестoamap.yaml / oamod.yamloa-tool pack перевіряє маніфест і файли так само, як під час завантаження в гру, і записує індекс мап для набору.oa-tool packперевіряє, записує індексZip-архів з одного тому; без посилань, імен пристроїв, абсолютних шляхів чи .., щонайбільше 4 GiB у розпакованому вигляді..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"