编写生物包

生物包是给 Game Mode(游戏模式) 战斗中的生物准备的美术图。选用某个生物包后,凡是包里有对应美术图的敌人,在战场上都会用这份美术图绘制,而不是显示为圆形棋子。美术图朝向敌人上一次移动的方向,并按生物自身的体型绘制。包里没有对应美术图的敌人仍然显示为棋子。实际游玩时的样子见战术战斗与地形。

一个生物包就是一个 JSON 文件(.creatures.json)。最简单的制作方法是使用 Pixelforge 的 Creatures(生物) 选项卡。Pixelforge 是一个外部工具,会根据每个生物各一张图片生成这个文件。本指南介绍文件本身,供用其他方式制作生物包的人参考。

使用生物包

开始之前,先制作或下载一个 .creatures.json 文件。Pixelforge 是一个独立的制作工具,不属于 Marinara。

  1. 在 Pixelforge 中打开 Creatures 选项卡。
  2. 要载入文件,选择 Import a creature pack file(导入生物包文件)。如果生物包是在 Pixelforge 里制作的,选择 Save to the library(保存到库)。
  3. 选择 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 }
      ]
    }
  ]
}
字段含义
creaturePackVersion1,或带飞行美术图的生物包使用 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 项。每一项可以是规则集生物,也可以是名称,两种也可以并列出现。
sizetiny、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 指定什么

来自规则集生物图鉴的战斗者先按条目匹配,再按名称匹配。如果两个生物匹配到同一个对象,包里排在前面的那个生效;导入生物包时,Engine 会对此给出提示。

尺寸

帧以格为单位计算。生物绘制时站在所在格子的底边上、水平居中,因此大型生物会覆盖到周围的格子上。在 48 像素的网格上,以下尺寸效果合适:

生物帧(w × h)
微型生物,或小型、中型的四足生物1 × 1
直立的小型或中型生物1 × 2
大型2 × 2;如果直立(食人魔、魔像),则为 2 × 3
巨型3 × 3;如果直立(巨人),则为 3 × 4
超巨型4 × 4

区块:行与帧

每种外观都是图集上的一个区块。区块横向有 frames 帧,纵向有 4 行,每帧占 w × h 格。各行代表朝向,顺序如下:

  1. 向下(面朝观看者)
  2. 向左
  3. 向右
  4. 向上(从背后看)

静止的生物(frames: 1)是四个朝向排成的一列。会行走的生物(frames: 3)每行依次为迈步、站立、迈步,和常见的行走动画图集一样。每个区块都必须完全位于图集之内;超出边缘的区块,Engine 会逐一指出。

外观

有多种外观(不同的服装、颜色或武器)的生物,会给它的每个战斗者分配其中一种。同一个战斗者每次绘制都保持同一外观,同一场战斗里的两只哥布林可以长得不一样。一个生物的所有外观尺寸都相同。

在 Pixelforge 的 Creatures 选项卡中,生物旁边的 Add looks(添加外观) 可以再添加与第一张图片尺寸相同的图片,总共最多八张。