来源:MetaCat
链上游戏设计媒介具有多种功能和限制,其中之一就是对集体决策的高度重视。通过原型系统探索这种功能,我们提出了 Sentences:一种链上协作世界构建工具,其结构围绕仅附加分支叙事的原始结构。它使用 MUD 构建,为集体叙事生成提供了一个轻量级环境。Sentences 的每个新游戏都会生成一个新世界,然后玩家通过逐步添加其传说来实现它。
动机
在自治世界空间中,新项目诞生的一项常见任务是集体“世界构建”,构建一个共同的传说系统,决定玩家对世界的体验。这种练习通常是非正式的、非结构化的,但也可以通过有序的提示和练习来支持,帮助世界构建者塑造他们世界的结构和连贯性。
这些练习本身就是一个世界。它们在叙述者之间构建了一个信息系统,这是一套让叙述得以蓬勃发展的规则。这套规则就是世界,它为新想法的诞生创造了一个悬而未决的现实空间。练习的选择也必然会影响所创造的叙述:一组问题将假设一个潜在答案的空间;一个方向的提示可能会阻碍另一个方向的探索。
因此, Sentences 是一个“世界构建的世界”;一个用于协作知识生成的原始沙盒。它必然是稀疏和受限的,旨在作为测试新想法的实验室。除了扩展叙事之外,没有其他聊天或贡献。在 Sentences 的世界中,世界是线性构建的,但可以从初始种子向多个方向分支。
机制
除非世界已经在进行中,否则加载 Sentences 客户端会为玩家提供生成新世界的选项。生成后,玩家会收到一个提示,提示玩家可以使用一个核心机制来开发故事,示例可能如下:
“这个社会最重要的是自然”
“这个文明完全依赖于水平”
“这个团体是靠金钱建立起来的”
一旦生成,世界就会活跃起来,作者有固定的时间(我们将其设置为 20 个区块,以规律的 tick 方式进行)来为故事提出新的补充内容。时间结束后,将进入第二阶段,参与者将投票选出他们最喜欢的提案。投票数统计完毕后,最喜欢的提案将加入到故事中,然后重新开始该过程。
如果在时间窗口内没有提出任何提案,世界就会消亡。这种消亡并不是绝对的:世界只是将其他已消亡的世界加入档案中。由于所有提案和投票都在链上,因此所有世界都包含可能方向的完整历史记录,作为“消亡”分支,代表一组可能的平行宇宙。
合约
叙述的状态由两个相互关联的系统管理:一个系统负责管理新叙述的生成,另一个系统负责处理时间、投票和叙述新内容的提议。
新故事的初始化,由从输入系统中编码的硬编码提示列表中,随机选择的句子组成 FirstEntrySystem.sol。这些提示是使用简单的替换语法脚本生成的。在未来的版本中,此脚本还可以在合约中复制,以提供更多样化的起点。
一旦故事初始化完成,这个初始提示就会被添加到链中,新的提案期就会开始。这个周期持续 n 个区块(每个区块大约一秒),并由变量定义 periodEndsBlock,该变量在每个新提案期开始时设置在活动故事上。
在提案期间,会建议新的叙述条目,参与者会投票决定他们选择的扩展。提案和投票均由 ProposalsSystem.sol 处理,它根据 periodEndsBlock 变量验证这些贡献的时间。提出的每个提案都指向一个“父级”(它所响应的提案),成功的提案会形成一个链接列表。
在提案期结束时,将计算每个提案的投票数。如果出现平局,则随机选择两个提案中的一个(在未来的版本中,将此视为会产生分支的情况将会很有趣)。如果没有提出任何提案,则故事结束。故事将被归档,玩家可以采取的下一步行动将是产生新的故事。
应用(Applications)
我们设想,Sentences 在 10-50 名参与者的会议中发挥最佳作用,这些参与者可能彼此认识,也可能不认识,但本着原型传说的精神聚集在一起。例如:在 Discord 上举办活动,目标是在一小时内生成五个新世界。
就其本身而言,Sentences 并不是特别令人兴奋,它只是一种工具,而不是一个引人入胜的世界。然而,作为一个模块化组件,Sentences 的叙事生成机制,可以很好地融入到更丰富的角色扮演游戏中,在游戏过程中编织游戏的结构。投票机制还可用于支持在玩家生成的提示中包含生成输出。
Sentences 当前版本的一个弱点是初始提示的特殊性。这很容易为不同的部署进行更改,但扩展游戏的提示生成机制,以更符合叙事部分的开放性将会很有趣。
备择方案
Sentences 的形式灵感来自基于文本的游戏、即兴创作、传说和 TTRPG。我们在制作这款游戏时参考的一些特定参考资料包括 Max Kreminski 的Epitaph(一款奇幻叙事生成游戏)和 Kate Compton 的 Tracery 替代语法工具。这些项目利用简单的随机性和模块化,来创建复杂的分支叙事,在我们的案例中,我们对这些原语在集体场景中使用的潜力很感兴趣。
虽然 Sentences 在构建世界时就考虑到了这一点,并且在这方面有些主观性(即:仅附加叙述),但人们也可以想象它被用于其他受限的协作写作场景(比如:Toggle the table of contents Twitch Plays Pokémon?)。
扩展和未来工作
Sentences 的一个明显扩展是,任何初始化世界的人都可以设置,关于如何将新句子附加到叙事中的具体规则。例如,这些规则可以修改投票系统,要求一定数量的玩家才能继续叙事,或者修改投票时间以减缓或加快叙事的发展。这样一来,Sentences 不仅成为世界的原型设计工具,还成为产生特定故事风格的约束和对话结构的原型设计工具。
另一个同样有趣的开发方向是从当前世界的“死”分支中生成平行世界的选项。作为一种机制,最好的实现方式可能是生成一个带有指向旧分支指针的新“新世界”合约,而不是从头开始生成一个新世界。