ChatGPT实现游戏 NPC 对话

news2024/12/23 17:39:45

游戏 NPC 对话

玩游戏的一个必要过程,就是和 NPC 对话,领取任务,获取线索。有趣的游戏,会根据用户和 NPC 交流时的不同选择,触发不同剧情走向。甚至多个 NPC 之间还能有罕见的隐藏剧情,等待用户发掘。可以说,跟 NPC 的选择性对话是玩游戏的一大乐趣。有了 ChatGPT,我们可以尝试让它来扮演游戏 NPC,或者更进一步,推动整个剧情的前进。

国内外游戏厂商都已经开始这方面的尝试。《Mount & Blade II: Bannerlord》游戏展示了一段原型视频,给 NPC 对话接入 ChatGPT。为了保证真实性,他们会通过额外开发的故事引擎,向 ChatGPT 提示一些重要信息,包括被选中交谈的 NPC 的派系、地点、职业、附近事件、统治者等。甚至还会修改一些游戏内部引擎,让所有 NPC 的脸和嘴都能动起来,和 ChatGPT 输出的文本对上口型。网易也宣布旗下的手游《逆水寒》会接入 ChatGPT,不但用于生成 NPC 对话,还包括随机任务和关卡地牢。为了让 AI 游戏更加名副其实,网易甚至连 NPC 的脸型、语音也都交给了 AI 完成。

完整的游戏 AI 设计当然不在本书讨论范畴以内。不过我们可以脱离 3D 游戏大作的各种表象,从文字冒险游戏这种最原始、但核心要素齐全的场景,来大致体验一下,ChatGPT 如何嵌入到游戏的 NPC、任务和关卡中。

文字冒险游戏是互联网早期的一种古老游戏方式。它们完全由文字组成,没有任何图像或声音。玩家通过阅读故事描述和输入命令来进行交互,探索虚构的世界和解决谜题。文字冒险游戏的发明者,理查德巴图甚至根据自己的 MUD 运营经验,总结出了游戏玩家的杀手型、成就型、社交型、探索型四大分类模型。中国本土最有代表性的纯文本冒险游戏是方舟子等人以金庸小说为基础制作和开源的《侠客行》。时至今日,北大侠客行依然在运营中。

在 AI 火爆之后,有一款文字冒险游戏出现在复古爱好者面前,那就是 AIDungeon(AI 地牢)。原版 AIDungeon 采用 openai 公司的 GPT-2 开源模型,如果要本地化,就需要耗时数月,专门收集小说素材、编写代码和训练微调,才能保证游戏体验的持续,而且质量好坏也严重依赖所收集小说素材的质量。ChatGPT 出现后,马上有中国爱好者,结合 AIDungeon 的设计,加入 ChatGPT,迅速生成了一款 ChatGPT 版的中文 AIDungeon 游戏:https://github.com/bupticybee/ChineseAiDungeonChatGPT。运行效果如下图所示:

在这里插入图片描述

和原版不同,这个版本的实现过程非常简单,既不需要专门的训练,也不需要复杂的代码编写,甚至也不需要做中英文翻译。通过快速阅读代码——一共也就几十行——我们可以还原实现过程,甚至在 ChatGPT 的聊天界面上模拟一遍。

作者的主体思路,就是在一次聊天会话的最开始,先提示 ChatGPT 故事背景。后续对话都会在这个背景下继续。作者代码中的默认背景提示语是:

现在来充当一个冒险文字游戏,描述时候注意节奏,不要太快,仔细描述各个人物的心情和周边环境。一次只需写四到六句话。开头是
辛迪加大陆分为托雷省,尼莱省和穆拉省,其中生活着矮人,精灵,人类三个种族以及无数的怪物。你是一个来自托雷的人类男性魔法师,今年21岁。你左手持着火焰法杖,右手拿着魔法书,背包里装着能支撑一周的口粮,进入了莱肯斯雨林进行冒险。

而示例代码中的演示背景提示语是:

现在来充当一个冒险文字游戏,描述时候注意节奏,不要太快,仔细描述各个人物的心情和周边环境。一次只需写四到六句话。开头是
你在树林里冒险,指不定会从哪里蹦出来一些奇怪的东西,你握紧手上的手枪,希望这次冒险能够找到一些值钱的东西,你往树林深处走去。

大家可以看到前面一段是一模一样的,主要用途是告诉 ChatGPT,扮演目的是冒险游戏,生成过程要注意描述任务和环境,控制输出文本长度。

聊起来以后,对输入的后续提示语也会做些处理。会给玩家实际输入的文字加如下一段前缀:

继续,一次只需要续写四到六句话,总共就只讲5分钟内发生的事情。

也是第一段先告诉 ChatGPT 继续保持生成过程控制输出文本长度,并提示 ChatGPT 生成内容和之前保持连贯性,时间上是 5 分钟内。然后第二段交给玩家发挥。

