[Unity Sentis]使用 Unity 和 Hugging Face 创建引人入胜的 AI 驱动游戏

英文原文:https://thomassimonini.substack.com/p/creating-an-engaging-ai-powered-game

让我们构建一款休闲游戏,其中 AI 要求玩家说一些好听、刻薄和有趣的话

在这里插入图片描述

在视频游戏中整合尖端的人工智能模型,将带来一系列令人兴奋的新游戏玩法。例如,在上一个教程中,我们使用句子相似性模型创建了一个智能机器人 NPC,它能理解您的命令并执行命令。

在这里插入图片描述
在本教程中,您将修改一个名为 "Say Something"的游戏,在这个游戏中,人工智能会要求您写一些好话、刻薄话或信息/有趣的话。

在这里插入图片描述
人工智能会理解您的意思并对您说的话进行评分,如果✅,则会给出一些分数和额外的时间 ⏱️。

您的目标是尽可能快地赢得时间并获得最高分。

您可以在此处的浏览器上使用我的版本

为了制作这个项目,我们将使用:

  • Unity 游戏引擎(2022.3 及 +)。
  • 包含我们在此处创建的资源的 Unity 包
  • Hugging Face Unity API 是一个免费且易于使用的 Hugging Face Inference API 集成,允许开发人员在其 Unity 项目中访问和使用 Hugging Face AI 模型。

要求:

  • 您需要了解如何使用 Unity。如果不是这样,您可以查看这个优秀的免费课程《用代码创建》。

项目结束时,您将制作自己版本的 “Say Something”,并在 "Hugging Face Spaces"上免费在线发布。

您可以在此处找到该项目的资产

那么让我们开始吧!

(重要提示:在本教程中,我交替使用 "人工智能 "和 "模型 "这两个术语)。

什么是Say Something?

Say Something 是一款休闲游戏,玩家需要根据人工智能的要求输入一些有意义/好听/有趣的内容。

目标是获得最高分。

an-engaging-ai-game-01

游戏规则

游戏规则很简单:
在这里插入图片描述
60秒:玩家开始倒计时60秒。

在键盘上:人工智能会要求玩家写下刻薄、友好或中性的文字。

大小很重要:选手的投入越大,得分越高,时间越长。

人工智能判断:人工智能能理解玩家的输入,并判断其是否足够刻薄/尖刻/中性。

但人工智能如何判断玩家的短语是否“足够好”?


这个游戏如何运作?

我们使用的模型非常简单,它是一个文本分类模型,更确切地说,是一个零镜头文本分类模型。

文本分类

文本分类模型是能够理解播放器所写文本并将其归类的模型。
在这里插入图片描述
例如,在写 "I love Hugging Face"时,模型理解这是一个积极的短语,并将其标记为积极的。

我们也称这种模型(将文本标记为正面、负面或中性)为情感分析模型。

有了这种模式,我们才能创造出独具匠心的游戏玩法。

TasksText Classification

您可以在此处通过浏览器自行尝试,并了解有关文本分类的更多信息 https://huggingface.co/tasks/text-classification

但在我们的案例中,我们并不希望我们的模型在正面、负面或中性之间进行分类。我们想要定义特定的标签:好的、平均的、有趣的。为此,我们可以使用Zero-Shot Text Classification model。

Zero-Shot Classification

我们刚才谈到的文本分类模型是根据特定标签进行训练的。例如,一个简单的情感分析文本分类模型学会了对文本进行正面、负面或中性分类。

但在我们的案例中,我们想做一些更有趣的事情。我们想让玩家写一些刻薄的、好听的、信息量大的等等!为什么不写一些有趣或恐怖的内容呢?

为此,我们可以使用 "Zero-Shot Classification"模型,它是在一组已标注的示例基础上训练出来的模型,但也能对以前未见过的新示例进行分类。

这意味着我们可以要求他们根据我们决定的标签对播放器写的文字进行分类。

在这里插入图片描述
在这个例子中,我们希望我们的模型能够将我们的短语分为三个标签: 电影、艺术和音乐。

您可以在浏览器上自行试用,了解有关零镜头文本分类的更多信息 https://huggingface.co/tasks/zero-shot-classification

为了找到一个 "零镜头文本分类 "模型,我们将使用 “Hugging Face”。


什么是Hugging Face?

