这个星期五,我很高兴在AAAI的“游戏知识提取”研讨会上发言,该研讨会的重点是从游戏中收集信息并将这些信息投入使用:例如,在平台游戏中研究关卡设计,以便找到有关平台游戏设计的标准规则,或者提出创作者可能没有考虑过的替代级别设计。
我受邀从设计师的角度谈论这个话题,特别是研究如何将这些技术有价值地应用于叙事游戏。 正如我概述的那样,问题如下:
渴望提供大量叙事性的游戏通常面临以下挑战:它们需要大量独特的,手工创作的内容单元(无论是角色引擎的对话线,基于质量的叙事系统中的故事,还是选择ChoiceScript游戏中的“节点”),每个单独的单元都可能影响基础世界状态并受其影响。
这意味着作者(或多个作者)需要一种方法来理解他们所构建内容的复杂性。 我什么时候应该限制访问某个内容,这些限制应该是什么? 如果我们在这里的这个故事中放弃大量资源,将会产生什么影响? 它会使故事的其他部分变得更容易或更困难吗? 一个播放器一次可以看到我多少内容? 该内容的某些部分是否太难或太容易达到? 在某些情况下,玩家的选择会导致完全不同的结果(在这种情况下,玩家可能不会感觉到自己的行为有所作为)?
当我们谈论诸如MMORPG之类的持续叙事世界或诸如Fallen London之类的叙事世界时,所有这些都变得更加不堪重负。数十年来,数十位作者在其中创造了世界模型的内容和元素。 在某一时刻,人们倾向于只针对一个正在制作的情节使用独特的品质或统计数据-仅在此情境下跟踪进度,并对其进行沙箱处理,以免对世界其他地区造成损害。 但是在此过程中,您还放弃了本来可能存在的故事之间真正有趣的因果关系链的可能性……如果您仅具有彻底计划和调试它们的能力。
考虑到这些系统的复杂性,从最初的原理中推断出这种平衡很快变得不可行。 而且通常也很难使用单独的抽象设计工具来表示游戏中正在发生的事情。 发生了太多事情,您的表示可能与实际的实现不同步。
有时有可能再次消除这种复杂性。 字符引擎提供抽象,以便作者可以对某些类型的操作进行分类,以便它们的行为统一。 这提供了应对挑战的一部分。
在无法消除复杂性的地方,第二种方法是构建分析工具,自动测试和可视化方法,以了解系统如何处理成千上万的样本运行:过去,我在ChoiceScript和用于Versu项目(PDF),我们正在将自己的升级分析工具构建到Character Engine中。 借助此类工具,我们可以确定某些内容是访问频率太高还是太少,特定结果是否太难等等。
如果我们看一下过程内容生成空间中正在做什么,则潜在工具将进一步发展。
假设我们将任何叙事游戏视为程序性故事产生器。 在实践中,玩家正在做出选择,但是我们可以像在自动测试场景中那样,选择随机或概率机器人来进行选择。 然后,我们可以讨论生成器的表达范围,就像Gillian Smith对过程级生成器所做的那样。 这是一种询问“此生成器可以构建什么以及存在多少变化量的方法?”的方式。
如果我们知道要寻找哪种类型的表现力,那么表达范围只是一个有趣的概念,因此我们也需要度量。 对于叙述,我们可能会提出如下指标(但这绝不是要成为一个完整的列表,更多是作为初始起点):
- 独特结尾的数量(最基本和最琐碎的指标)。
- 独特结尾的分布。 这有点微妙:如果游戏有10个结局,但只有在特殊情况下才能达到9个结局,而且普通玩家会一遍又一遍地看到相同的结局,所以重播的吸引力比游戏中有10个结局要低每个结尾的播放次数约为10%。 (是的,我知道对于复活节彩蛋来说有些话要说,很难取得成就-但是如果您提供的大多数产品都属于该类别,那么普通玩家的叙事代理经验将大大降低。)
- 复合元素的并置。 假设玩家可以对六个NPC中的任何一个或都不浪漫,并且可以赢或输两个主要对抗中的每个对抗。 (对于RPG或“游戏选择”类型的游戏,这是一个非常合理的状态空间。) 所有这些结果集是否可能,或者其中某些结果相互依赖? 这些结果集中的每一个产生独特的叙述,还是其中一些以相同的方式叙述?
- 轻松与困难。 多少个最终结局可以被认为是积极的而不是消极的? 给定的通关成功的可能性有多大?
- 强度增加或赌注增加的点。 主角多久会遇到一次重大失败风险的情况? 这些故事在哪里发生? 我们是否会在难以通过的统计检查时对玩家最有吸引力,并导致戏剧性的升级?
- 冲销的频率和位置。 主角多久会遇到某种挫折? 之后会发生什么,恢复起来有多容易?
- 整个过程或整个过程的持续时间:叙事是否总是相同的长度? 叙事中的场景总是一样长吗?
那么,类似于过程性内容生成的东西给我们带来了什么呢? 这意味着我们可以在理论上应用一些与分析和更改过程内容生成器相同的技术,以更改其表达范围。

上周末,在马耳他全球游戏界,我荣幸地看到了Mike Cook的项目Danesh。 Danesh允许用户插入不同的过程内容生成器,指定哪些变量可以打开以进行更改,并探索如果更改了变量,该内容生成器的表达范围将如何更改。
因此,将其带回叙述性细节。 假设我们有一个ChoiceScript片段,以及一种将其反馈给Danesh的方法。 (我应该补充说,这是不平凡的。但是,让我们想象是这种情况。)我们可以标记一些变量,例如“与大维齐尔开始浪漫的门槛”和“逃脱洞穴的门槛”,然后探索可能的生成器的可用空间,直到我们发现趋向于提供最终游戏结果均匀分布的生成器,或者我们尝试优化的其他任何指标。 无需人工反复猜测。
类似类型的工具可能会识别出过时的统计信息-世界现状(目前)对游戏玩法没有重大影响,应该从设计中消除这些玩法,或者使用更多的手段。
从这里开始,我们可以想象在高级交互式叙述目标方面可以部分编程的系统。 作者说“故事的大约2/3点与主角的母亲应该有冲突”并不一定足够。但是,人们可以想象一个系统可以响应“是的,这个生成器”可以调整为产生该结果”或“否,使用该生成器的任何版本都无法达到该结果,并且您需要添加更多内容或世界状态以使其成为可能。”与我们今天要构建的大多数事物相比,不仅构建速度更快,而且它们的音质也得到了更好的调整-为玩家提供了高度响应的叙述,并为他们的行为带来了可察觉的后果。