让我们把示例代码的演示玩法,在 ChatGPT 聊天框里手动玩一遍:

在这里插入图片描述

我们可以看到,确实相同背景下,我们得到的游戏背景和任务体验,和原作者的示例,是不太一样的。

在此基础上,我们甚至可以尝试利用 ChatGPT 的词性分类能力、格式化能力,让 ChatGPT 将游戏背景和任务过程,具体拆分成:主体、行为、情感、描述。这样,不仅仅 MUD 文字游戏,图形化游戏的 NPC,也可以有智能化的自主行动,而不仅仅是被动响应玩家对话了。目前还没有完整实现了这种交互的 2D/3D 游戏,但我们可以从展望未来的角度,做个简单的形式验证。在 AIDungeon 上做点额外的变动:

从现在开始,内容如果涉及到人物行为,包括且不限于动作、交谈等,可以按照 from, action, mood, message 四种信息,采用 JSON 格式输出这部分内容。继续。

在这里插入图片描述

我们甚至可以展望,等到 AIGC 绘图模型的连续出图能力相对稳定以后,在这段 JSON 里再加上 background_prompt 信息,我们将获得的,不仅仅是一个 ChatGPT 驱动的 NPC,而是整个 ChatGPT 驱动的 2D 游戏。

斯坦福大学在 2023 年 4 月发表了一篇论文《Generative Agents: Interactive Simulacra of Human Behavior》。研究者设计了一个虚拟小镇的 MUD 游戏,镇子上生活着 25 个居民,各有人设。然后 25 个 ChatGPT 代理分别扮演这 25 个居民的日常生活。可以说,我们本节设想的 AI 游戏,已经越来越近了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/535535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《PyTorch高级机器学习实战》包邮送书三本

目录 前言书籍目录抽奖方式 前言 随着人工智能和机器学习的蓬勃发展,相关算法和技术已经广泛运用到诸多行业,大量的研究者和各行业人员也投入机器学习的研究与开发中。 掌握高级机器学习算法原理,并能够根据不同情况实现灵活运用&#xff0…

NineData:高效高质量的Redis可视化管理工具

Redis 是一个内存数据结构存储系统,它被广泛用于缓存、队列、实时分析等多种应用场景中,目前已经成为 Key-value 数据存储系统中的佼佼者,根据 DB-Engine 网站提供的最新数据,Redis 在 Key-value stores 类别中排名第一&#xff0…

Dynamics 365 DevOps CI/CD之Solution

CI/CD到了Soution就没太多可说的了,按部就班配置就行,我选择的工具是Power DevOps Tool 1,首先下载工具,然后设置连接字符串去连环境,连接字符串还是用ClientSecret的形式 2,当然导出前还是要发布下自定义的…

小程序分包

分包加载的介绍 大部分小程序都会由某几个功能组成,通常这几个功能之间是独立的,但会依赖一些公共的逻辑,并且这些功能通常会对应某几个独立的页面。那么小程序代码的打包,大可不必一定要打成一个,可以按照功能的划分&…

c/c++ 宏定义里的#和##

工作中如果是c开发的话&#xff0c;经常会用到宏定义&#xff0c;而宏定义中的#和##也会时不时遇到&#xff0c;今天分享这两个符号的作用。 1&#xff0c;# -- 转换成字符串 直接看例子&#xff1a; #include <stdio.h> #include <stdlib.h>#define VAL2STR(VA…

vue非单文件组件的使用方法

标准化开发时的嵌套&#xff1a; 在实际开发中&#xff0c;通常会创建一个 APP 组件作为根组件&#xff0c;由这个根组件去管理其它的组件&#xff0c;而 Vue 实例只需要管理这个 APP 组件就行了。 <!DOCTYPE html> <html><head><meta charset"utf…

springboot+java办公用品租赁领用管理信息系统

将系统权限按管理员和员工这两类涉及员工划分。 (a) 管理员&#xff1b;管理员使用本系统涉到的功能主要有&#xff1a;个人中心、员工管理、办公用品管理、领用申请管理、采购申请管理、物品分类管理、系统管理等功能。 (b)员工进入系统前台可以实现办公用品管理、领用申请管理…

TimerResolution.exe

TimerResolution.exe是一款常用的Windows实用程序,用于调整系统计时器的分辨率。它提供了一种简便的方法,让用户能够更精确地控制计时器的运行方式,从而改善系统的性能和响应时间。无论是进行游戏、音频处理还是其他需要精确计时的任务,TimerResolution.exe都能提供极大的帮…

【PR】来制作视频进度条吧~

