<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>alpacanist</title>
    <link>https://matterofti.me/alpacanist/</link>
    <description></description>
    <pubDate>Sun, 03 May 2026 15:47:55 +0000</pubDate>
    <item>
      <title>谐恶力量 postmortem</title>
      <link>https://matterofti.me/alpacanist/xie-e-li-liang-postmortem</link>
      <description>&lt;![CDATA[《谐恶力量》是为一碟醋包出来的饺子。&#xA;&#xA;以饺子的标准来说，《谐恶力量》不是什么好饺。&#xA;&#xA;但我还是要讲一讲从砍树开始造擀面杖的过程，也就是饺子的一生。&#xA;&#xA;游戏起源于几年前想出的一个机制，这个机制（汉语谐音梗本体论）本身没有什么价值，或者我的能力还不足以发掘它的价值，总之它唯一的作用就是如鲠在喉。如果不横下心来把它送进一个成品的坟墓，它将永远影响我的生活。&#xA;&#xA;长痛不如短痛。当时我看到p1论坛举行的极短24将在半个月后截止。我想，啊，就是它了。&#xA;&#xA;为什么呢，因为这一届比赛的主题之一是“错误解读”。而谐音机制的本质就是曲解。&#xA;&#xA;就是它了，就是这碟醋了。&#xA;&#xA;提上日程，也就是真正全心全意考虑这个游戏该怎么做之后，几个严峻的问题才开始像水葫芦一样浮上水面，祸害无穷。第一个问题，便是要确定一个具体可行的玩法。&#xA;&#xA;至少三年前我就做过一个基于 selection 的 js demo。我非常中意 js 能够对文档树操作自如。那时候的《谐恶力量》有好几个机制，玩家可以从界面任意采撷文字放进背包，按下某些键使用，等等。但在解谜游戏中，每出现一个新的机制，都得做一个完整的引入关卡，还要考虑它和原先机制的结合。复杂度将指数上升。&#xA;&#xA;因此这一次我准备把玩法限定到两个：选择词语后立刻跳转，以及，合成两个词语后跳转。&#xA;&#xA;这就立刻带来了一系列新的问题。可以想见的是，游戏的重心会偏移，从解谜偏移到交互碎片叙事。这不是最让人头痛的。&#xA;&#xA;试写了一些剧情以后我发现，其实汉语的同音词非常的少，大部分还没法用。因为汉语谐音梗的原理根本不是以词语为单位。下载的一些输入法词库文件也验证了这个猜想。所以要写出剧本，势必走向一个恶心的方向：模糊词语的边界。&#xA;&#xA;为什么说恶心呢，首先是从美学的角度，我非常不能接受这样抠字眼。但没办法，只能说选择了硬着头皮做完这个机制、还只来得及做这么两个玩法，就等于选择了一个卑贱的出身。其次从玩家的角度来看，体验肯定会很崩溃，缺乏意义，缺乏巧妙带来的满足，只有在字缝里一寸寸踅摸筋疲力尽的感受。&#xA;&#xA;但在崩溃中，我逐渐产生了一些别的体会。汉语虽然没有空格，阅读时我们还是会习惯分词。也就是说如果游戏的机制是抠字眼，它要造成的效果就是一种荒诞、疯狂，打破视觉和逻辑的边界，而连接成语音的汪洋，用语音去联想和塑造剧情。&#xA;&#xA;我选择html+js的初心不就是为了“打破文字边界”，让玩家像编辑文档一样游玩吗？否则为什么不能用unity、godot、renpy乃至rpgmaker的地图小人去做？&#xA;&#xA;好，到这里，抠字眼玩法终于暂时争取到了它存在的正义。&#xA;&#xA;这点稍后再谈。&#xA;&#xA;写这篇文章其实也很困难，因为所有问题都不是按顺序出现的，而是拔起萝卜带出泥，按下葫芦浮上瓢，千头万绪，一塌糊涂。当然游戏设计就是这样。我不是一下子就把机制缩减到两个。我在一个到三个当中犹豫不决。每种选择各有各的恶心。最后我选择开始编程。&#xA;&#xA;编程是整个制作过程中最愉快的一段时光。&#xA;&#xA;我给游戏系统定下的目标是：无论如何，一定要便于文案配置和更新，因为我他妈的就是文案！&#xA;&#xA;这个目标实现得非常好。截至目前，我可以说，虽然这游戏无论是制作还是游玩体验都相当的恶心，但更新剧情内容是非常轻松愉快的。只要网络连接好，一分钟可以推十个版本，瞬间就部署，刷新网页就能玩到。所有剧本都写在同张表里。这个表不是json，不是xls，而是优美的纯文本csv，用代码编辑器就能打开，添加一行毫不费事。正式的编辑工具则是open office calc，一个类似excel的软件。它的优点是，只要保存工作表修改，浏览器里就实时刷新内容。&#xA;&#xA;当然，只用一张csv表要付出对应的代价，那就是每一行的嵌套深度不够。例如，我这张表里每一行是一句台词，但一句话有十个谐音词，这十个词要怎么配置？&#xA;&#xA;要讨论这个问题，先要回到机制上来。在精简到两个主要机制之前，这游戏曾经是这样的：你路过实验室，可以拿走食盐，也可以拿走岩石。这些道具都会放在传统意义上的背包里，等待使用时机到来。&#xA;&#xA;这么设计是合理的，但不太可能在一个月里做完。而且就解谜本身的节奏来说，让一个道具烂在包底，到最后掏出来大杀四方，这有趣吗？或许有点。但为了这层体验，我要解决很多附带的问题，例如背包有多大，背包的交互怎么做，路过实验室你能抠走一个还是十个食盐，拿走了食盐还能不能拿岩石，拿走了食盐能不能拿誓言，怎么让玩家想起要用这个道具。等等。&#xA;&#xA;相比之下，我当时做出的决定是：不要背包。&#xA;&#xA;这是一个重大的决定，因为它同时决定游戏整体节奏：每一关的道具只能当场使用。&#xA;&#xA;于是框架变得相当明晰。玩家会面临一幕接一幕的快速冲击，力求随机应变；而不是在rpg的村民家里翻宝箱，慢慢囤积能用到的词汇。&#xA;&#xA;到这一步，剧情才开始往前推动。最早的版本里，主角要逃出一个地下实验室，简称文字狱。说出这三个字，已是索然无味。不过并不是文字狱这个垃圾隐喻造成的。而是rpg思维定势带来的“脱逃”背景设定造成了很多不必要的逻辑困难。&#xA;&#xA;重新思考这盘饺子的做法，我得到以下几个结论：&#xA;&#xA;主角拥有一定程度上通过语言操作现实的能力，是个危险人物。为了限制他，要么剥夺他的环境，要么剥夺他的感觉。&#xA;&#xA;关进监狱是剥夺环境，但这并无必要。而且剥夺了环境还玩什么，总之很奇怪。&#xA;&#xA;主角的现实应该主要由听觉构成，因为谐音是一种语音。&#xA;&#xA;这样就简单多了。最后目标确定为设计一个紧急情况让主角又哑又瞎行动受限。&#xA;&#xA;我知道这样艰苦地编剧会令人莞尔。但没办法。这是一盘饺子。&#xA;&#xA;我在《虚伪的作品》里读到余华反复探索他小说世界时间结构时产生的喜悦。我很羡慕那种纯文本带来的自由。&#xA;&#xA;但做游戏某种程度上就是戴着镣铐。叙事是被多方面的表现限制的，诸要素之间必须协调。叙事是饺子的醋，或是醋的饺子。各有各的悲哀。因为游戏给玩家一定自由，那就是从作者手里夺去的一点自由。他便有所服侍，不再是时空暴君。&#xA;&#xA;我想上文已经多少写出这种苦恼：必须先决定文本的风格、格式、效果。筛选下来可写的东西也多少有了定局。例如，这个故事必须发生在使用现代汉语的环境，否则没有意义。&#xA;&#xA;多少决定了剧本的结构后，终于可以回头设计配置表了。最初，我想分成两张表，一张是剧本，一张给“规则”，也就是“选中什么词，变成什么词，如果当时还选中了另一个词，就跳转到某剧情”。&#xA;&#xA;如果仔细思考规则表的用法，便会想到，制定全局规则是很困难的，一个词完全可以变成好几个同音词，或是在不同的情况下跳转到不同剧情。另外，如果分成两张表，写剧本时必须不断查阅和更新另一个文件的规则集，极度折磨。&#xA;&#xA;不过，到这一步，这问题解决起来很简单：既然背包不存在，那每一幕剧情也就只有它自己的规则集了。&#xA;&#xA;毕竟，设计保证了玩家不可能回到上一幕去选词。&#xA;&#xA;所以最后的设计敲定为，每播放一句剧情，才往规则集里加入对应的规则。跳转时，规则集会全部清空。&#xA;&#xA;规则也不再单独成表，而是写在每句台词的旁边。毕竟这个游戏的剧本一调整措辞，就要连带着修改规则，这已经十分麻烦。要是还得到另个文件里查找，根本无法忍受。&#xA;&#xA;剩余的表结构设计，如基于label存储，都是题中应有之义，不费太多事。如此终于搭建好了可以安心写剧本的环境。&#xA;&#xA;游戏做到这里，除去边缘系统如存档和进度收集，就只剩下剧本要写。写这剧本着实是个巨大灾难，只能用左支右绌来形容。写了一成，我才知道该发散多少支线，网状叙事的结构大体如何；写到三成，主角才成了从精神病院里逃走的病人；写到五成，我认清现实，照这样下去根本写不完，于是五成紧急变为九成。某角色原本预定的理想抱负紧急化为乌有。期间还遭遇重大的意义危机，等等。现在看这游戏的文本，实在不禁一哂。真是非常粗陋。但我到底也是第一次可能也是唯一一次写这个类型的剧本——写出定稿，才能知道接下来如何发展！回想来，也许先定下关键词大纲会更好。但这一次时间不容许尝试这见解。我也多半不会做下一次了，最多也就是完善本作，写完原该有的剧情。&#xA;&#xA;我不得不把故事及其意义放到最后，且一笔带过，因为它在整个制作周期中地位也是如此。在上述种种限制下，或许故事“有就不错了”。但它是保持意志燃烧的最后的火种。假如不能坚信故事有意义，则千里溃于一篑。&#xA;&#xA;让我能够苦中作乐的，或许还有语言本身。大约写到三成时，我开始预见到绝大部分谐音词都来不及使用的残酷前景。但如果能把那些词的变化写出来，将会是非常繁盛的，滑稽绝望，但含有奇异诗意。或者说，会有点像rap歌词。但意象之间的关联比rap歌词更远，更像婴儿牙牙学语，说话只为了说话本身好玩，为了说更多话，为了押韵无所不用其极，为什么不可以？毕竟——汉语！汉语已经是个太书面的语言了！这时，我逐渐看清主角的形象。根据设定，游戏的文本世界就是主角的主观世界。他是听着一个内心声音向他描述一切，这个声音不是空间的，而是时间的，能够跨越当下和记忆。如果采取这个标准，那现在的游戏文本描述还是太客观，太受制于现实逻辑，太贫瘠。当然，叙述也要在变幻多姿和“能看懂”之间平衡。但对于这一作，如果我进一步修改完善，肯定会偏向于前者。和早期设想的节奏不同，它不是一个简约锋利的文本，它必须更幼稚、挥霍、漫无目的，正如主角的处境，他被两个现实的歹徒劫持，但他在环境中悠游，不断拿出东西来吃。他本人也确实没有什么现实目标，甚至不怎么求生。求生倒是劫持他的人的迫切心愿。所以真正写了才知道，这个文本的风格应该是在快中取慢，急中赋闲。也是符合游戏机制目标的。这点由于时间限制，实际并未做好。但应当如此做。&#xA;&#xA;复盘到这里，终于差不多全部讲清。说不定字数比剧本还多。我想说，《谐恶力量》作为游戏很粗糙，刚做完我差点急性抑郁，心想我怎么可以犯下这样的弥天大罪去浪费玩家的时间。还好，想到可以写复盘，我的心脏又跳动了。我花掉半夜，给它写这样的墓志铭：这游戏并不脱胎于什么妙手偶得的自然灵感，而是挣扎了一生，时刻困惑自己到底有什么意义，正如许多不是天才的人。但它终究也是活过来了，尽管抱有遗憾，也安心地死去了。&#xA;&#xA;故，R.I.P.]]&gt;</description>
      <content:encoded><![CDATA[<p>《谐恶力量》是为一碟醋包出来的饺子。</p>

<p>以饺子的标准来说，《谐恶力量》不是什么好饺。</p>

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

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

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

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

<p>就是它了，就是这碟醋了。</p>

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

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

<p>因此这一次我准备把玩法限定到两个：选择词语后立刻跳转，以及，合成两个词语后跳转。</p>

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

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

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

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

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

<p>好，到这里，抠字眼玩法终于暂时争取到了它存在的正义。</p>

<p>这点稍后再谈。</p>

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

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

<p>我给游戏系统定下的目标是：无论如何，一定要便于文案配置和更新，因为我他妈的就是文案！</p>

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

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

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

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

<p>相比之下，我当时做出的决定是：不要背包。</p>

<p>这是一个重大的决定，因为它同时决定游戏整体节奏：每一关的道具只能当场使用。</p>

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

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

<p>重新思考这盘饺子的做法，我得到以下几个结论：</p>

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

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

<p>主角的现实应该主要由听觉构成，因为谐音是一种语音。</p>

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

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

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

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

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

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

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

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

<p>毕竟，设计保证了玩家不可能回到上一幕去选词。</p>

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

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

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

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

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

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

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

<p>故，R.I.P.</p>
]]></content:encoded>
      <guid>https://matterofti.me/alpacanist/xie-e-li-liang-postmortem</guid>
      <pubDate>Mon, 06 Nov 2023 07:53:59 +0000</pubDate>
    </item>
  </channel>
</rss>