logo
2

荆轲刺秦王冠军团队——寻找游戏大模王赛后分享

前言

大家好,我是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?from=from_copylink
在游戏开发过程中,鉴于RPG maker在实现剧本部分内容方面存在困难,团队决定结合RPG游戏的特点,设想了一个更为宏大的背景,那就是加入两个势力的博弈,增加更丰富的剧情,让玩家和AI的交互具有更多的主观能动性。此外,我们决定使用AI生成人物立绘、让AI生成游戏情节等方式,使游戏变得更加丰富。下图所示是我们利用文心大模型生成的游戏人物宁姬的形象立绘(真的好美,我好爱这版宁姬):
图4 文心大模型生成的游戏人物形象立绘

与AI结合

接下来,我们考虑如何将游戏与AI结合起来,为玩家提供更具沉浸感的体验,同时也是这次比赛的要求之一。我们将此过程分为四个模块,包括游戏与大模型的结合、接入大模型接口、使用RPG Maker插件以及开发自己的游戏npc。在这些模块中,生成个性化的AI NPC和利用大模型进行事件流控制是关键步骤。通过这样的方法,我们能够赋予游戏中的NPC独特的情感、行为方式和对话能力,从而提升游戏的沉浸感!
prompt设计
为了生成拥有独特性格和背景故事的NPC,我们使用自定义Prompt进行设计。以下是我们在设计Prompt时的一些讨论和想法:
图5 设计prompt的讨论
  1. 独特性格:我们通过在Prompt中描述NPC的特定性格特征,例如善良、乐观或内向等,以及他们的行为方式和态度来塑造NPC的独特性格。
  2. 背景故事:我们在Prompt中加入NPC的背景故事,包括他们的成长经历、家庭背景、职业经历等。这些细节能够帮助模型生成具有丰富而具有深度的NPC角色。
  3. 对话风格:我们通过在Prompt中设定NPC的对话风格,如幽默风趣、正式严肃或温柔体贴等,来使NPC更加生动有趣。
  4. 目标和愿望:我们将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对话和推理事实来解开谜题找出真凶
最终我们是提交了三个视频如下(算两个游戏,第二个视频是在第一个视频的基础上升级剧情)
1.【打破次元壁,用百度千帆大模型开发一款《穿越秦朝·荆轲刺秦王》AI NPC的剧情触发游戏!】 https://www.bilibili.com/video/BV1iC4y1c7S5/?share_source=copy_web&vd_source=2a95d712e9b5a83a8e0609e11255fb80
2.【【寻找游戏大模王】《穿越秦朝:荆轲刺秦王》全新更新!揭秘新剧情与开放源代码!-哔哩哔哩】 https://b23.tv/9dJbHiH
3.【【寻找游戏大魔王】🔍 新游戏速递:48小时极限开发的款大侦探解密游戏v1.0《庄园密案——谁是真凶?》-哔哩哔哩】 https://b23.tv/1BS2DHS

结果