【PR】来制作视频进度条吧~ 制作进度条制作分割线及标题分割线标题其他 为啥视频要有进度条~ 方便观众回看和定位&#xff1a;添加进度条可以让观众在观看视频时随时了解视频播放的进度&#xff0c;也方便观众在需要回看或者查找某一段内容时能够更加精准地定位。 提高观看体验…

当电脑回收站图标不见后,这4种方法帮你快速恢复

我们都知道&#xff0c;在电脑上删除文件时&#xff0c;这些文件多数都会先停留在回收站中。当我们后悔删除这些文件时&#xff0c;往往可以通过回收站还原&#xff0c;可是有些小伙伴却发现自己的电脑回收站不见了&#xff0c;这无疑给我们的回收站文件恢复工作带来不便&#…

NXP MCUXPresso - 操作整理

文章目录 NXP MCUXPresso - 操作整理概念如何在工程中全局搜索文本?在一个编译配置中, 如何排除一些不要的内容?END NXP MCUXPresso - 操作整理 概念 在尝试迁移 openpnp - Smoothieware project 从gcc命令行 MRI调试方式 到NXP MCUXpresso工程. 这个IDE还是蛮喜欢的, 细节…

人工智能算法|K均值聚类算法Python实现

01、算法说明 K均值聚类算法是一种简单的迭代型聚类算法&#xff0c;采用距离作为相似性指标&#xff0c;从而发现给定数据集中的K个类&#xff0c;且每个类有一个聚类中心&#xff0c;即质心&#xff0c;每个类的质心是根据类中所有值的均值得到。对于给定的一个包含n个d维数据…

Word怎么删除空白页?分享5个基础方法!

案例&#xff1a;Word怎么删除空白页 【我最近在用word写文章&#xff0c;但经常都会遇到的一个问题就是总是会有空白页&#xff0c;使用word时怎么删除空白页呢&#xff1f;请大家给我支支招吧&#xff01;】 在使用Microsoft Word编辑文档时&#xff0c;有时会出现空白页&a…

Stimulsoft 报表开发工具支持设置水印啦!一起来看~

Stimulsoft Reports是一款报告编写器&#xff0c;主要用于在桌面和Web上从头开始创建任何复杂的报告。可以在大多数平台上轻松实现部署&#xff0c;如ASP.NET, WinForms, .NET Core, JavaScript, WPF, Angular, Blazor, PHP, Java等&#xff0c;在你的应用程序中嵌入报告设计器…

AI智能机器人的语音消息使用方式

如何在没有资金扩大营销的情况下增加收入&#xff0c;这是不是有点像先有蛋还是先有鸡的问题&#xff1f;如果没有足够的收入来源&#xff0c;小型企业很难对新客源扩展营销和传播。有关系统问题欢迎和博主一起交流。 机器人的语音消息是不是给百姓造成了生活上的影响&#xf…

Redis内存优化——Stream类型介绍及底层原理详解

系列文章目录 Redis内存优化——String类型介绍及底层原理详解 Redis内存优化——Hash类型介绍及底层原理详解 Redis内存优化——List类型介绍及底层原理详解 Redis内存优化——Set类型介绍及底层原理详解 Redis内存优化——ZSet类型介绍及底层原理详解 Redis内存优化——Stre…

4 个无质量损失的免费在线图像压缩器

本文内容&#xff1a;最佳在线图像优化器&#xff0c;无质量损失&#xff0c;可让您压缩 JPG、PNG 和 GIF 文件。 在线图像优化器工具可帮助您压缩图像而不会降低质量。并给出图像可以压缩多少的想法。 经过测试和比较的没有质量损失的最佳在线图像优化器 4 个无质量损失的免…

网管必备技巧:如何跟踪IP地址

作为网管员&#xff0c;在我们解决Windows 操作系统的DHCP故障时&#xff0c;有时要找出某个地址范围内有哪些地址没有被使用。方法&#xff1a;打开命令提示窗口&#xff0c;在For…in…Do循环中调用ping命令。 例如&#xff0c;为了找出在地址范围192.168.1.1 到 192.168.1.1…

左耳朵耗子

晚上回来后&#xff0c;到coolshell上看文章。 程序员是一件非常累的工作&#xff0c;在我看到稚晖君做出那么多优秀的产品&#xff0c;我是很惊叹的&#xff0c;因为我知道那需要付出非常非常多的时间和精力&#xff0c;当大家都在夸赞的时候&#xff0c;我也能发现稚晖君发梢…

GitHub Copilot:神一样的代码助手

我肝肯定&#xff0c;很多很多小伙伴还不了解 Copilot 是什么&#xff0c;尤其是初学计算机的小伙伴&#xff0c;我这里普及一下吧&#xff01; GitHub Copilot 是一个基于 AI 的代码自动完成工具&#xff0c;由 GitHub 和 OpenAI 共同开发。 GitHub 和 OpenAI 想必大家都很清楚…