模型运行时
Studio 中的 Live2D 与 Spine 角色:绘制运行时的作用、由使用方提供的原因,以及它在项目中的位置
视觉小说中的角色大多是图片:一张成品差分对应一个姿态,或一组按标签切换的图层。这两种角色由 Studio 自行绘制
Live2D 与 Spine 角色不是图片,而是带绑定的模型,自带动画系统,由运行时负责绘制。运行时是模型格式厂商编写的渲染器。Studio 不包含任何运行时,也不代为下载。运行时由使用方提供,每个项目一次;安装后,Studio 将该角色按普通角色处理:它按脚本站位、随摄像机运动、由剧本控制姿态,并在读档后正确恢复
Live2D
从下载的 Cubism SDK for Web 压缩包安装,由 Studio 在本机构建适配器
Spine
自行构建适配器后安装,需持有 Spine Editor 授权
编写自己的运行时
模块契约,适用于任何已有的渲染器
运行时由使用方提供的原因
Studio 是公开源码的免费软件,两个渲染器都不能包含在其中。Live2D 的协议禁止以「源码分发且可被第三方修改」的许可覆盖其代码;Spine 的协议要求使用含有其运行时的产品的每一位用户各自持有付费的 Editor 授权。因此 NarraLeaf 不将任何一个渲染器随 Studio 分发;代为下载同样构成分发行为
Studio 负责渲染器之外的全部环节:
| Studio 负责 | 使用方负责 |
|---|---|
| 角色本身:站位、图层、变换、不透明度、存档条目 | 从厂商处获取运行时,并接受其许可协议 |
| 将运行时安装进项目并校验 | 承担所发行游戏的许可义务 |
| 读取模型,填充其动作、表情与参数 | 提供模型本身 |
| 将运行时打包进构建产物 |
实际结果是,渲染器由发行方在其构建的游戏中分发
商业发行前请阅读厂商条款。Studio 在安装时会列出要点,但不能替代厂商自身的许可协议,NarraLeaf 也不是该协议的当事方
运行时的存放位置
每个运行时占用项目内的一个目录:
目录名即运行时名称:角色引用的是它,引擎在运行期解析的也是它。index.js 是唯一必需的文件;缺少该文件的目录会被报告为安装不完整,并在打包时跳过
运行时属于项目内容而非缓存,会被复制进每个构建产物。Live2D 的运行时文件约 1 MB,渲染器编译在其中
两家厂商的条款涵盖的都是「在发行的游戏中再分发其渲染器」,不涵盖公开的源码仓库。请将 runtimes/puppet/ 排除在你公开的仓库之外;没有它的机器重新安装一次即可
管理运行时
项目 → 运行时 列出 Studio 支持的全部运行时,以及在当前项目中发现的运行时及其状态:

| 状态 | 含义 |
|---|---|
| 已安装 | index.js 存在且可加载 |
| 已安装但不完整 | 目录存在,但缺少 index.js。安装未完成,或解压内容有误 |
| 本工程未安装 | 目录不存在。不使用模型的项目属于此状态 |
同一安装流程也可从需要该运行时的角色处进入
在已安装运行时的机器上创建的角色,在未安装的机器上仍引用同一名称。该角色不会损坏,Studio 也不会改写它,而是报告本工程未安装并提供安装入口。刚克隆的项目即为该状态
创建角色
运行时在创建角色时选择,之后不可更改:新建角色 → Live2D Cubism / Spine / 自定义运行时。角色 kind 在创建时固定,因为三种 kind 之间不共享数据,切换会丢弃原有内容
新建的模型角色有两项待设置:
绘制运行时
当前机器是否已安装该角色所需的运行时。未安装时,安装 会打开对应产品的安装流程
模型
模型本身作为项目资产。模型是一个目录,包含清单文件以及清单引用的贴图、动作与物理文件,因此按目录导入而非按文件导入。若项目中尚无模型资产,该行提供导入入口
两项均设置完成后,检视面板的其余部分才会出现,因为这些内容读取自模型:Studio 通过已安装的运行时挂载模型并查询其内容。动作、表情、皮肤与参数将显示为可选列表,上方预览以静止姿态绘制模型
运行时可以不报告模型内容。此时各控件显示为文本输入框,需手动输入名称,其余行为不变
在剧本中控制姿态
除普通角色支持的命令外,模型角色还接受四条命令:
| 命令 | 别名 | 设置 |
|---|---|---|
/motion Doll run | /anim | 动画。不指定名称时清除动画,模型回到静止 |
/face Doll smile | /expr、/expression | 表情。与切换图片角色姿态的命令相同 |
/skin Doll winter | /costume | 皮肤,适用于支持皮肤的格式 |
/param Doll ParamAngleX 12 | 模型的单个数值参数 |
各名称均来自模型报告的内容,以列表形式提供
引擎中的对应元素
模型角色编译为引擎的木偶 (Puppet) 元素:一个由引擎持有、内部由后端绘制的区域。Studio 负责安装后端并向其提供模型,区域本身由引擎负责。编写运行时时,该页面即为契约