80Days剧情总监:如何在开放世界游戏里讲连贯的故事?

【GameLook专稿,未经授权不得转载!】

GameLook报道/最近这些年,开放世界游戏里越来越受玩家欢迎。高自由度的玩法之下,开发者往往很难像之前的线性剧情那样讲故事,然而对于玩家来说,不连贯的剧情很容易让人觉得没有头绪。

那么,在开放世界里,开发者该怎么讲连贯的故事呢?此前的GDC大会上,《80 Days》开发商Inkle公司剧情总监Jon Ingold讲述了该公司的剧情设计秘诀。

以下是GameLook听译的全部内容:

Jon Ingold:

我是Jon Ingold,在Inkle担任剧情总监,我们之前最出名的游戏叫做《80 Days》,可能很多人都听说过这个名字。不过今天主要说的不是这个游戏,而是另一个叫做《Sorcery》的游戏,你们可能有人知道,也可能有人玩过,它是一款RPG游戏,某种意义上算是开放世界游戏。

这个系列改编自Steve Jackson在1980年代初期设计的纸制游戏,我小时候读过。原版是非常直接的书本游戏,有些段落需要选择,然后会跳到对应结果的段落。这个IP真正的游戏是在30年后才出现的,而且与原作略有不同。

《Sorcery》是一个款线性游戏,但也增加了很多的支线选择,随着故事的推进,你可以遇到很多有趣的事情,而且根据每个人的选择不同,获得的体验也是不一样的。

然而,玩家们体验之后,却并不怎么喜欢,他们觉得游戏体验太短了,我的理解是,他们认为自己过错的内容是没有用的内容。

所以在第二部分的时候,我们为更多人提供了更多的内容,但同时允许玩家从一开始直接通关到最后。由于地图设定是城市,所以我们增加了很多可以让玩家体验更多内容的循环,但这些都是手工制作的,带来的体验也很碎片化,最终并没有真正的解决任何问题。

到了《Sorcery 3》的时候,我们希望能够妥善解决这个问题。在这个版本中,游戏设定是在野外,玩家们可以在任何两个相邻的区域之间移动,也可以在相连的位置行动,甚至还能往回走。

当时就有人说这是一款开放世界游戏,不过我们实际上没有那么自信,因为其实游戏里的开放世界属性很轻。游戏实际上由多个分离的区域组成,而且每个区域里的角色都是有记忆的,他们记得那里曾经发生过什么事情,所以这是我们做过最为复杂的游戏。

35年来,我们终于将《Sorcery》从书本做成了开放世界游戏,但你们可能会发现,这些游戏实际上都放在了一个类别当中,这是因为它们实际上对于开放世界并没有太大的意义。因为在以前的游戏里,我们做了很多支线剧情,但它们并不是真正的开放世界,这也是我们不愿意将《Sorcery 3》称为开放世界游戏的原因,它实际上与传统的开放世界游戏规则格格不入。

如果你们不信,可以看看这张图的对比:

开放世界有着大而空旷的、能够无限次重新访问的地点,角色也是如此,开放世界里的角色会一直不停地自己说话,而开发者设计的角色只会在谈到相关剧情或者事件的时候才会说话。

1、用遭遇讲故事而非任务系统

最后两个区别非常重要,开放世界游戏里,你可以按照自己的喜好去发现事物,而且是需要反复推图的,但在预设的内容当中,重复是没有意义的。

因此在设计《Sorcery 3》的时候,我们的目标是,在一个开放世界里增加能够持续存在的支线剧情,让人们哪怕重复很多次也不会觉得突兀。当然,我相信不会有人重复很多次,所以这也是我说它某种意义上算开放世界的原因。

业内实际上有两种开放世界游戏,一种是带有目标和任务的沙盒式开放世界游戏,另一种则是《巫师3》、《上古卷轴:天际》这样可以随时让玩家退出的游戏,这也是我们今天主要说的。