Hugging Face 是一个平台,用户可以上传或下载超过 35 种不同任务的预训练 AI 模型,从 Llama v2 的文本生成、Whisper 的语音到文本、Coqui 的文本到语音(AI 语音)到 3D生成。

对于这些模型中的大多数,Hugging Face 都提供了一个名为推理 API 的免费 API,让你可以通过简单的 API 调用来使用它们。

如何在 "Hugging Face "上选择 “Zero-Shot Classification模型”?

这里列出了所有人工智能模型 https://huggingface.co/models。在本页左侧,您可以看到不同的任务。
在这里插入图片描述
在我们的例子中,您要选择 "Zero-Shot Classification"分类
在这里插入图片描述
现在我们有一份 Zero-Shot 分类型号列表(约 200 个)。您可以点击最上面的一个,测试它们是否优秀。

就我个人而言,我选择了 https://huggingface.co/facebook/bart-large-mnli

在这里插入图片描述
既然我们已经完成了理论知识的学习,那么现在就来制作你的 "Say Something"版本吧!


让我们让您的版本的"Say Something"吧!

第 1 步:回顾一下游戏流程

游戏过程非常简单:
在这里插入图片描述

  • 随机选择一个主题。
  • 玩家被要求写一些刻薄的东西(例如)。
  • 如果玩家写的文字太短,就会被要求写更长的文字(这样可以避免只写一个字的作弊行为,还可以促使玩家写更长的短语,以获得更多的分数和更多的额外时间)。
  • 该玩家输入通过免费 API 发送到模型 (AI)。
  • 模型(AI)对玩家输入进行分类。
  • 该模型给出每个标签的分数。

在这里插入图片描述
如果玩家的输入是平均的➡️,玩家就会获得积分和奖励时间。

否则➡️玩家会被要求写一些更刻薄的东西。

既然您了解了游戏的工作原理,您就可以制作自己的版本了🔥。

第 2 步:从 Hugging Face 开始

Hugging Face 包含大量令人惊叹的人工智能模型和一个 API(加速推理 API),可以直接将它们插入到你的项目中。

但首先,您需要创建一个免费帐户

创建帐户后,单击您的个人资料图片(右上角)转到“设置”。
在这里插入图片描述
在“设置”中,选择“访问令牌”
在这里插入图片描述
创建一个新的访问令牌,为其指定所需的名称,然后选择写入角色:
在这里插入图片描述
现在令牌已创建,请复制 API 令牌,这是您使用 API 所需的密钥。

在这里插入图片描述
⚠️出于安全原因,请勿将此密钥分享给其他人,它是私钥。

第 2 步:选择您的零样本分类模型🤖

现在我们有了 API 密钥,可以尝试选择一些模型。

点击模型后,您可以直接在网站上试用该模型。让我们做个测试,进入前 5 个模型进行测试。

我在这里测试了这个模型:https://huggingface.co/facebook/bart-large-mnli

最重要的是,我想测试该模型是否能够理解复杂的短语,比如这个显然很刻薄的短语。

在这里插入图片描述
⚠️ 不要忘记在测试模型时取消选中“Allow multiple true classes”,因为我们在游戏中不使用此功能。

我打算在游戏中使用这个模型。但请随意测试更多模型。

既然选择了这个,我们就需要获取 API URL,为此请单击 “Deploy”>“Inference API”。
在这里插入图片描述
这将打开一个窗口,您可以在其中复制 API_URL:
在这里插入图片描述
您现在已准备好在 Unity 中使用此模型。

第 3 步:创建一个新的 Unity 项目并安装 Unity API 插件

  1. 创建一个新的Unity项目(我使用3D URP项目)。
  2. 打开Unity项目
  3. 转到窗口 -> 包管理器
  4. 单击 + 并选择从 git URL 添加包
  5. 输入 https://github.com/huggingface/unity-api.git

在这里插入图片描述
6. 安装后,Unity API 向导应该会弹出。如果没有,请转到“Window”->“Hugging Face API Wizard”
7. 输入您的 API 密钥。您可以在 Hugging Face 帐户设置中创建您的 API 密钥。
8. 通过单击 API 向导中的测试 API 密钥来测试 API 密钥。
9. 将您的模型 API_URL 粘贴到零样本文本分类任务上。
10. 检查✅等待模型

