alpacanist

《谐恶力量》是为一碟醋包出来的饺子。

以饺子的标准来说,《谐恶力量》不是什么好饺。

但我还是要讲一讲从砍树开始造擀面杖的过程,也就是饺子的一生。

游戏起源于几年前想出的一个机制,这个机制(汉语谐音梗本体论)本身没有什么价值,或者我的能力还不足以发掘它的价值,总之它唯一的作用就是如鲠在喉。如果不横下心来把它送进一个成品的坟墓,它将永远影响我的生活。

长痛不如短痛。当时我看到p1论坛举行的极短24将在半个月后截止。我想,啊,就是它了。

为什么呢,因为这一届比赛的主题之一是“错误解读”。而谐音机制的本质就是曲解。

就是它了,就是这碟醋了。

提上日程,也就是真正全心全意考虑这个游戏该怎么做之后,几个严峻的问题才开始像水葫芦一样浮上水面,祸害无穷。第一个问题,便是要确定一个具体可行的玩法。

至少三年前我就做过一个基于 selection 的 js demo。我非常中意 js 能够对文档树操作自如。那时候的《谐恶力量》有好几个机制,玩家可以从界面任意采撷文字放进背包,按下某些键使用,等等。但在解谜游戏中,每出现一个新的机制,都得做一个完整的引入关卡,还要考虑它和原先机制的结合。复杂度将指数上升。

因此这一次我准备把玩法限定到两个:选择词语后立刻跳转,以及,合成两个词语后跳转。

这就立刻带来了一系列新的问题。可以想见的是,游戏的重心会偏移,从解谜偏移到交互碎片叙事。这不是最让人头痛的。

试写了一些剧情以后我发现,其实汉语的同音词非常的少,大部分还没法用。因为汉语谐音梗的原理根本不是以词语为单位。下载的一些输入法词库文件也验证了这个猜想。所以要写出剧本,势必走向一个恶心的方向:模糊词语的边界。

为什么说恶心呢,首先是从美学的角度,我非常不能接受这样抠字眼。但没办法,只能说选择了硬着头皮做完这个机制、还只来得及做这么两个玩法,就等于选择了一个卑贱的出身。其次从玩家的角度来看,体验肯定会很崩溃,缺乏意义,缺乏巧妙带来的满足,只有在字缝里一寸寸踅摸筋疲力尽的感受。

但在崩溃中,我逐渐产生了一些别的体会。汉语虽然没有空格,阅读时我们还是会习惯分词。也就是说如果游戏的机制是抠字眼,它要造成的效果就是一种荒诞、疯狂,打破视觉和逻辑的边界,而连接成语音的汪洋,用语音去联想和塑造剧情。

我选择html+js的初心不就是为了“打破文字边界”,让玩家像编辑文档一样游玩吗?否则为什么不能用unity、godot、renpy乃至rpgmaker的地图小人去做?

好,到这里,抠字眼玩法终于暂时争取到了它存在的正义。

这点稍后再谈。

写这篇文章其实也很困难,因为所有问题都不是按顺序出现的,而是拔起萝卜带出泥,按下葫芦浮上瓢,千头万绪,一塌糊涂。当然游戏设计就是这样。我不是一下子就把机制缩减到两个。我在一个到三个当中犹豫不决。每种选择各有各的恶心。最后我选择开始编程。

编程是整个制作过程中最愉快的一段时光。

我给游戏系统定下的目标是:无论如何,一定要便于文案配置和更新,因为我他妈的就是文案!

这个目标实现得非常好。截至目前,我可以说,虽然这游戏无论是制作还是游玩体验都相当的恶心,但更新剧情内容是非常轻松愉快的。只要网络连接好,一分钟可以推十个版本,瞬间就部署,刷新网页就能玩到。所有剧本都写在同张表里。这个表不是json,不是xls,而是优美的纯文本csv,用代码编辑器就能打开,添加一行毫不费事。正式的编辑工具则是open office calc,一个类似excel的软件。它的优点是,只要保存工作表修改,浏览器里就实时刷新内容。

当然,只用一张csv表要付出对应的代价,那就是每一行的嵌套深度不够。例如,我这张表里每一行是一句台词,但一句话有十个谐音词,这十个词要怎么配置?

要讨论这个问题,先要回到机制上来。在精简到两个主要机制之前,这游戏曾经是这样的:你路过实验室,可以拿走食盐,也可以拿走岩石。这些道具都会放在传统意义上的背包里,等待使用时机到来。

这么设计是合理的,但不太可能在一个月里做完。而且就解谜本身的节奏来说,让一个道具烂在包底,到最后掏出来大杀四方,这有趣吗?或许有点。但为了这层体验,我要解决很多附带的问题,例如背包有多大,背包的交互怎么做,路过实验室你能抠走一个还是十个食盐,拿走了食盐还能不能拿岩石,拿走了食盐能不能拿誓言,怎么让玩家想起要用这个道具。等等。

相比之下,我当时做出的决定是:不要背包。

这是一个重大的决定,因为它同时决定游戏整体节奏:每一关的道具只能当场使用。

于是框架变得相当明晰。玩家会面临一幕接一幕的快速冲击,力求随机应变;而不是在rpg的村民家里翻宝箱,慢慢囤积能用到的词汇。

到这一步,剧情才开始往前推动。最早的版本里,主角要逃出一个地下实验室,简称文字狱。说出这三个字,已是索然无味。不过并不是文字狱这个垃圾隐喻造成的。而是rpg思维定势带来的“脱逃”背景设定造成了很多不必要的逻辑困难。

