为什么大部分游戏里都不用 AI 随机生成 NPC 的故事和对话,而是开发者自写故事和对话?

如果一个游戏里NPC所有的台词和对话可以随机生成出来〈不会像其他的游戏那样NPC的对话和台词单调 总是重复几句话〉如果一个游戏玩家和对话NPC,NPC总是会随机生成出不同的话 那么这个游戏会更有趣
如果一个单机游戏可以让玩家每天都能触发AI随机生成的故事和任务,并且无穷无尽 重复性低,这可比其他游戏的支线任务好玩多了〈其他游戏里的支线任务也就那么几个几十个,如果能用AI随机生成无数个那么可玩性会比多人游戏更高〉
收藏者
0
被浏览
86

5 个回答

马农 LV

发表于 3 天前

因为目前的NLP技术还不能通过图灵测试。让计算机写的对白在连贯性、逻辑性与文学性上都比人类编剧策划的要差。因此目前主要是通过人类制作NPC性格库、文本库与剧情库,然后通过语法生成树或决策树的方式从剧情库中按照一定的逻辑组合出剧情,再根据剧情中的NPC的性格来从文本库中抽取适合的对白文本模板,填写模版中空缺的信息后展现给玩家。例如《动物森友会》中采用的就是这种故事和对话的生成方式。
另外也不是所有的游戏都是随机生成剧情、任务与对话就好。游戏还是应该体现设计师的价值观或设计动机,以给玩家最适合的体验为目的。一般来说我们认为AI辅助游戏设计或游戏生成是有效的,但是游戏的核心体验还是应该由人类设计师与制作人来把握。比如《仙剑》这类叙事游戏,叙事、角色与剧情的核心应该让人类设计师把控,而迷宫地图可以由机器来生成。因为迷宫地图不触及《仙剑》这类游戏的核心表达,仙剑1里的迷宫地图换一个电脑生成的也不会影响玩家的体验。而《文明》这类策略游戏,可以通过AI来生成故事或对白,因为《文明》的设计核心在于游戏机制与策略玩法,因此让AI随机生成一些文明之间的冲突故事可以在增加游戏的戏剧效果与趣味性方面起点缀作用。
关于剧情任务的随机生成器,我曾经翻译过一篇论文,你能够通过这篇论文明显地感觉到人类设计师设计的任务(第4节)与自动生成的任务之间(第5节)的区别与差距。感兴趣的话可以看一下:
本文翻译自第二届国际游戏程序性内容生成研讨会论文集的文章:A prototype quest generator based on a structural analysis of quests from four MMORPGs,作者是北德州大学的 Jonathon Doran 和 Ian Parberry。
摘要

这篇文章对于四个流行的RPG游戏(Eve Online, World of Warcraft, Everquest, and Vanguard: Saga of Heroes)的750项游戏任务进行分析后,研究者发现 RPG 类型的网游的任务具有结构上的共性。他们提出了基于这种结构的RPG任务分类,并制作了一款任务生成器,辅助策划们生成复杂、多层次、看起来合理的复杂任务。
1. 介绍

“任务”是角色扮演游戏中常见的游戏内容,系统会要求玩家完成一系列目标以换取奖励。从游戏制作者的角度来看,任务提供了许多具有挑战性的游戏元素,并为玩家提供了具体的游戏目标。从玩家的角度来看,任务是一种叙事元素,它让玩家了解世界,让游戏角色获得知识和力量。完成任务过程中人物的对话和动作也可以用来刻画戏剧性的事件。作者寻求叙事与玩家寻求娱乐的目标并不冲突。
日常任务系统可以增加游戏的可变性与可玩性。理想状态下,我们期待玩家总是能遇到未经历过的新任务,以增加玩家对游戏的粘性。然而,在对《Eve Online》《魔兽世界》《无尽的任务》《Vanguard: Saga of Heroes》的750多个人类创作的任务的分析表明,这些任务的结构多样性远低于人们的预期。能够利用这种常见的结构用程序生成适合RPG使用的随机任务以取代人类设计师设计的固定的任务库,这样可以进一步增加游戏的可变性与可玩性。
本文的主体部分分为五个小节。在第2节中,笔者介绍相关工作。在第3节中,笔者描述了我们对以上四款 MMORPG 游戏的结构分析结果。在第4节中,笔者给出了对《无尽的任务》中一项任务的结构分析实例。在第5节中,笔者介绍了我们是如何基于结构分析制作了一款自动随机任务生成器。在第6节中,笔者分析了使用该任务生成器生成的任务。
2. 相关工作

