赞
踩
Datawhale干货
获奖:元贞、小罗,Datawhale优秀学习者
大家好,我是 2023 寻找游戏大模王 AI 原生应用大赛的 Top1 荆轲刺秦王团队的小罗,很高兴能在这里与大家分享我们这次比赛的经验,同时也希望以后有机会可以和大家一起交流学习~
图1.左二是我
首先,怀着对创作游戏和学习大模型的那么一份憧憬,作为 Datawhale 鲸英助教的我大胆地报名了 Datawhale 智能云大模型游戏应用开发活动的助教招募,准备和学习者一起探索大模型在游戏领域的应用,内心还是很希望能玩上自己亲手做的游戏~如下图所示我是二群的专业助教。
图2.助教团队
在学习群里,大家根据以往组队的经验,主动进行自我介绍,包含了所具备的技能点,想做的方向、组队的意向等。我也主动表达了愿意组队,随后,就被后来的队员拉进了一个小群,集齐队伍就开始了属于我们的游戏开发故事。
我们最开始讨论的是我们想要开发什么样的游戏以及如何分工。尽管我们六个人都没有游戏开发相关的经验,但我们都怀着学习和实践的态度,并且愿意投入时间和精力来学习和运用自己所学的知识来创建我们自己的游戏。
于是,我们开始了一次次头脑风暴和协作来不断优化我们的想法和项目计划。我们相信,通过团队的努力和持续地学习,我们一定能够开发出一款与众不同的、属于自己的游戏~
成功的项目离不开一个成功的团队,离不开团队的协作和帮助。我们的团队构成基本如下:主要有六人组成:分工为剧本、美术、prompt 工程师、游戏主程、大模型对接工程师、视频剪辑师。(后续考虑到完善性,还应包括音效设计,动作设计)。
图3.赛事说明
从赛事说明中可以看出,这个比赛给参赛者提供了很高的自由度,可以任意发挥脑洞进行创作。所以最初,我们团队有很多想法,包括做三体游戏、破壁人和面壁者、无限流 CYOA 游戏等。但由于时间和技能点的限制,我们决定先开发一款基于文字+图片的 2D 游戏,再逐步扩展剧情、增加玩法以及优化美术。以下是我们 11.20 头脑风暴的一点记录。
随后,我们在讨论游戏的玩法时想到了将我们的小游戏与历史故事结合起来。正好,我们团队中有一位擅长写剧本的成员,可以为我们的游戏提供精彩的故事和角色!《荆轲刺秦王》是一部广为人知的历史经典故事,我们认为,如果能通过 AI 与这些经典历史人物进行交流,将会非常有意思(我真的很想知道项羽为何乌江不渡?)。在技术方面,由于团队成员之前没有游戏开发经验,所以最初我们考虑的是先去学 Unity 的基本操作,再使用 Unity 进行开发,并逐步进行优化。
与此同时,作为助教,我在前期整理了 RPG 游戏的相关案例开发流程教程。这无形中为我们几个没有接触过游戏开发的成员提供了一条新的思路。我们可以直接使用 RPG maker 来创建场景变换、人物移动等,而不必重新学习 Unity,从而减轻了一定的代码工作负担。这种方法可以说是另辟蹊径,为我们游戏开发过程提供了新的可能性。
感兴趣的小伙伴可以看看,RPG maker 小白入门教程:
https://saeikvpfb9v.feishu.cn/docx/XPFxdicdpoVUQ8xp6PEcLnqcntd
在游戏开发过程中,鉴于 RPG maker 在实现剧本部分内容方面存在困难,团队决定结合 RPG 游戏的特点,设想了一个更为宏大的背景,那就是加入两个势力的博弈,增加更丰富的剧情,让玩家和 AI 的交互具有更多的主观能动性。此外,我们决定使用 AI 生成人物立绘、让 AI 生成游戏情节等方式,使游戏变得更加丰富。下图所示是我们利用文心大模型生成的游戏人物宁姬的形象立绘(真的好美,我好爱这版宁姬):
图4.文心大模型生成的游戏人物形象立绘
接下来,我们考虑如何将游戏与 AI 结合起来,为玩家提供更具沉浸感的体验,同时也是这次比赛的要求之一。我们将此过程分为四个模块,包括游戏与大模型的结合、接入大模型接口、使用 RPG Maker 插件以及开发自己的游戏 npc。在这些模块中,生成个性化的 AI NPC 和利用大模型进行事件流控制是关键步骤。通过这样的方法,我们能够赋予游戏中的 NPC 独特的情感、行为方式和对话能力,从而提升游戏的沉浸感!
为了生成拥有独特性格和背景故事的 NPC,我们使用自定义 Prompt 进行设计。以下是我们在设计 Prompt 时的一些讨论和想法:
图5.设计 Prompt的讨论
独特性格:我们通过在 Prompt 中描述 NPC 的特定性格特征,例如善良、乐观或内向等,以及他们的行为方式和态度来塑造 NPC 的独特性格。
背景故事:我们在 Prompt 中加入 NPC 的背景故事,包括他们的成长经历、家庭背景、职业经历等。这些细节能够帮助模型生成具有丰富而具有深度的 NPC 角色。
对话风格:我们通过在 Prompt 中设定 NPC 的对话风格,如幽默风趣、正式严肃或温柔体贴等,来使 NPC 更加生动有趣。
目标和愿望:我们将 NPC 的目标和愿望融入到 Prompt 中,描述他们追求的梦想、渴望的改变或追寻的价值观,以增加角色的动机和情感驱动力。
我们利用了 RPG Maker 和百度智能云千帆大模型来开发一个 NPC 对话插件。然而,我们遇到了一个问题,即无法在流程上进行控制,导致剧情无法推进,只能进行一次对话而无法连续对话。为了解决这个问题,我们开发了一个根据历史聊天记录进行流程控制的插件,使角色可以与 AI NPC 连续对话。同时,我们还通过对话和事件驱动的方式来增强沉浸感和游戏体验。这样的优化大大地提升了游戏的体验效果。下图展示了玩家与 AInpc 对话输出的情况,让你能够体验仿佛就在与荆轲本人对话一般的真实感受!
图6.玩家与 AInpc 对话
在前两个插件完成之后,在我们的《荆轲刺秦王》游戏的初版和升级版都已经开发完成的情况下,我和元贞萌生了一个大胆的想法——那就是制作一款大侦探游戏,这也是我前段时间一直心心念念的游戏。受到《荆轲刺秦王》的开发经验启发,我们希望让多个 NPC 之间发生的事件和对话内容能够共享。然而,要让游戏中的 NPC 通过积累事实记忆并更真实地生活在游戏世界中,成为了当时我们面临的最大难题。
图7.游戏截图
例如上图,这个人物设定为艾米莉亚,但当与她对话时却自称为汤姆,这就是出现了记忆混乱的情况,真的开始怀疑自己是不是来搞笑的了。
图8.开发截图
再比如,跟它对话它说自己是人工智能语言模型,直接就跳出了游戏人物设定,这会让玩家直接出戏,从而影响游戏的整体体验!
为了解决这些问题,我和元贞在学习群里询问,看有没有什么好的解决方法让在这个圆桌上的所有 AI npc 都能知道当时侦探与每一位 AInpc 角色的所有对话,实现共享记忆。经过讨论最终获得了斯坦福小镇的思路,我们恍然大悟!在开始和 npc 对话的代码之前先调用了一次千帆 API。通过分析之前的对话和现有的事实性文本(从文本文件中读取),使千帆生成了事实性文本描述,并将生成的文本保存到本地的文本文件中。然后,我们将这些事实性文本加载到 system 中,作为额外的一段 Prompt,再与对话一起传递给模型,这样做的目的是让模型能够更好地理解上下文,并实现共享记忆的效果。插件部分代码截图,是我在原有插件的基础上写的!
图9.插件代码
以下是我们文件中的事实性文本和对应的文本描述:
图10.事实性文本和对应的文本描述
也就是说我们又开发了一个事实构造与记忆共享的插件,利用了事实构建、场景发掘和知识广播的技术,这使得所有 AI 角色都能了解我们跟其他角色之间的对话内容,类似于剧本杀或者狼人杀的机制。这样一来,NPC 们可以根据积累的事实记忆进行推理和互动,从而增加了游戏的复杂性和真实感。
这一插件为我们的大侦探游戏带来了全新的可能性,使得 NPC 之间的交互更加有趣和出人意料。玩家可以通过与 NPC 对话和推理事实来解开谜题找出真凶,体验到更加沉浸式的游戏体验。也就是说 i 人玩家可以一个人沉浸式地体验剧本杀的快乐啦~
图11.通过与 NPC 对话和推理事实来解开谜题找出真凶
最终我们是提交了三个视频如下(算两个游戏,第二个视频是在第一个视频的基础上升级剧情)
【打破次元壁,用百度千帆大模型开发一款《穿越秦朝·荆轲刺秦王》AI NPC 的剧情触发游戏!】 https://www.bilibili.com/video/BV1iC4y1c7S5
【【寻找游戏大模王】《穿越秦朝:荆轲刺秦王》全新更新!揭秘新剧情与开放源代码!-哔哩哔哩】 https://b23.tv/9dJbHiH
【【寻找游戏大模王】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。