在这里插入图片描述
11. 在此处下载 Unity 包并将其放入您的 Unity 项目中。
12. 打开Student_Version场景
13. 单击“开始”并尝试游戏。

⚠️:有时,您在游戏过程中执行的第一个 API 调用很长,因为模型需要将其打开。一种解决方案是添加一个加载屏幕,并使用虚假的 Query() 调用来打开模型。

您现在已准备好修改游戏以制作您自己的版本。

第五步:检查游戏管理器

如果您检查 Scripts/GameManager.cs 中的 GameManager.cs 文件,您将能够看到整个代码库。

每个函数都有注释说明,所以比较简单,但最重要的函数是Query()。它对您选择的模型进行 API 调用。

在这里插入图片描述

第 6 步:添加主题/更改主题

游戏不错,但是添加更多有趣的内容怎么样?就像人工智能要求你写一些有趣的东西而不是有趣的东西?

令人惊奇的是,您无需更改 GameManager.cs 中的大量内容:

  • 您需要更改主题数组,即发送到模型的标签,将“interesting”替换为“funny”。
  • 在 DisplayTopic 中,我们需要将 information 的情况改为 funny。这样,游戏就会显示 “说点好笑的”!
  • 您还可以通过添加新的表情(例如机器人笑)来更改 SetAIEmojiEmotion。我是用 emojimix 制作的

经过 3 个小改动,您创建了自己的具有新标签功能的版本。

如果您想添加更多标签,我有三个建议:

  • 首先像我们上面那样在 Hugging Face 网站小部件上进行测试,这样您就可以看到它是否正常工作。
  • 对于添加的每个新标签,都会降低阈值,因为所有标签的分类总和为 1。因此标签越多,最佳分类分数越小。
  • 避免标签彼此太接近:例如interesting和funny。或者是mean和insulting。

第 7 步:与全世界分享您的Demo

恭喜您完成了演示!现在,让我们把它免费发布到网上,让每个人都能玩到它。

Hugging Face 提供了一种方便且免费的解决方案,称为 Spaces。

我们准备了一个 5 分钟的快速教程来指导您完成整个过程:https://huggingface.co/blog/unity-in-spaces

按照教程中的步骤展示您的创作,并让他人体验

我在 Spaces 上发布了我的内容,您可以在这里尝试

当您分享您的演示 ❤️ 时,请随时在 twitter 上@thomassimonini,并在 Linkedin 上@Thomas Simonini。


这就是今天的全部内容,您刚刚创建了自己的 Say Something 版本!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Unity 3D和Blender 创建一个3D 游戏 Unity 3D 是一款功能强大的跨平台游戏引擎,而Blender是一款免费且开源的三维建模软件。结合使用这两个工具,我们可以创建一个精彩的3D游戏。 首先,我们可以使用Blender来建模和设计游戏中的角色、场景和道具。通过Blender的强大功能,我们可以创建具有细节丰富的3D模型,并为其添加材质和纹理,使其更加逼真。Blender还提供了很多方便的工具,如动画和模型编辑器,使我们能够为游戏中的对象添加动画和交互性。 然后,我们可以将Blender中创建的3D模型导入到Unity 3D中进行场景搭建和游戏开发。Unity 3D 提供了一个可视化的编辑器,使我们能够方便地设置场景、导入模型、添加光照和特效等。通过Unity 3D的编程功能,我们可以为游戏中的角色和物体添加行为、触发事件和实现物理效果等。 在游戏开发过程中,我们还可以利用Unity 3D 中的资源库和社区插件来丰富游戏的功能和效果。Unity 3D 提供了许多预制物体、脚本和特效,可以快速实现游戏中的功能和效果。我们还可以从Unity Asset Store中下载其他开发者分享的模型、贴图和脚本,以便更好地完善我们的游戏。 最后,我们可以通过导出游戏为可执行文件或移动平台应用,分享给其他人体验我们创造的3D游戏Unity 3D 提供了多种平台的支持,如Windows、Mac、iOS和Android等,使我们的游戏能够在不同的设备上运行。 通过结合使用Unity 3D和Blender,我们可以创造一个独特而又精彩的3D游戏。这两个工具为我们提供了强大的设计和开发能力,让我们能够实现自己的想法并与其他人分享我们的创作。无论是游戏开发初学者还是经验丰富的开发者,都可以通过使用这两个工具来创建自己的3D游戏

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值