之前关于 RPG 任务分析的研究主要分为两类:任务的结构性研究与任务的功能性研究。结构性研究是研究任务的时序顺序与逻辑合理、有解,功能性研究是研究任务在当前游戏状态是有意义的不会导致出戏。
Ashmore和Nitsche提出了使用“钥匙-锁”结构生成任务的算法,在结构上可以成功生成任务,但是这种方法生成的任务缺乏NPC互动,对于叙事与加强玩家对于游戏世界的理解毫无帮助。
Jill Walker 将魔兽世界任务分为探索任务和战斗任务,这是对任务进行功能性分类的早期尝试。
Dicky 提供了一种任务类型的分类方式,但是不能证明这种分类能够覆盖所有的 RPG 任务。
Aarsath 宽泛地讨论了任务的功能性分类,并着重分析了一款第一人称射击游戏中的任务。
任务生成问题是计划问题的一种特殊情况,一些研究者认为一条任务由初始状态、目标状态和玩家为了达到目标而必须执行的一组动作组成。一般来说,计划问题是NP-complete的问题,因为计划问题可以被转换为布尔可满足性问题,要通过暴力搜索来确定一条计划是否存在。
因此我们放弃一般的规划问题而选择有限制的问题来避免高复杂度的计算。我们对人类生成的任务的分析表明,RPG 游戏中的任务具有几种结构模式,每种模式都有一个隐含的前置条件和后置条件,只要不违反这些条件,生成器就可以自由地设计或引入新的子任务。
3. 结构分析

我们对四款游戏的任务进行结构性分析,四款游戏贡献的任务条目数量占比如下所示:

为什么大部分游戏里都不用 AI 随机生成 NPC 的故事和对话,而是开发者自写故事和对话?-1.jpg

每一个任务条目都包含NPC的对话,玩家需要执行的一系列动作,以及完成任务会获得的奖励。
通过分析这些任务,我们观察到任务分为9个不同的潜在动机:知识、爽点、声誉、宁静、保护、征服、财富、能力、装备。我们观察到不同的动机在游戏任务中的分布并不均匀,如下图所示:

为什么大部分游戏里都不用 AI 随机生成 NPC 的故事和对话,而是开发者自写故事和对话?-2.jpg

NPC向玩家传递任务时使用了2-7个特定于其动机的具体策略。每种策略可以用一个动名词组来描述,例如,“杀死害虫”、“窃取物资”或“营救NPC”。每个策略都需要执行一系列(1~6个)动作来完成,玩家必须依次执行这些动作来完成策略。每个动作可以是玩家可以实现的简单原子动作,也可以递归地表示为一系列其它动作或动作变体。我们将以语法树的形式表达任务结构,在语法中,终端符号是原子动作,而动作变体用尖括号"<>"扩起,意味着可以进一步拆解成原子动作。
以下是原子动作列表:

为什么大部分游戏里都不用 AI 随机生成 NPC 的故事和对话,而是开发者自写故事和对话?-3.jpg

以下是动作变体列表,它们由原子动作组合而成:

为什么大部分游戏里都不用 AI 随机生成 NPC 的故事和对话,而是开发者自写故事和对话?-4.jpg

以下是每种动机可以采用的具体策略,及每种策略需要完成的动作集合。

为什么大部分游戏里都不用 AI 随机生成 NPC 的故事和对话,而是开发者自写故事和对话?-5.jpg

于是,动作可以表示为一组树,树的叶子是玩家可以执行的原子动作,树的内部节点代表了一路上玩家必须完成的策略。要生成一个RPG任务,可以首先选择一种NPC动机:
<任务> ::= <知识>|<爽点>|<声誉>|<宁静>|<保护>|<征服>|<财富>|<能力>|<装备>
如果NPC的动机选中了爽点,那么爽点可以进一步进行分解:
<爽点> ::= <获得奢侈品>
<获得奢侈品> ::= <获得物品> <前往地点> 给予
4. 任务实例分析

为了演示人类设计的任务样本符合我们的分类方案,我们使用这些规则去分析《无尽的任务》中的一条任务“治疗 Lempeck Hargrin”。Lempeck Hargrin是游戏中一位生病的盟友,要治愈他需要一种药物。任务从 Qeynos 和 NPC0 开始,NPC0 要求玩家前往一个偏远的小镇,获得治疗 Lempeck Hargrin 的药物所需的成分。玩家需要从 Qeynos 旅行到 Rivervale,在那里与 NPC1 交谈,按照他的指示去看望受伤的 NPC2 ,并给 NPC2 绷带以换取蜂巢。玩家带着蜂巢回到 Rivervale 用蜂巢交换 NPC1 的蜂蜜,玩家带着蜂蜜到 Qeynos 见 NPC0,NPC0用蜂蜜制作药物。玩家将制作的药物带给 Lempeck Hargrin,Hargrin 被治好。

