这太不可思议了!GPT 技能树又壮大了,现在还能做游戏了!?
要知道,这个时代已经不再是以前那个只要做一个小游戏就能占领市场的时代了,如今的游戏开发流程极其复杂。
先说人力,每个游戏团队都有几十人甚至上百人,有的负责编程,有的负责美术,有的负责维护等等。
每个游戏还拥有庞大的代码库和素材库。
因此,开发一款优秀的游戏需要大量的人力和时间才能完成,而这个时间段往往需要几年的时间。
更直观的说,就是金钱。
一个游戏团队要开发一款让人们记住并且喜爱玩的爆款游戏,其预算很容易就超过 1 亿美元。
否则,怎么能说做游戏是一种由热爱而产生的力量呢?
如今,情况已经发生了变化!
有研究人员开发出一种名为GameGPT的模型,可以整合多个AI代理,自动完成游戏开发中的部分流程。
不同的智能代理各司其职、有序地工作。
有的代理负责审阅游戏设计方案,并做出相应的修改调整;有的代理负责将任务转换成具体的代码;有的代理负责检查上一步生成的代码,并审阅运行结果;还有的代理负责验证所有的工作是否符合最初的预期。
通过这种方式,GameGPT 可以将工作流程分解成更小的部分,从而简化 AI 代理的工作。与一个包办所有事情的万能代理相比,这种职责将更加高效,也更容易实现。
研究人员表示,GameGPT 可以简化传统游戏开发过程中的一些重复、死板的方面,例如代码测试。
大量开发人员可以从复杂的检测工作中解脱出来,专注于AI无法替代的更具挑战性的设计环节。
当然,本文还处于比较初步的阶段,还没有具体的成果或者实验来证明性能的提升。
也就是说,目前还没有人真正使用GameGPT开发过游戏,这个模型还处于概念形成阶段,在没有具体的应用成果和可量化的数据之前很难对其进行评估。
但这始终是一个值得努力的方向。
有网友表示,大家对于LLM的观念有些偏颇,现在研究人员已经有了可以100%解决NLP问题的工具,人们却只关心如何将某些工作流程自动化。
例如,想象一下,如果游戏世界对您的决定做出的反应比您在五分钟内就能弄清楚的基于硬编码规则的引擎会做出的反应更正常。
现在想象一下,有一款游戏会根据您做出的决定为您提供支线任务,例如随机屠杀您在路上看到的敌人。
当开发人员创建这样的系统时,他们使用提示工程来指导 LLM,而不是对这些内容进行编码。
不过这样做的目的并不是为了节省成本,而是为了在之前无法制作更多游戏的阶段制作游戏(说得有点拗口)。
游戏GPT
首先,我们来看一下 GameGPT 模型的总体情况——整个过程。
可以看到,作者将每个特工拟人化,以更生动地展示他们如何履行各自的职责。
流程最左边是用户端,将提示输入到GameGPT中,然后开发经理和审阅人员制定初步计划。
接下来,需求被发送给开发工程师和游戏引擎工程师,以执行特定的任务并生成代码。
最后检查是否有遗漏。如果有,就将其送回左侧并重新运行。如果没有,就继续到右侧,让负责检查的工程师进行测试。
AI开发游戏??
事实上,AI游戏发展的历史可能可以追溯到更早。
AI在游戏开发中的应用可以追溯到《星际争霸》《暗黑破坏神》等经典游戏,当时开发者需要利用AI系统来创建可交互的虚拟世界和角色。
这些系统已经成为此类交互式平台开发的标准。
早期游戏开发AI相关研究侧重于控制非玩家角色(NPC),但随着自然语言处理(NLP)技术的发展,出现了一些使用深度学习技术生成关卡的开创性工作。
其中代表作品为MarioGPT,通过微调后的GPT-2模型,成功生成了《超级马里奥兄弟》中的部分关卡。
众所周知,今年LLM进步很大,在NLP和计算机视觉(CV)领域取得了不错的成绩。
我们知道,LLM的训练是一个多阶段的过程,初始阶段需要在广泛的语料库上训练这些模型,以促进基本语言能力的习得。
接下来是更重要的阶段,即通过指令生成各类 NLP 任务的数据来对模型进行微调。这种指令调整增强了模型在广泛应用领域的泛化能力,让 LLM 在之前训练中没有进行过的任务上达到零误差的表现。
最后,强化学习与人类反馈(RLHF)阶段确保模型的结构完整性和可靠性。
这里还需要注意的一点是,RLHF 阶段允许模型生成模仿人类风格的内容制作游戏,从而增强其作为智能代理的多功能性。
此外,LLM的进步也推动了软件开发过程中智能代理的自动化,很多研究都集中在这个问题上——如何开发一个基于LLM的智能代理来执行不同的任务。
例如,AutoGPT曾经使用LLM代理来处理现实世界中的某些决策任务游戏运营,而HuggingGPT则使用单个LLM作为控制器来协调更复杂的AI任务。
虽然这些方法都依赖于独特的 LLM 代理,但它们都添加了审阅者(上图中的审阅者)以改进决策。
以 AutoGPT 为例,模型会从监督学习者那里获得一些辅助意见,来提升自身的表现。HuggingGPT 也可以与 GPT-4 连接,成为评估决策准确率的审阅者。
还有其他的例子,例如 MetaGPT,它引入了一个多代理框架,可用于各种软件的自动化开发。
回到我们今天所讨论的游戏开发,要知道不同于一般的软件开发,游戏开发行业的运作是需要紧跟潮流的,因此整个开发流程必须要更加精准简洁,才能达到最优的效率。
此外,如果没有幻觉和高精度,调整并使用单个 LLM 来服务游戏开发的整个开发周期是不切实际且成本高昂的。
因此,游戏开发AI的框架需要多名审阅者的参与,可以有效缓解语言模型固有的幻听倾向。
研究人员还发现,语言模型在游戏开发中还有另一个限制:冗余。LLM 在生成游戏时可能会生成不必要的、无意义的任务或代码片段。
为了有效解决幻读、冗余等问题,今天的主角GameGPT策略性地采用了包括双机协作、通过内部词汇库进行指令调整、代码解耦等多种手段来解决这一问题。
值得注意的是,双重协作涉及LLM与小型深度学习模型的交互,以及执行代理与审阅代理的协同参与。
研究人员表示,这些协同作用已被证明可以有效减轻 GameGPT 的幻觉和冗余。
方法介绍
接下来研究人员从整个流程上分析了GameGPT的创新之处。
首先,在游戏设计阶段,在收到用户请求后,GameGPT 的任务包括生成整个游戏的开发计划。这个规划阶段是极大影响整个开发过程无缝进展的关键步骤之一。
此阶段由 LLM 游戏开发经理进行规划,首先提出初步计划,然后将其分解为一系列任务。
值得注意的是,由于LLM的固有局限性,这个初步计划经常会出现幻觉,导致出现意想不到的任务,包括无信息量或不必要的冗余任务。
为了解决这些问题,研究人员提出了四种可以缓解这些挑战的策略。这四种策略相互正交,可以分层实施以取得更好的效果。
解决方案一:对传入的请求进行分类,识别游戏类型。目前,GameGPT 框架支持五种不同类型的游戏开发,分别是:动作、策略、角色扮演、模拟和冒险。
对于每一种类型,研究人员都提供了标准化的规划模板,并指导游戏开发经理代理使用相关信息完成模板。
通过这种方式,重复任务的频率显著减少,出现幻觉的可能性也降低了。
策略 2 涉及计划审查代理的参与,该计划审查代理是另一个基于 LLM 的代理,它通过精心设计的提示进行操作,对任务计划进行全面审查。
其主要目标是尽量减少幻觉和冗余的发生。代理评估计划并提供反馈,旨在改善和提高其准确性、效率和简单性。
同时,该部分生成的指令可以作为游戏开发管理代理的新输入,使任务规划更加准确和完整。
策略三:使用专门的指令来调整 Game Manager 代理本身的 LLM,以更好地规划游戏发展水平。这个微调过程的目的是让模型生成一个既准确又简洁的计划。
为了方便起见,研究团队收集并整合了一个内部数据集制作游戏,其中包含了很多输入输出组合,虽然这些组合在长度和结构上并不符合标准格式,但它们都围绕着游戏开发的需求。
该部分固定组合是由业界开发人员提供的。
通过这种方式,研究人员有效地弥合了法学硕士的一般语言能力和游戏开发规划能力之间的差距。
策略四:规划阶段的“安全网”。在整个规划过程中,游戏开发经理代理始终在前端界面上与用户分享中期结果,以便其他代理随时了解正在开发的内容。
为了加强这一点,研究人员整合了一种交互式方法,使用户能够根据自己的期望主动审查、纠正和改进计划。这种方法还确保了设计计划与用户要求之间的一致性。
说完了这些策略,我们再来看看GameGPT的优势。
首先,该模型中的任务分类过程需要对任务类型及其对应参数有较高的识别准确度。
因此,为了保证此阶段的准确性,研究人员创建了一个名为Game Developer的代理,它由两个模型组成,共同参与任务分类过程。
这种协作方式提高了任务识别的准确性和有效性。为了避免LLM错觉并提高任务分类的准确性,研究人员提供了游戏开发中可能出现的任务类型列表。
为了更好地对此进行分类,他们采用了 BERT 模型。
BERT 模型已使用内部数据集进行了全面训练。该数据集包含针对游戏开发任务量身定制的数据项。输入来自预定义列表,输出对应于任务的指定类别。
此阶段对任务类型和参数进行评审,引入一个称为任务评审器的智能代理,主要负责识别各个类别以及参数是否合理。
评审过程包括检查任务类型是否在预定的范围内,是否是最合适的任务,同时还会检查参数列表是否与任务一致。
在某些场景下,例如基于上下文任务信息或用户请求而无法推断参数的场景下,GameGPT 采用主动的方法来解决问题。
审阅者通过在前端界面发起提示,请求参数所需的附加信息来吸引用户注意。
这种交互式方法的好处是,即使自动推理存在缺陷,它也能保证论证细节的完整性。
另外还有一个 Agent,负责识别任务之间的依赖关系,并构建封装这些关系的图,在图构建完成后,再通过算法对图进行遍历和筛选,从而生成确定的任务执行顺序。
这个过程确保模型能够按照任务的依赖关系有序、系统地执行,从而形成连贯、结构化的开发过程。
另一个问题是,使用 LLM 生成冗长的代码会带来较大的幻觉和冗余风险。针对这一问题,研究人员引入了一种新方法,将游戏设计中出现的代码进行解耦,简化了 LLM 的推理过程,从而大大减少了幻觉和冗余。
该方法并不难理解——研究人员将预期的脚本分成许多较短的代码片段,让LLM进行处理。这种解耦方法大大简化了LLM的工作。
还有一种有效的推理方法,称为情境学习,也能有效地减轻幻觉。
此外,GameGPT 中应用的另一种去幻觉技术涉及为每个任务生成一组 K 代码片段。
然后在虚拟环境中测试这些代码片段,并同时呈现给用户。测试过程和用户反馈都用于识别和消除有问题的代码片段,最终只留下最可行的执行选项。这种方法还有助于进一步减少幻觉的发生。
此外,研究人员还有一个内部库,其中包含大量专为游戏开发而设计的代码片段。每个代码片段都由标注器进行注释,提供明确说明其预期用途的描述。
总结一下,为了让代码不那么冗余,不那么产生幻觉,开发人员做了两方面的准备,一个是活动前,一个是活动时。
同时,上面提到的库也是对模型进行微调的宝贵资源。代码审查与改进在游戏引擎代理生成代码后,代码审查代理会对代码库进行彻底的审查和检查。
代理会进行彻底的评估,尝试找出任何可能偏离原始请求的情况,或代码中出现的任何意外幻觉。
经过彻底的审查后,代理不仅会标记潜在的差异,还会提供改进代码的建议,最终生成更合理的版本。
经过review流程后,修改后的代码和代理的反馈会通过前端界面分享给游戏引擎工程师代理和用户,如果用户认为有必要,也可以直接通过前端界面提供代码修改建议。
然后将这些建议传递给代码审查代理,代码审查代理会评估并有选择地合并它们,进一步生成一种协作和迭代的方法来增强代码。
最后,一旦代码生成完成并且所有工作完成,游戏引擎测试代理就负责执行生成的代码。
此阶段,Agent也遵循上一阶段建立的执行顺序。
具体的执行过程包括将各个单独任务的代码发送给游戏引擎执行,并在执行过程中不断跟踪并生成日志。
在完成执行序列中指定的所有任务之后创作人,代理会合并整个执行过程中生成的所有日志。
最终,该汇编生成简洁而全面的摘要,然后通过前端界面呈现给用户。
此外,测试工程师代理还会识别并报告执行过程中观察到的任何回溯。这些回溯是 AI 对执行流程或代码进行进一步调整的关键指标,可改进整个流程并帮助生产出完美的最终产品。
最后我们看一下多个代理同时工作的框架公式:
首先,在 GameGPT 中,每个代理都有一个私有记忆系统,它们可以访问共享的公共内容以获取指导其决策过程的必要信息。
对于时间步长为 t 的代理 i,该过程可以表示为:
其中 pθi 对应于与代理 i 相关联的 LLM 或专家模型,Oit 表示代理 i 在时间步骤 t 的输出或可交付成果,Mit 和 Pt 分别指截至时间步骤 t 的所有私人记忆和必要的公共记录。
由于游戏开发行业的特殊性和大型语言模型的局限性,在 GameGPT 中具有不同角色的多个代理的存在至关重要。
鉴于游戏开发周期通常需要数月,如果语言模型(包括 LLM)依赖于具有全面记忆和上下文信息的单一代理,其效果将大大降低。
随着项目随着时间的推移变得越来越复杂,这种方法也带来了可扩展性挑战。此外,鉴于 LLM 可以处理的标记数量有限,对于大型游戏开发项目,使用具有完整内存的单独代理并不实用。
此外,在 LLM 中观察到的幻觉和冗余等固有问题凸显了多个代理之间协作的重要性,特别是那些具有关键角色的代理之间协作的重要性。
这种合作对于缓解法学硕士 (LLM) 假象和冗余所带来的挑战具有无价的价值。
因此,GameGPT 利用一系列不同的角色来促进其运营,涵盖整个游戏开发生命周期的职责。
这些角色包括前面提到的游戏内容设计师、游戏开发经理、方案审核员、游戏开发工程师、任务审核员,还有游戏引擎工程师、代码审核员、游戏引擎测试工程师等。
在整个游戏开发过程中,每个角色都有不同的任务。
参考:
本文来自微信公众号“新智元”(ID:AI_era),作者:Layan,经授权36氪发布。