这段时间在战术上取得了众多开发进展,例如,
- 多框架协同工作:Arwes 科幻风格、ThreeUI 效果、Ink 脚本与既往基于 Vue.JS 和 Reveal.JS 的自建 RPG 双边对话与交互框架的融合
- 3D解剖大地图的引进
- MakeHuman 的 headless 运行、人物模型和骨骼动画的引进
但是在战略上,一个能充分描述该游戏玩法的 MVP 尚未诞生。虽然之前提到过“弗兰肯斯坦”时刻,但这段时间我所做的一切相当于给了“弗兰肯斯坦”一副躯体,但是“弗兰肯斯坦”始终缺少“脑子”。“脑子”的特点是什么?是即使当下衣不蔽体,它也能梦见自己羽翼丰满,自由翱翔于天际。像洋葱一样它是由内向外分层的,最核心的一层是作者内心的想法(Conception),再外一层是提笔写下的书面策划案(Curation),再外一层是伪代码/接口(Interface)代码,最后到能与躯体通信的代码实现(Implementation)组成的皮层。
我很早就了解到,在 Interactive Fiction 社区,有一种小众编程语言能跨越 Curation、Interface 层——Inform 7。然而碍于小众及其生态,我迟迟没有认真考虑使用这门编程语言,直到最近思考到“控制台命令与 GUI 绑定”这个课题,我的目光才开始正视这门语言。
这个课题,简单来说起源于游戏“开放性”和“真实性”的讨论。“开放性”是指我们不希望被“副本”一样的房间所限制,所以《原神》《鸣潮》这些开放大世界游戏让地图块连成连续的大地图;“真实性”是指与环境交互的真实——我们不希望传说中毁天灭地的终极魔法居然打不破一扇普通的木门,我们希望当环境风吹起时角色的发丝能随风飘荡。Inform 7中我们能定义动作,我们可以在一个对象上尝试所有动作——虽然不一定会起作用,但至少我们是“自由”的,比代码层面的 ECS 架构还自由,GUI 是对这种“自由”的收束——一个按钮代表了设计者允许你对某个对象执行的某个具体动作。从这个角度上讲,追求 GUI 实际上放弃了“动作”的“开放性”和交互的“真实性”——某个定义的动作会因为作者的疏忽,玩家无法在适宜的对象身上执行(AI 在游戏半成品中经常犯这种错误)。Inform 7本体能确保使用控制台语言与定义的一切对象自由交互——控制台,或者说那个承担控制台功能的输入框和输出框,其实可以视为游戏“手柄”的原型,一切按钮、键盘、真手柄输入本质上可以视为转换成了控制台语句进而与游戏进行交互。用 Inform 7 制作一个控制台体验的游戏就是在制作一个游戏 MVP——美术确实不重要了,没有美术,纯文字也能跑的游戏就是 IF。更何况 Inform 7 这个“主机”通过 Vorple 接入 HTML 这个 GUI“外显”以后,也能驱动 GUI 的运行。所以,Inform 7 就是我所苦苦追寻的那个“脑子”。“脑子”的联动也比其他编程语言容易——有时候简单到用一句话把这两个世界的各自一个地点连接起来。
“脑子”找到了,但并不意味着就好用多少。即使 AI 具有一定的 Inform 7 的知识,Inform 7 的编译器能够输出 HTML 文本指示代码中存在的错误,但是 AI 缺乏随机应变的能力,活脱脱将利器用成钝器。举个例子吧,Inform 7 具有良好的世界模型定义,这本该成为优势,但是 AI 并不懂得灵活使用它——它还停留在传统编程语言的条件判断范式中,不懂得将 Inform 7 的 room 模型转化为流程模型,在游戏开局企图用条件判断堵死玩家“越狱”的可能,但总归留下一扇能够逃出生天的舷窗,或者仍打印一些多余的文字,我作为 supervisor 一次次看到这种惨不忍睹的画面,曾经也被 AI 误导,陷入绝望,但终于想到并问出了那个问题——你为什么不把玩家丢进只有选项出口,只能选择一把钥匙,开门通过后即刻吊销钥匙的房间当中?——玩家自然知道 ta 要做出选择,因为房间会教 ta 做出正确选择,比你苦口婆心写下千字万字让玩家严格遵守你的操作规程还管用,比你用条件判断堵死玩家回头的可能还管用。
关于指挥 AI 利用 Inform 7 同时发挥策划和程序员职能,制造出具备 agility 的 MVP 的技巧,我也还在摸索当中。当下写下此篇,是为了告诉以后的自己:我正走在一条正确的 MVP 建设道路上,并没有误入歧途。


暂无关于此日志的评论。