为什么大部分游戏里都不用 AI 随机生成 NPC 的故事和对话,而是开发者自写故事和对话?-6.jpg


为什么大部分游戏里都不用 AI 随机生成 NPC 的故事和对话,而是开发者自写故事和对话?-7.jpg

因为这个任务的主要动机是治愈 NPC ,所以这个任务是由保护推动的,该任务达到保护的策略是治疗或修复(1)。该策略的分解过程为:
<保护> ::= <治疗或修复(1)>
<治疗或修复(1)> ::= <获得物品> <前往地点> 使用
然后递归地将树填充到全部由原子动作组成。如上图所示。非终端符号框背景为白色,终端符号框背景为灰色。圆圈里的数字代表动作变体列表中的规则编号,六边形中的数字代表原子动作列表中的原子编号。菱形中的数字代表玩家执行动作的顺序,这是通过遍历任务树获得的。以下是任务树每个节点的详细说明:

  • <治疗或修复1>:接受 NPC0 的任务。
  • <获得物品>:你需要拿到制作药物的成分——蜂蜜。有人告诉你去河谷找蜂蜜。
  • <前往地点>:你知道河谷的位置,所以直接去那里。
  • <获得物品>:你需要获得蜂蜜,但被告知要先获得蜂巢。
  • <前往地点>:你想去蜂巢,但不知道在哪里,应用动作变体列表中的规则5。<前往地点>被分解为先<获得知识>,再前往相应地点。
  • <获得知识>:首先需要获得蜂巢位置的知识,你知道 NPC1 知道,应用变体列表中的规则9,<获得知识>被分解。
  • <获得物品>:NPC2 受伤,需要包扎。去药店买绷带。应用变体列表中的规则12。
  • 前往:你知道药店可以买到绷带,所以直接前往药店。这是原子动作表中的动作11。
  • 收集:收集一条绷带,可以是购买获得,也可以从地上捡起来一条绷带。这是原子动作表中的动作9。
  • 你的子任务是去找 NPC2 ,应用变体列表中的规则1。
  • 你前往 NPC2 的住处,这是原子动作表中的动作11。
  • 把绷带给予 NPC2,这是原子动作表中的动作10。
  • 听 NPC2 说从 Bixies 那里可以获得蜂巢。这是原子动作表中的动作13。
  • 前往 Bixies 所在的地方,这是原子动作表中的动作11。
  • 获得蜂巢,应用变体列表中的规则11。
  • <窃取活动>:你需要从Bixies那里窃取蜂巢。应用变体列表中的规则15。
  • <前往地点> ::= ε ,你已经在那里了。
  • 杀死Bixies,这是原子动作表中的行动12。
  • 取走蜂巢,这是原子动作表中的行动19。
  • 无子任务
  • 前往 NPC1 的住处。
  • 交换:NPC1 用蜂蜜交换主角的蜂巢。
  • 无子任务。
  • 前往 Qeynos,这是原子动作表中的行动11。
  • 交换:NPC0 用药物交换蜂蜜。
  • 前往 Lempeck Hargrin 所在的地方,这是原子动作表中的行动11。
  • 使用 药物, Lempeck Hargrin 被治愈了,这是原子动作表中的行动20。
  • 任务生成器
作者使用他们提出的生成树结构创建了一个能够随机生成任务的任务生成器。它首先随机生成一个NPC动机,根据动机,生成器会根据策略将动机分解为变体动作或原子动作,变体动作进一步分解,直至所有动作皆分解为原子动作。通过用子任务重复替换节点,可以创建任意深度和复杂度的树。
随着任务树的扩展,任务的具体细节会被随机分配,导致具有相同结构的任务之间也会存在差异。当一个人改变正在给予的物品,物品的来源和物品的目的地时,一个简单的给予动作也会给人不同的感受。游戏通常会以不同的细节重复使用这种相同的结构,从而产生大量相似但不同的任务。这种替换技术在实际游戏中的流行表明,仅仅改变细节就可以完成更多的任务生成。
这个生成器输出简单的叙事。叙事包括简单的NPC样板对话,以及描述玩家完成任务时的动作的叙述,如下图所示:

为什么大部分游戏里都不用 AI 随机生成 NPC 的故事和对话,而是开发者自写故事和对话?-8.jpg


5. 生成的任务示例


