【PC游戏】NLG自然语言生成技术:让游戏给自己做设计


3楼猫 发布时间:2022-06-04 12:49:35 作者:NAGO万能事务所 Language

无论是大型3A作品还是小型独立作品,开发游戏从来不是简单的事,故事、影像、音效甚至游玩内容,工作量之大不容小觑。然而如果将游戏一部分交由电脑AI随机制作自动生成,开发组既不需要多花工夫逐个细节制作,也能保持游戏的多变,这似乎是个不错的点子。


一些打着随机生成剧情噱头的游戏,比如《漫野奇谭》,会根据角色演出参数来从库里选取出相应的演员替换,《80天》超高自由度的背后是拥有75万字的海量文本量支持,甚至我们喜闻乐见的“魔怔历史”的P社游戏也绕不开国策树的束缚和国家设定。这些随机生成剧情游戏只是采用了程序化生成叙事,游戏本质上仍然是在程序设定好的框架下运行,并没有实现真正的自我设计,也没有实现初衷,即增大游戏自由度,减小工作量。

【PC游戏】NLG自然语言生成技术:让游戏给自己做设计-第0张

《漫野奇谭》根据参数从预置文本中选出角色对话

【PC游戏】NLG自然语言生成技术:让游戏给自己做设计-第1张

《80天》文本量极大,有75万之多

AI创作的出现则很有可能打破游戏开发过程中的“困境”。AI创作是指通过一定的计算机程序,对输入的信息进行自动化的分析、处理和加工,从而生成一篇较为完整的文章。其背后的原理非常复杂,核心是自然语言处理技术,同时涉及到数据挖掘、机器学习、知识图谱等多项人工智能技术。

 

目前的AI写作分为三种模式——模板式,抽取式,生成式NLG(自然语言生成技术)。前两者一个只是简单地套用模板,概括新闻摘要生成,对于游戏随机生成剧情并无过多参考意义,而新兴的NLG技术才可能是破局的要素。

 

而本文所探讨的,就是如何利用NLG技术来进行游戏自动化


NLG(自然语言生成)

【PC游戏】NLG自然语言生成技术:让游戏给自己做设计-第2张

自然语言生成可以分为三类:文本到文本生成、数据到文本生成和图像到文本生成。



  • 文本到文本生成

文本到文本生成技术主要是指以文本作为输入,进行变换处理后,生成新的文本作为输出。此技术包括机器翻译、文本摘要、文本更正和文本复述等。这对于游戏自动化并没有过多帮助,笔者就不加以赘述了。


  • 数据到文本生成

数据到文本生成技术分为基于规则和模板方法基于神经网络序列生成方法


前者本质只是系统事先设计并构造相应的规则或模板,其中都包括一些不变的常量和可变的变量,用户输入信息之后,文本生成器将输入的信息作为字符串嵌入到模板中替代变量。


后者,即基于神经语言模型的方法不需要太多人工干预,易产生丰富流畅的文字描述,不过受限于语料和模型,使用者无法直接控制内容生成,难以确保所输出的文本内容同输入数据中的信息吻合,需要优化来提高实用性。可通过知识图谱嵌入来辅助自然语言生成,使得生成的文章新颖多样且主题一致。



  • 图像到文本生成

图像到文本生成是指根据输入的图像信息生成描述图像的自然语言文本主要可分为三类:基于模板的图像描述检索式图像描述以及生成式图像描述


前两者虽然能保证文本的正确性与流畅性,但生成效果欠缺新颖性且在描述复杂场景或包含新颖事物的图片中存在局限性。


从视觉空间或多模态空间中生成图像描述的做法是,在分析图像内容的基础上,使用语言模型来生成图像的描述。因为此方法利用了深度学习技术,所以可以适应为多种的图像生成新的描述的任务需求,生成文本的相关性和准确性较之前方法有所提升。因此,基于深度学习的生成式图像描述是目前研究的热点。


接下来来浅谈下以上这些技术在游戏自动化方面的可能应用。


  • NLG模型的对比

【PC游戏】NLG自然语言生成技术:让游戏给自己做设计-第3张

NLG在游戏自动化的可能应用


NLG在游戏自动化的可能应用

  • 根据UI图片来生成描述文本

【PC游戏】NLG自然语言生成技术:让游戏给自己做设计-第4张

描述文本看似不起眼,其实也有大量玩家阅读

【PC游戏】NLG自然语言生成技术:让游戏给自己做设计-第5张

《奥日》极具独特风格的旁白介绍

笔者短暂的游戏开发经历期间,UI的设计以及生成可谓是繁琐枯燥的,如果我们利用NLG的图像到文本生成技术来生成UI对应描述文本,这也许会减少大量的工作。


比如说对各种经典常见的物品进行文本描述。对于一些简单的物品比如苹果雨伞皮革等等,这些AI 的表现稳定且优秀。


不过即使在生成了对应的描述文本后也需要游戏策划加以改进,毕竟绝大多数游戏在描述物品时都会带上游戏本身的或诙谐或黑色幽默或冷漠的风格。


  • 根据背景或开头来生成剧情