所以这是我们的第一条规则,我们不做任务、只做遭遇式剧情。传统的游戏里,玩家们遇到某些人、到某些地方、得到某些物品,然后回来、得到奖励。在写这个内容的时候,组织方建议我用《Sorcery》举一些例子,因为这样更容易理解,可我读了上百万字的内容也没发现合适的。

然而在玩《巫师3》十几分钟之后,就发现了类似的内容。所以,这么说CDPR的作品可能有些不公平,这些剧情设计的非常好,只是我并不喜欢。

比如在《巫师3》当中有这么一个任务,你遇到了一个村民,他说“丛林里有匹狼”,结果到了丛林之后,你真的看到了一匹狼,然后击杀这匹狼用来完成任务,村民送给你一只鸡表示感谢。

这样的设计在传统游戏里很常见,但容易出现一些逻辑问题。

比如,为什么这个村民明知道丛林里有狼却什么都不做、而只是等在角落里装可怜等我去帮助?假如我进入游戏之后什么都不做、或者打3小时昆特牌,为什么他也并不在意?

作为玩家,我知道原因,从任务结构来说,它在等着我去接任务、完成任务、然后拿到奖励。然而从剧情角度来说,这是不能理解的,这样的设计意味着当需要的时候,村民才是一个角色,如果你什么都不做,那么他和一块石头没什么区别。

还有一个问题,如果没有遇到村民之前,我经过丛林却什么都看不到?

我在玩《刺客信条》的时候也遇到过同样的困惑,比如NPC会问你是否愿意接受这个任务,我选择了“不”,结果他的回答是等你准备好接任务的时候再来找我。

最后一个问题是,为什么这个游戏里世界里没有其他人任何人关心丛林里出现了一匹狼?由于任务结构的原因,这个事件是从村民开始的,所以必须在他这里结束,但这就意味着除了他之外,游戏里的任何都不能告诉我,丛林里有匹狼,他们是不被允许剧透的。

实际上,《Sorcery》第一款游戏就解决了这个问题,无论你从哪个方向走过来,都会发生遭遇,换到上面那个案例,无论你知不知道有狼,你都会在丛林里遇到它,而且无论你做什么,丛林里之后都不会有狼。

然而,这很明显不会带来任务型的剧情,所以我们是怎么做的?

我们做了两种遭遇方式,一种是村民的房子里,他告诉你丛林里有狼,另一个是直接走到了丛林遭遇了这匹狼,所以不论哪种遭遇,你都可以最终击杀这匹狼。

然而,除此之外,我们还可以做什么?比如,我可能在遇到村民之前就见过了狼,还可能已经把它击杀,然后把狼首交给村民。而在丛林遭遇场景中,我可以选择杀掉狼,也可以选择逃离现场。

当然,还有一个可能就是,我从村民口中知道了丛林里有狼,而且到了丛林,但直接跑开了,再回到村民家里,告诉他我没有杀掉这匹狼,没能帮到他。然后我到丛林里再次见到了这匹狼,回到村民家的时候他消失了,再回到丛林发现狼也不见了,只留下村民的遗骸。

作为剧情策划,我这时候就不再需要担心房子里有没有村民,故事就有了另一种结局的可能,比如我可以把村民的房子放到市场上卖掉。

不过,以上的剧情推测过程并不像任务设计那么好做,比如以下是剧情流程图:

简单来说,红色是内容,蓝色是触发条件。不过在Inkle我们并不用流程图,而是用代码:

这实际上是开源之前的Ink剧情工具代码,绿色部分是剧情的条件,如果逻辑是真实的则可以继续推进,如果不是,就会跳到不同的选项,所以我们会基于上下文来推动剧情进展。

我们内部将其称之为防御逻辑,我们打造每一个遭遇都是通过特别的方式,每一个场景都是需要处理的,不管你处于任何状态,我们还加入了玩家不了解场景信息的情况,甚至包括一些不可能的事情。

