编写生物包
生物包是给 Game Mode(游戏模式) 战斗中的生物准备的美术图。选用某个生物包后,凡是包里有对应美术图的敌人,在战场上都会用这份美术图绘制,而不是显示为圆形棋子。美术图朝向敌人上一次移动的方向,并按生物自身的体型绘制。包里没有对应美术图的敌人仍然显示为棋子。实际游玩时的样子见战术战斗与地形。
一个生物包就是一个 JSON 文件(.creatures.json)。最简单的制作方法是使用 Pixelforge 的 Creatures(生物) 选项卡。Pixelforge 是一个外部工具,会根据每个生物各一张图片生成这个文件。本指南介绍文件本身,供用其他方式制作生物包的人参考。
使用生物包
开始之前,先制作或下载一个 .creatures.json 文件。Pixelforge 是一个独立的制作工具,不属于 Marinara。
- 在 Pixelforge 中打开 Creatures 选项卡。
- 要载入文件,选择 Import a creature pack file(导入生物包文件)。如果生物包是在 Pixelforge 里制作的,选择 Save to the library(保存到库)。
- 选择 Use for fights(用于战斗)。
所有战斗都由同一个生物包绘制。要恢复为棋子,移除所选的生物包,或选择 Use tokens instead(改用棋子)。
文件
{
"creaturePackVersion": 1,
"id": "my-monsters",
"name": "My monsters",
"version": 1,
"author": "Robin",
"tileSize": 48,
"sheets": [{ "id": "s1", "png": "data:image/png;base64,iVBORw0KGgo...", "width": 2048, "height": 1536 }],
"creatures": [
{
"id": "goblin",
"match": ["5e-2014/creatures/goblin", "Goblin"],
"size": "small",
"w": 1,
"h": 2,
"frames": 1,
"variants": [
{ "sheet": "s1", "x": 0, "y": 0 },
{ "sheet": "s1", "x": 1, "y": 0 }
]
}
]
}| 字段 | 含义 |
creaturePackVersion | 1,或带飞行美术图的生物包使用 2(Capability API 1.352)。 |
id | 小写字母、数字、_ 和 -。库会把导入的生物包归档在 local/<id> 下。 |
name、author | 显示在库中。author 可选。 |
version | 一个整数。版本一经写入就不会被改写:要修改生物包,请提高它的版本号。再次导入同一个文件不会有任何变化。 |
tileSize | 一个格子的像素尺寸,为 16 的倍数,范围 16 到 96。Game Mode 的网格是 48。 |
sheets | 最多 64 张图片,每边最多 8192 像素。 |
creatures | 最多 2000 个生物。 |
| 文件大小 | 最多 32 MB。 |
图集
图集的 png 必须是 PNG data URL:以 data:image/png;base64, 开头,后面只跟 base64 数据,别无其他。指向别处图片的链接会被拒绝,base64 之后多出的任何内容也会被拒绝。这样,生物包永远只能显示它自己的图片。width 和 height 必须是 PNG 的真实尺寸;Engine 会从图片的文件头读取这两个值,图集所写与之不符的生物包会被拒绝。
单个生物
| 字段 | 含义 |
id | 生物在包内的 ID,不得重复。 |
match | 这份美术图对应什么,1 到 16 项。每一项可以是规则集生物,也可以是名称,两种也可以并列出现。 |
size | tiny、small、medium、large、huge 或 gargantuan。这只影响外观;每个单位仍然只占一格。 |
w、h | 一帧的大小,以格为单位,各为 1 到 6。 |
frames | 静止的生物为 1,会行走的生物为 3(迈步、站立、迈步)。 |
variants | 它的外观,1 到 8 种,每种写明其区块在图集上的起点:sheet 和左上角格子的 x、y。 |
fly | 可选,需要 creaturePackVersion 2:它的飞行区块,布局与行走区块相同(横向三帧,纵向四个朝向),放置方式与 variants 相同。可用一个区块供所有外观共用,或按相同顺序为每种外观各提供一个。 |
飞行
带 fly 的生物在战斗中显示为处于空中时,会使用它的飞行区块绘制,帧按 0、1、2、1 的顺序播放。也就是说,它满足以下任意一条:
- 有飞行速度而没有步行速度
- 处于悬浮状态
- 位置高于地面
- 本回合进行过飞行(走过只有飞行才能通过的一步,例如越过水面)
其他时候,它仍按原来的外观绘制。
若 Experience 地图包中的生物包有飞行美术图,则需要 Capability API 1.352。
match 指定什么
- 规则集生物:
<catalog>/<entry>(例如creatures/goblin) 会匹配任意规则集中的那个生物图鉴条目。<ruleset>/<catalog>/<entry>(例如5e-2014/creatures/goblin) 只在那个规则集中匹配它。 - 名称:按名称匹配敌人。大小写和标点会被忽略,末尾的数字也会被忽略,所以“Goblin 2”也算一只哥布林。
来自规则集生物图鉴的战斗者先按条目匹配,再按名称匹配。如果两个生物匹配到同一个对象,包里排在前面的那个生效;导入生物包时,Engine 会对此给出提示。
尺寸
帧以格为单位计算。生物绘制时站在所在格子的底边上、水平居中,因此大型生物会覆盖到周围的格子上。在 48 像素的网格上,以下尺寸效果合适:
| 生物 | 帧(w × h) |
| 微型生物,或小型、中型的四足生物 | 1 × 1 |
| 直立的小型或中型生物 | 1 × 2 |
| 大型 | 2 × 2;如果直立(食人魔、魔像),则为 2 × 3 |
| 巨型 | 3 × 3;如果直立(巨人),则为 3 × 4 |
| 超巨型 | 4 × 4 |
区块:行与帧
每种外观都是图集上的一个区块。区块横向有 frames 帧,纵向有 4 行,每帧占 w × h 格。各行代表朝向,顺序如下:
- 向下(面朝观看者)
- 向左
- 向右
- 向上(从背后看)
静止的生物(frames: 1)是四个朝向排成的一列。会行走的生物(frames: 3)每行依次为迈步、站立、迈步,和常见的行走动画图集一样。每个区块都必须完全位于图集之内;超出边缘的区块,Engine 会逐一指出。
外观
有多种外观(不同的服装、颜色或武器)的生物,会给它的每个战斗者分配其中一种。同一个战斗者每次绘制都保持同一外观,同一场战斗里的两只哥布林可以长得不一样。一个生物的所有外观尺寸都相同。
在 Pixelforge 的 Creatures 选项卡中,生物旁边的 Add looks(添加外观) 可以再添加与第一张图片尺寸相同的图片,总共最多八张。