笔者展示了他们的任务生成器所生成的一条任务:
例子从一个叫史蒂夫的NPC开始,他被“知识”需求所激励。史蒂夫为了“知识”动机选择的策略是<间谍活动>,生成的结果如下所示:


为什么大部分游戏里都不用 AI 随机生成 NPC 的故事和对话,而是开发者自写故事和对话?-9.jpg


  • <间谍活动>:接受史蒂夫的任务。史蒂夫要玩家去侦查一个地精。
  • <间谍活动> ::= <前往地点> 侦查 <前往地点> 报告
  • <前往地点> ::= <获得知识> 前往(你不知道地精在哪)
  • <获得知识> ::= <前往地点> <获得物品> 读(你需要找出地精在哪里,你知道托马斯有一封信会告诉你)
  • <前往地点> ::= <获得知识> 前往(你必须去找托马斯,但你不知道托马斯在哪里)
  • <获得知识> ::= <前往地点> <子任务> 听(你需要找出托马斯在哪里,你知道,丹罗斯知道)
  • <前往地点> ::= <获得知识> 前往(你必须去找丹罗斯,但你不知道丹罗斯在哪里)
  • <获得知识> ::= <前往地点> <子任务> 听(你需要找出丹罗斯在哪里,你知道,安吉知道)
  • <前往地点> ::= <获得知识> 前往(你必须去找安吉,但你不知道安吉在哪里)
  • <获得知识> ::= <前往地点> <子任务> 听(你需要找出安吉在哪里,你知道,阿顿知道)
  • 前往阿顿所在的位置:你知道阿顿在哪里。
  • 阿顿没有给你子任务。
  • 听:阿顿告诉你安吉的位置。
  • 前往安吉所在的位置。
  • 安吉没有给你子任务。
  • 听:安吉告诉你丹罗斯的位置。
  • 前往丹罗斯所在的位置。
  • 丹罗斯没有给你子任务。
  • 听:丹罗斯告诉你托马斯的位置。
  • 前往托马斯所在的位置。
  • 获得物品:信。你想获得托马斯的信,托马斯说他会卖给你。
  • (你不需要去任何地方、得到任何东西,或执行子任务,只需要花钱,就能买到信)
  • 交换:你用钱交换来托马斯的信。
  • 读:你阅读这封信,了解到地精的位置。
  • 前往地精所在的位置。
  • 侦查地精。
  • 前往史蒂夫所在的位置。
  • 报告从地精处侦查到的信息。
6. 结论和进一步工作

基于对四个MMORPG的750个任务的研究,作者发现任务有一种明确的结构,他们整理出这种结构后,制作了一个任务生成器。但是,在证明这个生成器生成的任务能够与手工制作的任务质量相媲美之前,还有需要进一步的工作。

大模型是啥 LV

发表于 3 天前

不研究AI的人,可能觉得明天就要智械危机了,而真正做AI的工作人员,其实为了让AI这个蠢比分辨男女,脑袋上的头发都要掉光了。。。

那年那月 LV

发表于 3 天前

