所有格式页面 ↓
教程与参考

术语表

来自 coreprime/kbot @ 0ab97bf · 在 GitHub 上编辑

横扫千军模组制作中反复出现的词汇的跨格式参考。各术语都链接回对其讨论最深入的页面。


锚点对象(Anchor object)

3DO 中只有一个顶点、没有任何图元的部件。运行时不可见;它的用途是充当 COB 脚本命令所用的命名坐标(emit-sfx from <anchor>;)。

压缩包(Archive)

HPI / UFO / CCX / GP3 文件。这四种扩展名的磁盘格式相同,只在加载顺序上有所不同。

ARGB4444 / ARGB1555

真彩色 TAF 所用的两种 16 位像素编码。ARGB4444 为 alpha、红、绿、蓝各分配 4 位(16 级柔和 alpha);ARGB1555 是 1 位 alpha 加上 RGB 各 5 位(硬边镂空)。由帧的 Format 字节(4 或 5)选择使用哪一种。

属性格(Attribute cell)

TNT(或 SCT)地图中 16×16 像素的格子。每个图块是 32×32 像素,因此包含 4 个属性格。高度、地图物件的放置,以及寻路/建造是否合法,都按属性格存储。

轴(Axis)

在 COB/3DO 中,指标识三个旋转轴之一的数字 ID:0 = X,1 = Y,2 = Z。MOVE/TURN/SPIN 的 COB 操作码以内联操作数的形式接收轴。在 3DO 文件中,Y 轴朝上。

BOS

“Basic Object Script”——用于单位动画和行为脚本的类 C 源语言。编译为 COB。由模组作者手写;也可以用 kbot cob decompile 从 COB 中还原。

COB

“Cobble”——引擎实际执行的基于栈的字节码。见 COB / BOS。

压缩块(Compression chunk)

HPI 文件中解压后不超过 64 KiB 的块。每个块都有自己的 SQSH 块头、压缩方法(LZ77 / ZLib / 无)、一对大小值,以及可选的第二轮 XOR 扰码。

内嵌调色板(Embedded palette)

附加在 PCX 文件 RLE 像素数据之后的 PAL,前面有一个 0x0C 标记字节。共 769 字节。

地图物件(Feature)

放置在 TNT 地图上的静态非单位对象:树木、岩石、金属矿点、地热喷口、水源区等。定义在 features/**/*.tdf 文件中(见 TDF),由 TNT 按名称引用。

定点数(Fixed-point)

3DO 模型的坐标系统。每个 int32 坐标表示 value / 65536.0 个世界空间单位。因此 0x00010000 = 恰好 1 个世界单位;0x00018000 = 1.5 个世界单位。

占地范围(Footprint)

单位或地图物件在网格上的包围盒,以 16 像素的属性格为单位表示(FootprintX × FootprintZ)。引擎用它来处理建造放置和寻路。

游戏 tick(Game tick)

基本的时间单位。每秒 30 个 tick。 COB 和 GAF 中的大多数计时字段都以 tick 为单位。

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 行,每个阴影或光照级别一行)。引擎在所需的那一行中查找当前颜色,结果是另一个调色板索引,可以经由常规的 8bpp 管线绘制。只有当表的大小完全正确时,游戏才会使用它;缺失的表或大小不对的表都会根据调色板重建。见 PAL。

LZ77

当 CompMethod == 1 时 HPI 块所用的滑动窗口压缩。4 KiB 窗口,2-17 字节的匹配,标签位低位在前。

魔术粉(Magic pink)