这里笔者举个例子,即时下热火的AI续写软件——彩云小梦。


它仅仅需要一段故事的开头辅以故事背景,禁止输出的词语等来续写故事,经过笔者测试,随着它的篇幅不断变长,它的续写会糅杂各种无厘头的风格,虽然软件提供了风格定制以及可供筛选的其他续写,但是不如人意翻车走偏的概率依旧大。而且即使利用此软件编写适宜的剧情,游戏策划根据此文本来改编为剧情的难度也高。

【PC游戏】NLG自然语言生成技术:让游戏给自己做设计-第6张

让彩云小梦试写本文,很明显行不通

因为彩云小梦并不是开源的,笔者也不清楚其原理是什么,只能揣测其核心可能是基于循环神经网络的模型。


那这就能证明根据背景或者开头来生成剧情在游戏方面的应用走不通了吗?并不是这样的,相反,笔者根据现在AI续写在模拟唐诗宋词乃至续写某些奇幻小说的优秀表现反而信心十足。


首先彩云小梦的训练数据集来源于用爬虫爬取的各式文学作品,诚然这样的它海纳百川,对各类作品都能加以续写,但是质量上却不过硬。因此我们可以将目标缩小至某一固定题材,在确定好所要开发的游戏的题材风格后,自行收集与此游戏相关风格的文学作品来作为数据集训练,着重于训练符合此款游戏风格的模型。


虽然收集特定风格的作品的难度要高于网络爬虫,但是这样一能确保我们模型的“纯洁性”,二来由于目的的明确性,模型训练难度应该不会太高。


但是这样仍然不能解决一个基本问题:即使凭此生成了优秀的剧本,也不代表我们的工作量因此少了一个剧本策划该做的工作,相反,对这些剧本的人工梳理精进,工作量想必也不低吧?


  • 根据背景或开头来续写对话

【PC游戏】NLG自然语言生成技术:让游戏给自己做设计-第7张

续写对话在多个游戏类型都有作用


上述人工改进AI剧本的问题既然难以解决,那如果我们换一个思路呢?将AI生成剧情改为AI续写对话,结果如图所示。

【PC游戏】NLG自然语言生成技术:让游戏给自己做设计-第8张

黑色部分为原文,红色部分为AI续写。比如说我们事先设定好两个性格的npc,通过编写两者的少量背景或者剧情开头,让AI来替我们生成其余的日常对话或者以剧情为导向相关的对话呢?


这样建立一套流水化自动化体系,其目的并不是完全替代游戏策划的作用,而是辅助策划人员乃至开发人员完成一些繁琐的事务,甚至只用写个插件按照对话格式和事先设定的程序检索读取,就可以直接导入转化为unity上的演示效果了。


    但是AI并不是万能的,其背后的逻辑又是什么呢?同样的,我们大概率还是得训练一个日常对话的模型或者一个与游戏风格相近的模型,辅以开头和背景,npc的对话才不会谈天论地。


  • 未来前景

正如上文所述,只是生成UI描述,特定剧情,特定背景下的人物对话,即使这样我们仍未达到我们的初衷,即大幅度地增加自由度,减少工作量。


那有没有一种可能,我们将角色的属性,背景故事作为输入,让某一模型生成我们想要的剧情对话呢?虽然没有相关研究证明,但笔者预测,时下热火的GAN生成对抗神经网络可能具备这样的潜力与可行性,它由1个生成网络和1个判别网络组成,在两个神经网络相互博弈中进行学习。输入随机噪声后,生成网络会模拟真实样本进行输出。


除此之外,即使现在AI创作质量不佳,但是技术更新换代非常快,目前传统的AI创作模型RNN循环神经网络的缺点比如短期记忆,不能并行计算,这些导致RNN在NLG方面逐渐被Transformer模型所代替,也许在不久的未来我们的AI续写能更兼顾上下文联系,为我们呈现更好的文章。


  • 模拟美术风格

补充一个不隶属于NLG技术但同样具有应用前景的技术,即深度学习的风格迁移。

如图,左边的大桥被改成中间这张海浪图片的风格,变成右图的油画风格。事实上此类风格迁移的算法模型已经相当丰富,如果美术资源过于贫瘠,或可用此法来生成需求风格。

【PC游戏】NLG自然语言生成技术:让游戏给自己做设计-第9张

  • 参考资料

https://baijiahao.baidu.com/sid=1717313583180028207&wfr=spider&for=pc

https://www.zhihu.com/question/31689004

https://baijiahao.baidu.com/sid=1701052922475966495wfr=spider&for=pc

http://www.360doc.com/content/15/1226/11/19203469_523197909.shtml

https://www.qlwb.com.cn/detail/16333500.html

https://blog.csdn.net/weixin_38858749/article/details/111870498


[1]李雪晴, 王石, 王朱君,等. 自然语言生成综述[J]. 计算机应用, 2021, 41(5):9.


#晒出宅基地


© 2022 3楼猫 下载APP 站点地图 广告合作:asmrly666@gmail.com