我用AI来试试吧,先手动写个开头:
杰洛特面对包围着他的愤怒的村民,并不在意,因为他知道自己有很多办法可以脱身。这时,人群中一个手拿粪叉的小男孩吸引了他的注意......
以下内容为AI续写:
他走过去问道:"你们在干什么?"
"杰洛特先生,你快点离开吧,这些人要打死你!"一个村民说道。
杰洛特一愣:"打死?为什么要打死我?"
村民说道:"他们都说了,要杀死你!"
"他们疯了吗?"
"是啊,他们疯了,疯子,疯子!"小男孩叫嚣道。
杰洛特心里有些不爽,他说道:"好吧,我走就是了,希望你们别忘记我的存在。"说完,他便转身朝着村外走去,村民在他的背后大声喊道:"杰洛特先生,你一定要小心。"
杰洛特回过头来微笑着点头道:"嗯,谢谢你们关心。"
说完,便继续朝着前方走去,而这些村民也继续朝着前方跑去,村内的村民都已经聚集起来,他们正准备追赶上杰洛特,将其抓捕。
村内的一个村妇正拿着手中的粪叉准备朝着杰洛特扔去,只听到"嗖~"的一声,那根粪叉飞出去,落入了杰洛特的脚边,村妇见此,吓得立刻丢掉了手中的粪叉,撒腿就逃跑,她跑得很慢,而且很慌张,杰洛特看着眼前的情况,微微一愣,不过很快,他便反应过来。
村妇跑了几步之后,停止了奔跑,回头看向杰洛特的方向,见杰洛特还站在原地,她顿时放松下来,不过还是提高了警惕,她心虚的看了杰洛特一眼,而后快速逃离。
杰洛特没有追击,而是弯腰捡起地上的粪叉,他用这把粪叉捅进了地上的泥土中,随后他便快速消失在原地。
杰洛特刚刚消失,一群手持长矛的农民便冲进了村子中,这群农民一路追踪着杰洛特的踪迹而来,他们找到了一条小溪边,看到了坐在地上休息的杰洛特,他们大喝一声:"站住!"
杰洛特听到后面传来的呼喝声,他回头看了看,发现是这一群农民,于是他快速从地上爬起来,准备朝远处跑去,可是就在这个时候,那些农民手中拿着长矛朝着他刺了过来,一时间,鲜血四溅,但是杰洛特并没有倒下。
他快速跑到一座山坡下,躲避着那些农民刺过来的粪叉,他的双腿在颤抖,他的身体也在哆嗦,他没有想到这些人竟然会这么的凶残,不仅不怜悯他,竟然还会朝他开枪射击。 一时间,鲜红的血液染红了他的裤管,他也没有心思去顾及裤子被血液弄脏了。
就在这个时候,那些农民已经到达了杰洛特的面前,一人手中举着一根长矛,另一个手握长刀朝着杰洛特劈砍过来。
"铛!" 长刀劈砍在了杰洛特手中的粪叉上,溅起一片火花。而这把长刀也被震退了几米。
杰洛特心中暗骂了一句,他连忙挥舞着手中的粪叉向前猛烈攻击,一下又一下,不断地与农民战斗着,但是他的体力却在迅速流逝。
杰洛特看了看自己的手臂,他发现自己的左手臂上已经被划出了一道口子,他咬着牙,使劲全身力气挥动着手中的粪叉,他想要将这些农民击退。
突然,杰洛特感觉自己手上的力度似乎减弱了,他抬头看了看,发现自己的双腿已经没有了知觉。 "怎么会这样?"他惊讶的看着眼前的这些农民,他的目光中充满了恐惧,这个时候他知道自己完蛋了。 "啊~"
(未完待续)
竟然还挺通顺,而且看样子连AI也知道杰洛特死于粪叉

为什么大部分游戏里都不用 AI 随机生成 NPC 的故事和对话,而是开发者自写故事和对话?-1.jpg

hijacker LV

发表于 3 天前

有人让AI学习了1000小时蝙蝠侠,然后写一个蝙蝠侠的故事。
AI写出来画风是这样的:

一场爆炸,爆炸了。
小丑,是个小丑,但他是个疯子。
双面人,是个人,但他是个律师。
蝙蝠侠说:双面人和单面人来袭击了,它们恨我只是因为我是只蝙蝠。
于是他将管家扔向了双面人,双面人接住管家,将他向硬币一样高高抛起,管家掉到了地上,人头朝上,这意味着双面人要回家了。

“只剩你和我了”蝙蝠侠对小丑说。
蝙蝠侠对小丑,永远的宿敌。
“这个社会很糟糕,我是个疯子,你喝水,我喝”无政府主义“小丑说。
”不,我喝蝙蝠,就想蝙蝠会做的那样。“

蝙蝠侠在寻找他的父母,但他们依然是死着的,这让他很愤怒。
于是他发射了蝙蝠火箭,小丑用他那丧心病狂的幽默感让火箭射歪了。
”我从来都没遵守过任何规则,这就是我的规则。“小丑说。
此时小丑手中拿着一个礼物,他说:”蝙蝠日快乐,生日侠。“
他将礼物抛给蝙蝠侠,蝙蝠侠打开礼物。
因为他是个好人,里面有一张兑换新父母的优惠卷。
然而它已经过期了……

这正是一个小丑式的笑话。

我觉得ai作为喜剧角色一定很有趣。
——————
看了评论补充一个:蝙蝠侠有时候是蝙蝠侠,有时候是布鲁斯韦恩,但他始终是个孤儿。
这个也挺精髓。

冰湖小生 LV

发表于 3 天前

如果你真正用过ai文本生成工具,你就会明白:
AI不会写作,它只是把文字排成看上去像文章的样子。
AI的工作原理,决定了它只是模仿人类说话,而不真正懂得自己在说什么。你可以看到AI生成的文章中,某个名字一会是男人,一会是女人,上一刻还在和恋人谈情说爱,下一刻又为单身烦恼。说到底,AI根本无法理解人的概念,更不用说维持一个具有一致性的人设。用AI生成台词和对话,很可能出现NPC说出和身份完全不符的内容。如果不是开发恐怖游戏,我建议不要这样搞。

您需要登录后才可以回帖 登录 | 立即注册