我们的方式就是设定前提条件,《Sorcery 4》里的每一句台词或者行为都是有先决条件的,最后我们还设计了应变计划,比如什么都没有发生的时候会发生什么?不过简单来说,应变计划应该呈现,但为了鼓励玩家推动剧情和特定的行为,这个退路式的选择最好是无趣的。

当然,这些对于《巫师》来说可能是不重要的。但在《Sorcery》当中,如果你要从A走到B,那么我们要知道中间过程的每一步有什么可能,而《巫师》可能就让玩家直接走过去。

2、用状态建模推动剧情发展

传统开放世界游戏里,玩家们对世界的认知以及剧情状态都是任务系统的产物,这就意味着,如果你想知道玩家是否了解某些东西,只需要看他们的任务完成度就可以。

但我们不能这么做,因为我们希望玩家在3周之后再来到村民房子的时候,还能根据自己的选择体验不一样的剧情。

所以我们的状态模型大概是这样的:

你们可能会说,这看起来很像是个任务系统,但其实并不是。这是我们给狼做的剧情模型,你已经知道狼的存在、杀掉它然后拿到首级;而村民作为人类,则有两种模型,你帮助村民解决了狼的问题,他会感谢你,但如果你没有解决,而且村民很没有耐心,那么他会自己离开,结果发现在丛林里被狼吃掉。

之所以说它们不是任务系统,主要是因为,这些模型都不是玩家的目标,这些东西都是幕后的条件,玩家在游戏里是永远都看不到的,而且玩家们也很可能不会遇到这些模型里的所有情况。

那么,我们怎么用这些状态?我认为值得注意的是,所有的状态都会暗示之前的状态。比如,我看到了狼,村民也告诉了我,而且他很没有耐心,那就意味着我知道这匹狼的存在,而且也见过了村民。

这种情况下,你在设计剧情的时候就有很大的自由度,就像是一池水那样,你可以直接提到最高的地方,有这些状态模型的支持,高水位下是有支撑的,你也可以随意选择高度,这并不会打乱剧情的逻辑。

在实际的剧情设计中,我们还会根据状态模型检查玩家状态,比如玩家是否知道狼的存在、是否见到了村民?还是说知道了狼的存在、但没有见到村民?

我们还做了状态改变,比如你已经知道了狼的存在,剧情就不会发生改变,继续推进,如果你发现村民被狼吃掉,那么就会直接跳过村民离开和之前的状态。

那么,这种状态下,你能知道发生了什么剧情吗?答案是:村民告诉了我丛林有狼,但我什么都没错。他变的很不耐烦,想要自己去杀掉那匹狼,我在丛林发现了他的遗骸,决定为他报仇,杀掉了这匹狼。

这种剧情进展,实际上在原来的任务系统里是不可能发生的。传统开放世界游戏里不会有这么沉浸式的剧情,这让我很兴奋,而且我觉得这个状态模型实际上很简单,实际上只有10个状态,就可以组合出大量的可能,不需要追踪很多信息。

如果你玩过《Sorcery 4》,就会发现游戏就像是能听懂你怎么想的,这些实际上都是状态模型的功劳。

3、状态模型的优势与代价

接下来说说我们这种方式的优势以及代价。

1)优势

需要声明的是,做这些东西并不是因为我们非常聪明,也不是一开始就在这么做,而是通过一个个的产品不断迭代打磨。我认为这种方式最明显也可能是最大的优点是,剧情可以有很多种方式开始,而据我所知,这在《巫师》系列里是不可能的,比如游戏里的任何人都可以告诉你,丛林里有狼。

其次,我们用状态树推动剧情进展,比如在《Sorcery 4》当中,有一个是Throben Doors的状态,它会按照不同阶段的状态推动剧情。不过,几乎所有的角色都可以给玩家带来相关的线索,而且他们往往会同时给出接下来的线索,他们会基于我对这个状态的认知,给我最新的消息,而不是重复说一些话。