标准 TA 调色板中的调色板索引 9(#5454FC)。编辑工具在源 PCX/GAF 文件中用它填充透明区域;它也是许多 GAF 帧所存储的透明色键,因此在那些帧中是透明的。在其他地方它只是一种普通颜色。见透明色键。

对象名(Object name)

单位的 3DO、COB 和 PCX 文件所共用的小写基本名称。在 FBI 中以 Objectname 字段声明。与 UnitName 不同,后者是其他配置所用的外部标识符。

OTA

“Online Total Annihilation”——TNT 地图的元数据附属文件。TDF 格式的纯文本(TDF)。记录任务名称、描述、AI 简报、起始位置、环境提示。

带调色板的图像(Paletted image)

像素值是指向另一个 256 条目 PAL 的 8 位索引、而不是直接的 RGB 三元组的位图。TA 发布的每一种可见资源都是带调色板的:PCX、GAF、SCT、TNT 的图块像素,以及内嵌的小地图。值得一提的例外是横扫千军:王国的真彩色 TAF 动画。

部件(Piece)

3DO 中的命名子对象。COB 脚本按名称操纵部件(turn turret1 to y-axis [90] speed [60];)。

方案(Schema)

TNT 配套的 OTA 文件中一套命名的备选游戏设置。不同的方案通常为不同的玩家人数提供不同的起始位置布局。

海平面(Sea level)

TNT 文件头中的 SeaLevel 字段。Height 字节小于海平面的属性格都被视为位于水下。SeaLevel == 0 的地图没有任何地方在水下;SeaLevel == 255 的地图则全部在水下。

区块(Section)

SCT 文件。Cavedog 的 TAE 编辑器拼接起来构建最终 TNT 地图的可复用图块块。

信号掩码(Signal mask)

在 COB 脚本中声明的位掩码(set-signal-mask <n>),决定哪些 signal 消息会抢占当前的脚本实例。用于在状态改变时干净地取消 Walk/Aim/Idle 动画。

阵营(Side)

TA 中是 ARM 或 CORE;横扫千军:王国中是 Aramon、Taros、Veruna 或 Zhon。在 FBI 的 Side 字段中按单位声明;在横扫千军:王国中,它还决定 GAF 动画渲染时所用的阵营调色板。

SQSH

HPI 中每个压缩块开头的标记(0x48535153,小端序)。俏皮地暗指这些块是被“压扁”(squashed)的数据。

子帧(Sub-frame)

嵌套的 GAF 帧。一个可见的动画帧可以由多个子帧按顺序绘制合成,每个子帧都有自己的原点偏移和像素数据。

TAF

横扫千军:王国的真彩色动画。沿用 GAF 的容器布局,但存储的是 16 位 ARGB4444 / ARGB1555 像素而不是调色板索引,因此自带颜色和 alpha。.taf 扩展名与带调色板的 GAF 式文件共用——靠每帧的格式字节区分两者。

Tick

见游戏 tick。

图块(Tile)

32×32 像素的一块地图图形。是 TNT 和 SCT 的基本显示单元。图块网格以 uint16 索引,因此理论上每张地图最多可以有 65,536 个不同的图块。

透明色键(Transparency key)

GAF 帧所存储的、作为透明色的调色板索引。对于未压缩帧,游戏不绘制该值的像素;压缩帧的透明像素则是它的跳过游程,其余像素即使等于透明色键也照样绘制。不存在整个调色板通用的透明索引:地形、小地图、PCX 背景和模型纹理会绘制每一个索引,包括调色板索引 0(黑色)。真彩色 TAF 帧没有透明色键——透明度改由逐像素的 alpha 通道提供。

真彩色(Truecolor)

按像素存储颜色(和 alpha)、而不是存储调色板索引的位图。TA 的美术资源几乎全都是带调色板的,真彩色是其中的例外:横扫千军:王国的 TAF 动画使用 16 位 ARGB4444 / ARGB1555 像素。

TSF

“TAF Source Format”——TAF 便于阅读、以花括号分隔的文本形式。横扫千军:王国的界面加载器直接读取 .tsf 作为菜单背景;kbot taf decompile 输出它,kbot taf compile 把它读回。见 TAF / TSF。

虚拟文件系统(Virtual filesystem,VFS)

把安装根目录中每个 HPI 系列的压缩包分层叠加之后,引擎(以及 kbot mount / kbot mcp)所看到的合并文件树。有了它,你在引用 units/ARMCOM.fbi 这样的文件时,不必关心它位于 totala1.hpi、ccdata.ccx 还是某个展开后的目录中。

空白格(Void cell)

Feature == 0xFFFC 的 TNT 属性格。标记不可通行的地形(峡谷崖壁、深水边界),它本身不是地图物件,但应当被视为那里有一个地图物件。

Yardmap

FBI 中的多行 ASCII 网格,描述建筑占地范围内每个格子的限制。常见字母:o = 开放地面,c = 封闭(已建有东西),w = 仅限水面。