重新思考这盘饺子的做法,我得到以下几个结论:

主角拥有一定程度上通过语言操作现实的能力,是个危险人物。为了限制他,要么剥夺他的环境,要么剥夺他的感觉。

关进监狱是剥夺环境,但这并无必要。而且剥夺了环境还玩什么,总之很奇怪。

主角的现实应该主要由听觉构成,因为谐音是一种语音。

这样就简单多了。最后目标确定为设计一个紧急情况让主角又哑又瞎行动受限。

我知道这样艰苦地编剧会令人莞尔。但没办法。这是一盘饺子。

我在《虚伪的作品》里读到余华反复探索他小说世界时间结构时产生的喜悦。我很羡慕那种纯文本带来的自由。

但做游戏某种程度上就是戴着镣铐。叙事是被多方面的表现限制的,诸要素之间必须协调。叙事是饺子的醋,或是醋的饺子。各有各的悲哀。因为游戏给玩家一定自由,那就是从作者手里夺去的一点自由。他便有所服侍,不再是时空暴君。

我想上文已经多少写出这种苦恼:必须先决定文本的风格、格式、效果。筛选下来可写的东西也多少有了定局。例如,这个故事必须发生在使用现代汉语的环境,否则没有意义。

多少决定了剧本的结构后,终于可以回头设计配置表了。最初,我想分成两张表,一张是剧本,一张给“规则”,也就是“选中什么词,变成什么词,如果当时还选中了另一个词,就跳转到某剧情”。

如果仔细思考规则表的用法,便会想到,制定全局规则是很困难的,一个词完全可以变成好几个同音词,或是在不同的情况下跳转到不同剧情。另外,如果分成两张表,写剧本时必须不断查阅和更新另一个文件的规则集,极度折磨。

不过,到这一步,这问题解决起来很简单:既然背包不存在,那每一幕剧情也就只有它自己的规则集了。

毕竟,设计保证了玩家不可能回到上一幕去选词。

所以最后的设计敲定为,每播放一句剧情,才往规则集里加入对应的规则。跳转时,规则集会全部清空。

规则也不再单独成表,而是写在每句台词的旁边。毕竟这个游戏的剧本一调整措辞,就要连带着修改规则,这已经十分麻烦。要是还得到另个文件里查找,根本无法忍受。

剩余的表结构设计,如基于label存储,都是题中应有之义,不费太多事。如此终于搭建好了可以安心写剧本的环境。

游戏做到这里,除去边缘系统如存档和进度收集,就只剩下剧本要写。写这剧本着实是个巨大灾难,只能用左支右绌来形容。写了一成,我才知道该发散多少支线,网状叙事的结构大体如何;写到三成,主角才成了从精神病院里逃走的病人;写到五成,我认清现实,照这样下去根本写不完,于是五成紧急变为九成。某角色原本预定的理想抱负紧急化为乌有。期间还遭遇重大的意义危机,等等。现在看这游戏的文本,实在不禁一哂。真是非常粗陋。但我到底也是第一次可能也是唯一一次写这个类型的剧本——写出定稿,才能知道接下来如何发展!回想来,也许先定下关键词大纲会更好。但这一次时间不容许尝试这见解。我也多半不会做下一次了,最多也就是完善本作,写完原该有的剧情。

我不得不把故事及其意义放到最后,且一笔带过,因为它在整个制作周期中地位也是如此。在上述种种限制下,或许故事“有就不错了”。但它是保持意志燃烧的最后的火种。假如不能坚信故事有意义,则千里溃于一篑。

让我能够苦中作乐的,或许还有语言本身。大约写到三成时,我开始预见到绝大部分谐音词都来不及使用的残酷前景。但如果能把那些词的变化写出来,将会是非常繁盛的,滑稽绝望,但含有奇异诗意。或者说,会有点像rap歌词。但意象之间的关联比rap歌词更远,更像婴儿牙牙学语,说话只为了说话本身好玩,为了说更多话,为了押韵无所不用其极,为什么不可以?毕竟——汉语!汉语已经是个太书面的语言了!这时,我逐渐看清主角的形象。根据设定,游戏的文本世界就是主角的主观世界。他是听着一个内心声音向他描述一切,这个声音不是空间的,而是时间的,能够跨越当下和记忆。如果采取这个标准,那现在的游戏文本描述还是太客观,太受制于现实逻辑,太贫瘠。当然,叙述也要在变幻多姿和“能看懂”之间平衡。但对于这一作,如果我进一步修改完善,肯定会偏向于前者。和早期设想的节奏不同,它不是一个简约锋利的文本,它必须更幼稚、挥霍、漫无目的,正如主角的处境,他被两个现实的歹徒劫持,但他在环境中悠游,不断拿出东西来吃。他本人也确实没有什么现实目标,甚至不怎么求生。求生倒是劫持他的人的迫切心愿。所以真正写了才知道,这个文本的风格应该是在快中取慢,急中赋闲。也是符合游戏机制目标的。这点由于时间限制,实际并未做好。但应当如此做。

复盘到这里,终于差不多全部讲清。说不定字数比剧本还多。我想说,《谐恶力量》作为游戏很粗糙,刚做完我差点急性抑郁,心想我怎么可以犯下这样的弥天大罪去浪费玩家的时间。还好,想到可以写复盘,我的心脏又跳动了。我花掉半夜,给它写这样的墓志铭:这游戏并不脱胎于什么妙手偶得的自然灵感,而是挣扎了一生,时刻困惑自己到底有什么意义,正如许多不是天才的人。但它终究也是活过来了,尽管抱有遗憾,也安心地死去了。

故,R.I.P.