现在回想,还是超级开心!这个结果真的很出乎我的意料,看到我们两款游戏demo能够进入优质作品前十五名,并且《荆轲刺秦王》最终赢得了2023百度智能云游戏大赛的一等奖,这真是太棒了!!!!(虽然在我学校加不了量化
图12 一等奖奖杯

技术干货

我们团队完成了其中的4条要求,包括
  • 调用了千帆平台的大模型接入游戏NPC
  • 使用大模型完成流程控制影响剧情发展
  • 使用comate辅助开发代码
  • 使用文生图模型画人物立绘图
并且为游戏引擎开发了可直接使用的插件,插件已经上传至git并开源,地址如下:https://github.com/npcAiGame/npcAiGame
因为团队中一开始并没有人员参加过游戏开发,所以并没有选择unity或者其他比较复杂的游戏引擎,而选择了rpg maker mz作为了本次过程中使用的游戏引擎。Rpg maker操作简单,功能多样,且绝大多数情况下不用编写代码,使得游戏制作过程大大简化,这样也保证了游戏进度可以在比赛时间内被较好的完成。
在确定了游戏引擎之后,便交由剧本开始编写剧本,当剧本交出之后,开始由美术画人物立绘图,同时游戏主程开始开发游戏流程,大模型接入工程师开始编写相关代码。因为rpg maker只能通过插件的方式植入代码,所以我们编写了相关的将大模型接入npc的插件,并且为了使与npc的对话能够推动流程的良好进行,我们还编写了相关的流程控制插件,其主要代码其实是通过另一个大模型接口,判断过去的对话中是否触发了某个条件。
我们利用全局变量作为连接大模型和游戏控制流程的关键。全局变量,一种在整个程序中均可访问和修改的变量,为我们提供了一种有效的方式来跟踪玩家的行动和游戏状态。例如,当大模型返回的JSON数据显示玩家完成了一个关键任务时,我们会将一个全局变量的值设置为1,从而触发游戏中的下一个事件或转换。此外我们还开发了事件记忆的相关插件。
通过大模型,我们可以将玩家与游戏中的NPC之间的对话进行分析和总结,提取出关键的信息点,并将它们转化为“事实”。这些事实不仅包括玩家所做的选择和行动,也包括与NPC之间交流的具体内容。这种方法的核心在于,这些事实被保存在全局变量中,这使得游戏中的所有NPC都可以访问和参考这些信息。
这种设计的优势在于,当玩家与某个NPC进行下一次对话时,这些全局变量中的事实可以作为对话的prompt传递给NPC。这意味着每个NPC在与玩家互动时,都能够根据之前发生的事件和对话做出更加合理和真实的反应。例如,如果玩家之前帮助了一个NPC,那么这个行为的信息会被保存,并影响到未来与其他NPC的互动。
此外,这种技术还使得NPC能够“记住”玩家的行为和选择,并据此做出策略性的反应。这不仅增强了游戏的沉浸感,也提高了游戏的可玩性和复杂度。玩家的每个选择和行动都可能对游戏世界产生连锁反应,从而创造出独一无二的游戏体验。
我们通过编写详细的算法和编程逻辑来实现这一功能。例如,我们开发了一种机制,能够让大模型根据玩家与NPC的互动自动更新全局变量。同时,我们也确保这些变量能够在游戏的不同环节和场景中被有效地调用和应用。

参赛心得

1.热爱可以战胜一切!我从未想过可以和元贞在48小时内合作完成一个大侦探游戏demo的制作。前段时间我对侦探解密和桌游卡牌策略类游戏非常着迷,而恰好我有机会去开发属于自己的大侦探解密游戏。这真的让我感到非常激动,我真的全力以赴地想要实现它,熬夜也要将它肝出来!
12月8日已经是比赛截止日期当天了,但我们的大侦探游戏仍在开发中,并且遇到的关键问题还没有完全解决。现在回想起来,真的是太刺激了!
图13 ddl聊天记录
2.完成比完美更重要!相信自己,相信队友!夸奖和鼓励真的很重要!一开始,我也曾感到迷茫和担心自己会三分钟热度,但是在群里,像Amy姐和煜神他们一直在鼓励我们,鼓励我们敢于开始。通过不断尝试、试错和摸索来提升自己,即使结果并不完美,也是一种宝贵的历练和成长。当你做出一点小小的成绩时,团队中的每个人都会夸奖和称赞你,这种感觉非常棒,也会激励你继续努力往后做下去!
图14 相信自己,相信政府
3.当你真正着手做的时候思路才变得逐渐清晰起来,行动,可以克服一切犹疑和思想障碍,带你走向真实的成功!
4.意外发现自己还蛮有策划天赋?被水哥称赞比一些游戏主策还厉害开心耶哈哈(斯突然意识到自己以前曾是学校英语爱好者协会策划部一员,没白费老部长的一番苦心教导~

感谢

非常感谢Datawhale提供这样一个平台,正是因为有了Datawhale,我们才得以相遇,有机会走到一起成为一个Team,因为Datawhale&&在问&&chatTests的支持,我们才能获得这个Top1,并且遥遥领先!!!恰如那句“Datawhale在学习路上伴你同行,我们本可以不那么孤单”
图15 最终投票结果
同时感谢本次比赛的主办方-百度,提供了百度智能云千帆大模型平台,让我们将大模型技术融入游戏设计、创造出独一无二的游戏世界引爆创意的火花并重新定义游戏体验。
最后,感谢我们团队中的每一位成员,从完成这个比赛,到入选前15,最后荣获Top1,每一次成就都凝聚着我们每一位成员的付出与默契协作。
评论
用户头像