你可能会说,这算不算作弊?这个角色怎么会知道我对某个状态的认知?很明显不是,实际上,在独特剧情的游戏里,这些是必要的,而且实际上,我们也并不知道玩家做了什么或者任何时候知道任何信息,只不过是不同状态推进逻辑带来的结果,我们不会把所有的信息放在一个地方,如果必须这么做,也会非常谨慎。

另一个优势就是我们说的“模拟主义玩法”。我们并不是沙盒游戏,但通过这样的设计,有时候它可以带给玩家沙盒游戏式的体验。

比如这是《Sorcery 3》当中的Sun Serpent,它被困在球体当中,而且在水中的能力很弱,你可以把它带到任何一条河、湖或者池塘里击败它,还可以把它扔到Water Serpent口中,让它被后者消灭。

这意味着我们可以加入战略玩法,所以在《Sorcery 3》和《Sorcery 4》当中,我们开始加入策略机制,这在冒险游戏里是很少见的,因为通常情况下,玩家无法预测前面会发生什么。

比如在,《Sorcery 3》当中,我们加入了时光信标,玩家们可以回到某个场景1000年前的版本,在不同的时空之间穿梭,可以让玩家们尝试很多比较酷的事情。

在《Sorcery 4》里,我们加入了伪装道具,有商人、僧人、守卫等等,它们分布在不同的地方,拿到这些道具之后,它可以改变角色与你的互动方式,游戏会处理这一切,我们不需要做任何的平衡,我们发现,玩家们开始用它们制定一些策略,甚至还不断优化。

接下来的一个优势就是,它可以带来“即兴”解决方案,就像之前提到的伪装道具。

在前面提到的时光标志案例中,有些玩家没有使用任何信标就解决了所有的Serpent,这在我们设计之初是没有想到的,所以我们不得不临时增加了新的结局,作为对这些玩家探索的奖励。

另一个案例是Y’bran,当时做这个角色只是为了引起玩家的好奇心,他实际上没有任何特殊能力,但有的玩家在《Sorcery 3》当中,在Y’bran离开之前就带着他通关了游戏,那么接下来会有什么故事?所以最后我们在《Sorcery 4》当中还专门为这种可能做了新内容。

2)代价

首先是不可预测性。你永远不知道玩家在游戏里做了什么,也不知道他们是否掌握了需要的信息。比如在《80 Days》当中,你是否知道自己为什么要周游世界?实际上,很多玩家可能在游戏结束之后,都不知道他们为何走遍世界。

不过,你仍然可以利用这些瓶颈,比如在《Sorcery 4》当中,我们做了更多的剧情点,到达某个地方有两扇门可以选择,你有三种方式可以到达,这些都可以给玩家更多的选择。

在游戏里,很多主线剧情的遭遇可能仍然会发生,但通常是以不同的原因导致,我觉得这是很有趣的。

另一个代价就是,很多内容可能会被错过。比如《80 Days》第一次通关的玩家,实际上只能看到30%的剧情,大多数玩家可能没有看到大部分内容。

不过,由于每个人的选择不同,所以游戏里的内容最终会被某些玩家看到,如果他们看到了其他人没有看到的内容,就会觉得自己的体验很独特,所以这也不算是代价。

最后一个代价就是Bug,因为这样的设计是无法避免的,你需要足够多元化的测试群体才能发现尽可能多的问题。比如在《Sorcery 3》有12名测试者,但发布的时候出现了15个比较严重的剧情bug,到了《Sorcery 4》的时候,我们把测试玩家数增加到50个,最后还是发现了3个比较致命的bug。

当然,由于状态模型比较灵活,所以这些bug实际上是很快可以解决的,而且由于玩家体验方式不同,这些bug影响的玩家数量非常有限,我们可以在随后的更新中快速解决。

如若转载,请注明出处:http://www.gamelook.com.cn/2022/01/467925

关注微信