Глосарій
Джерело: coreprime/kbot @ 0ab97bf · Редагувати на GitHub
Міжформатний довідник поширеної лексики моддингу Total Annihilation. Терміни посилаються на сторінку, де їх розглянуто найдокладніше.
Опорний об'єкт (anchor object)
Частина 3DO з однією вершиною й нулем примітивів. Під час гри
невидима; її призначення — бути іменованою координатою для команд
скриптів COB (emit-sfx from <anchor>;).
Архів (archive)
Файл HPI / UFO / CCX / GP3. Усі чотири розширення мають однаковий формат на диску й відрізняються лише порядком завантаження.
ARGB4444 / ARGB1555
Два 16-бітні кодування пікселів, що використовуються в повнокольоровому
TAF. ARGB4444 пакує по 4 біти альфи, червоного, зеленого й
синього (16 рівнів м'якої прозорості); ARGB1555 пакує 1-бітну альфу плюс
по 5 бітів на кожен канал RGB (чітка маска вирізання). Яке з них
використовується, визначає байт Format кадру (4 або 5).
Клітинка атрибутів (attribute cell)
Клітинка 16×16 пікселів на мапі TNT (або SCT). Кожен тайл має розмір 32×32 px і тому містить 4 клітинки атрибутів. Висоти, розміщення об'єктів і допустимість руху та будівництва зберігаються для кожної клітинки атрибутів.
Вісь (axis)
У COB/3DO — числовий ID однієї з трьох осей обертання: 0 = X, 1 = Y,
2 = Z. Опкоди COB для MOVE/TURN/SPIN приймають вісь як
вбудований операнд. У файлах 3DO вісь Y спрямована вгору.
BOS
«Basic Object Script» — C-подібна вихідна мова скриптів анімації та
поведінки юнітів. Компілюється в COB. Моддери пишуть її
вручну; kbot cob decompile відновлює її з COB.
COB
«Cobble» — стековий байткод, який насправді виконує рушій. Див. COB / BOS.
Фрагмент стиснення (compression chunk)
Блок усередині файлу HPI, що після розпакування займає не більше 64 КіБ. Кожен фрагмент має власний заголовок SQSH, метод стиснення (LZ77 / ZLib / без стиснення), пару розмірів і необов'язкове повторне перемішування XOR.
Вбудована палітра (embedded palette)
PAL, дописаний до файлу PCX одразу після піксельних
даних RLE, із байтом-маркером 0x0C попереду. Загалом 769 байтів.
Об'єкт (feature)
Статичний об'єкт, що не є юнітом і розміщений на мапі TNT:
дерево, скеля, металеве родовище, геотермальне джерело, гідрополе тощо.
Визначається у файлі features/**/*.tdf (див. TDF), а TNT
посилається на нього за іменем.
Фіксована кома (fixed-point)
Система координат моделей 3DO. Кожна координата int32 означає
value / 65536.0 одиниць світового простору. Тож 0x00010000 — рівно 1
світова одиниця, а 0x00018000 — 1,5 світової одиниці.
Площа основи (footprint)
Обмежувальний прямокутник юніта чи об'єкта на сітці, виражений у
16-піксельних клітинках атрибутів (FootprintX × FootprintZ). Рушій
використовує його для розміщення будівель і пошуку шляху.
Ігровий тік (game tick)
Базова одиниця часу. 30 тіків на секунду. Більшість полів, пов'язаних із часом, у COB і GAF вимірюються в тіках.
HPI
Архів «HAPI». Див. HPI / UFO / CCX / GP3.
Нашарування (layering)
Спосіб, у який рушій під час запуску поєднує кілька архівів
HPI. Файли в архіві, завантаженому пізніше, затіняють файли з
тим самим шляхом у раніших архівах. Порядок завантаження (від
найнижчого пріоритету до найвищого): .hpi → .ufo → .ccx → .gp3.
Таблиця пошуку (lookup table)
Файл .alp, .lht або .shd: рядки по 256 індексів палітри (а не
RGB), по одному стовпцю на кожен вихідний колір. .alp має 65 536 байтів
(256 рядків, по одному на кожного партнера змішування); .shd чи .lht
— 8 192 байти (32 рядки, по одному на кожен рівень затінення чи
освітлення). Рушій шукає поточний колір у потрібному рядку, і результатом
є інший індекс палітри, який можна намалювати через звичайний 8-бітний
конвеєр. Гра використовує таблицю, лише якщо її розмір точний; відсутня
таблиця або таблиця будь-якого іншого розміру будується заново з
палітри. Див. PAL.
LZ77
Стиснення з ковзним вікном, що використовується у фрагментах
HPI, коли CompMethod == 1. Вікно 4 КіБ, збіги довжиною 2-17
байтів, біти тегів від молодшого (LSB first).
«Чарівний рожевий» (magic pink)
Індекс палітри 9 у канонічній палітрі TA (#5454FC). Інструменти
редактора використовують його як колір заливки прозорих ділянок у
вихідних файлах PCX/GAF, а також він є збереженим ключем багатьох кадрів
GAF, через що в цих кадрах він прозорий. В інших місцях це звичайний
колір. Див. Ключ прозорості.
Ім'я об'єкта (object name)
Базове ім'я в нижньому регістрі, спільне для файлів 3DO,
COB і PCX юніта. Оголошується у FBI як
поле Objectname. Відрізняється від UnitName — зовнішнього
ідентифікатора, яким користуються інші конфігурації.
OTA
«Online Total Annihilation» — супровідний файл метаданих для мапи TNT. Звичайний текст у форматі TDF (TDF). Містить назву місії, опис, вказівки для ШІ, стартові позиції, параметри середовища.
Палітрове зображення (paletted image)
Растрове зображення, значення пікселів якого — 8-бітні індекси в окремій PAL на 256 записів, а не безпосередні RGB-трійки. Кожен видимий ресурс, що постачається з TA, палітровий: PCX, GAF, SCT, пікселі тайлів TNT і вбудовані мінімапи. Помітний виняток — повнокольорові анімації TAF у TA: Kingdoms.
Частина (piece)
Іменований підоб'єкт у 3DO. Скрипти COB керують
частинами за іменем (turn turret1 to y-axis [90] speed [60];).
Схема (schema)
Іменований альтернативний варіант налаштування гри всередині супутнього файлу OTA мапи TNT. Різні схеми зазвичай містять різні розташування стартових позицій для різної кількості гравців.
Рівень моря (sea level)
Поле SeaLevel у заголовку TNT. Будь-яка клітинка атрибутів,
байт Height якої менший за рівень моря, вважається підводною. На
мапі з SeaLevel == 0 під водою немає нічого; на мапі з
SeaLevel == 255 під водою все.
Секція (section)
Файл SCT. Багаторазові фрагменти з тайлів, які редактор TAE від Cavedog зшивав докупи, щоб зібрати остаточні мапи TNT.
Маска сигналів (signal mask)
Бітова маска, оголошена в скрипті COB (set-signal-mask <n>),
яка визначає, які повідомлення signal витіснять поточний екземпляр
скрипту. Використовується, щоб чисто скасовувати анімації
Walk/Aim/Idle, коли змінюється стан.
Сторона (side)
ARM або CORE у TA; Aramon, Taros, Veruna чи Zhon у TA: Kingdoms.
Оголошується для кожного юніта в полі Side у FBI; у TA:
Kingdoms також визначає, з палітрою якої сторони рендеритиметься
анімація GAF.
SQSH
Маркер (0x48535153 LE) на початку кожного стисненого фрагмента в
HPI. Жартівливий натяк на те, що дані у фрагментах
«сплющені» (squashed).
Підкадр (sub-frame)
Вкладений кадр GAF. Один видимий кадр анімації може бути композицією кількох підкадрів, що виводяться (blit) по черзі, кожен зі своїм зміщенням точки прив'язки й піксельними даними.
TAF
Повнокольорова анімація TA: Kingdoms. Повторно використовує
структуру контейнера GAF, але замість індексів палітри
зберігає 16-бітні пікселі ARGB4444 / ARGB1555,
тож несе власні колір і альфу. Розширення .taf спільне з палітровими
файлами в стилі GAF — їх розрізняє байт формату в кожному кадрі.
Тік (tick)
Див. ігровий тік.
Тайл (tile)
Фрагмент графіки мапи розміром 32×32 пікселі. Базова одиниця
відображення для TNT і SCT. Сітка тайлів
індексується через uint16, що теоретично дає до 65 536 унікальних
тайлів на мапу.
Ключ прозорості (transparency key)
Індекс палітри, який кадр GAF зберігає як прозорий. У кадрі без стиснення гра не малює пікселів із цим значенням; у стисненому кадрі прозорі пікселі — це його серії пропуску, а решта пікселів малюється, навіть якщо дорівнює ключу. Прозорого індексу на рівні всієї палітри немає: рельєф, мінімапи, фони PCX і текстури моделей малюють кожен індекс, зокрема й індекс палітри 0 (чорний). Повнокольорові кадри TAF ключа не мають — прозорість натомість береться з альфа-каналу кожного пікселя.
Повнокольоровий (truecolor)
Растрове зображення, що зберігає колір (і альфу) для кожного пікселя, а не індекс у палітрі. Виняток з інакше повністю палітрової графіки TA: анімації TAF у TA: Kingdoms використовують 16-бітні пікселі ARGB4444 / ARGB1555.
TSF
«TAF Source Format» — зрозуміла людині текстова форма TAF,
розмежована фігурними дужками. Завантажувач інтерфейсу TA: Kingdoms
читає .tsf безпосередньо для фонів меню; kbot taf decompile виводить
його, а kbot taf compile читає назад. Див. TAF / TSF.
Віртуальна файлова система (virtual filesystem, VFS)
Об'єднане дерево файлів, яке бачить рушій (і kbot mount / kbot mcp)
після нашарування всіх архівів сімейства HPI у корені
інсталяції. Дає змогу посилатися на файл на кшталт units/ARMCOM.fbi,
не переймаючись тим, чи лежить він у totala1.hpi, ccdata.ccx або в
розгорнутому каталозі.
Порожня клітинка (void cell)
Клітинка атрибутів TNT з Feature == 0xFFFC. Позначає
непрохідний рельєф (стіни каньйонів, межі глибокої води), який сам не є
об'єктом, але має оброблятися так, ніби там є об'єкт.
Yardmap
Багаторядкова ASCII-сітка у FBI, що описує обмеження для
кожної клітинки площі основи будівлі. Поширені літери: o = відкритий
суходіл, c = закрита клітинка (забудована), w = лише вода.