使用 AI 工具和 Azure 静态 Web 应用构建教育游戏(第 1 部分)

wufei123 2025-01-26 阅读:7 评论:0
探索游戏化学习:一个使用ren'py和ai构建的教育视觉小说游戏 一直以来,将创造力、技术和趣味性融合于一体的理念都深深吸引着我。最近,我尝试通过开发一款教育性质的视觉小说游戏来探索这种可能性。虽然我缺乏游戏开发经验,但我渴望尝试新事物,因...

探索游戏化学习:一个使用ren'py和ai构建的教育视觉小说游戏

一直以来,将创造力、技术和趣味性融合于一体的理念都深深吸引着我。最近,我尝试通过开发一款教育性质的视觉小说游戏来探索这种可能性。虽然我缺乏游戏开发经验,但我渴望尝试新事物,因此我选择使用Ren'Py——一个基于Python的视觉小说引擎——作为我的起点。为了加快开发速度,我利用了AI工具,并使用Azure静态Web应用进行部署,最终创建了一个交互式游戏原型,旨在教授如何使用GitHub Copilot辅助编码任务。考虑到游戏开发的月份是12月,我还为游戏增添了节日氛围,以增强游戏体验。

本文将分享我的开发过程,包括:

  • 使用Ren'Py框架构建游戏。
  • 利用GitHub Copilot、Azure OpenAI服务等AI工具来加速开发并生成游戏视觉素材。
  • 使用GitHub Actions和Azure静态Web应用自动化构建和部署流程。

想体验一下吗?您可以在线试玩游戏,并访问我的GitHub仓库查看源代码。

开发历程

市面上已存在许多关于云技术的教育游戏,涵盖从入门到高级用户的各个层面。例如,微软提供了Microsoft Technical Quest,这是一款基于纸牌的游戏,玩家可以使用Azure服务构建参考架构。其他云服务提供商,如AWS,也提供基于游戏的培训,帮助用户以一种趣味横生的方式学习云解决方案的构建方法。

几年前,我玩过一款名为Azure Space Mystery的游戏,该游戏由微软云倡导者为国际妇女和女孩科学日特别打造。这是一款基于文本的游戏,拥有丰富的图形,并通过关卡挑战来推进游戏进程。我们的目标是让微软学习内容以更具吸引力的方式触达开发者。

尽管缺乏游戏开发经验,我还是想尝试创建一个类似的游戏。我的想法是创建一个基于文本的游戏,教授技术概念,包含简短的测验,并在玩家取得进展时给予成就奖励。鉴于GitHub Copilot近期备受关注,我决定将其作为游戏的核心主题。由于游戏开发始于12月,因此我还加入了节日主题元素。

最终成果是圣诞Copilot任务(Christmas Copilot Quest),玩家可以在游戏中学习如何在Visual Studio Code中使用GitHub Copilot辅助完成编码任务。在圣诞老人风格的Copilot助手Gingerbot的引导下,玩家将以互动的方式了解GitHub Copilot的功能。

使用 AI 工具和 Azure 静态 Web 应用构建教育游戏(第 1 部分)

展示主菜单、对话示例和学习资源页面的游戏屏幕截图

基于文本的游戏构建 技术栈

市面上有很多优秀的工具可用于构建基于文本的游戏,但我有一些关键需求:

  • 支持编写包含测验或选择分支,从而影响游戏流程的非线性故事。
  • 可自定义游戏用户界面。
  • 灵活编写自定义组件。
  • 支持将游戏部署为Web应用程序。

由于Python是我的首选语言,我自然而然地选择了Ren'Py,这是一个基于Python的视觉小说引擎。它满足了我的所有需求,提供了一种易于使用的脚本语言来编写故事、定义测验和自定义UI。它还允许使用Python扩展其内置功能,并将游戏导出到桌面、移动和Web平台。此外,Ren'Py命令行界面(CLI)的可用性使我能够自动化游戏的构建和部署流程。

游戏结构

游戏围绕三个核心组件构建:

脚本:包含游戏的故事和测验。叙述可以是独白或角色间的对话。故事被组织成由标签标识的部分。

使用 AI 工具和 Azure 静态 Web 应用构建教育游戏(第 1 部分)

游戏截图,展示对话示例和供玩家回答的测验

图形用户界面(GUI):涵盖游戏中显示的所有屏幕和菜单,以及使用的视觉元素。Ren'Py脚本语言允许自定义内置屏幕(例如按钮和菜单),并创建新的屏幕,例如:

  • 向玩家显示成就解锁信息的通知屏幕。
  • 显示已获得成就和学习资源的菜单。

使用 AI 工具和 Azure 静态 Web 应用构建教育游戏(第 1 部分)

自定义游戏屏幕:角色选择(左)、成就解锁通知(中)和已获得成就屏幕(右)

自定义Python代码:提供根据游戏需求定制的附加功能。最新版本的Ren'Py支持使用Python 3.9编写自定义组件脚本。游戏中的自定义组件包括:

  • 成就系统,允许玩家通过完成特定任务来获得奖励,并且成就会被持久存储。
  • 角色定义和实用程序功能,使玩家能够选择自己喜欢的角色和名称。
  • GUI实用程序,例如图像转换(例如眨眼效果)以及用Python编写的自定义字体和文本样式。

为了保持游戏的可维护性和可扩展性,这些组件是相互独立的。脚本定义故事,而逻辑则被组织成Python模块,在Ren'Py中称为存储(store)。例如,可以直接从脚本调用根据玩家输入确定玩家姓名的Python函数,如下所示:

label introduction:
    felix "Ah, you must be the new coder Santa called for! What's your name?"

    $ player_input = renpy.input(
        _("(Type your name and press Enter, or press Enter to use the default name, [character_name].)")
    )
    $ player_name = character_utils.determine_player_name(player_input)

    player "I'm [player_name]."
AI工具的集成 使用GitHub Copilot辅助编码

我发现GitHub Copilot对于学习和理解Ren'Py非常有帮助,这是一个我以前从未使用过的框架。尽管Ren'Py并非一个广泛使用的框架,可用于训练的数据可能有限,但GitHub Copilot正确地回答了我的大部分问题,并帮助我理解各种Ren'Py组件的工作原理。一个例子是它建议实现带有图像按钮的角色选择屏幕。

使用 AI 工具和 Azure 静态 Web 应用构建教育游戏(第 1 部分)

GitHub Copilot建议的角色选择屏幕实现

这个建议非常准确,并提供了一个坚实的起点,使我能够快速开发屏幕。然而,Copilot并没有提供向屏幕按钮添加悬停过渡的正确实现。考虑到Ren'Py并非一种广泛使用的语言,这在某种程度上是可以预料的。

使用AI工具生成图像

为了快速创建一个简单的游戏,我没有时间自己设计所有图形。我使用人工智能驱动的图像生成工具来创建游戏中使用的角色和背景图像。我的关键需求是所有图像的风格一致以及节日主题。

我首先尝试了DALL-E 3模型,可以通过Azure OpenAI服务访问。虽然生成的图像质量不错,但我发现保持所有图像风格的一致性具有挑战性。

然后,我转向了Microsoft Designer,这是一个微软推出的基于人工智能的云端图形设计应用程序。它在不同的请求中提供了更一致的结果,更符合我的需求。对于角色创建,我使用了头像文本到图像功能,对于背景,我使用了默认功能。在尝试了多种风格后,我选择了“低多边形”的美学风格,因为它既能提供一致的结果,又能提供与游戏趣味性、游戏化本质相匹配的外观。以下是我用来生成角色图像的提示示例:

“一位棕色头发的风格化女性的低多边形3D肖像,穿着圣诞颜色的衬衫,具有干净的几何形状、平坦的颜色和柔和的灯光,采用白色背景的简约未来主义风格。”

我通过应用滤镜来处理生成的图像,以减少噪点、平滑颜色、去除背景并突出显示多边形的边缘。在某些情况下,我组合了两个图像来创建最终的角色设计,并生成了闭着眼睛的重复图像,以在游戏中产生眨眼效果。

总的来说,我发现这些工具对于快速生成视觉资产非常有帮助。虽然我为每个角色创建了数百个版本(好吧,也许我有点完美主义!),但人工智能工具对于生成符合游戏主题的图像来说非常宝贵。

总结

本文探讨了如何使用基于Python的视觉小说引擎Ren'Py,以及GitHub Copilot、Azure OpenAI服务和Microsoft Designer等AI工具来创建教育游戏原型。接下来是什么呢?我们需要部署该应用程序。幸运的是,Ren'Py提供了一个CLI工具来自动化游戏构建,并且Azure静态Web应用与GitHub Actions无缝集成。在下一篇文章中,我将向您展示如何设置GitHub Actions工作流程来自动化游戏的构建和部署过程。

同时,您可以查看以下资源以了解有关GitHub Copilot和DALL-E 3模型的更多信息:

  • GitHub Copilot基础知识 - 了解AI结对编程
  • 使用GitHub Copilot加速应用程序开发
  • GitHub Copilot聊天食谱
  • 使用Azure OpenAI服务生成图像

以上就是使用 AI 工具和 Azure 静态 Web 应用构建教育游戏(第 1 部分)的详细内容,更多请关注知识资源分享宝库其它相关文章!

版权声明

本站内容来源于互联网搬运,
仅限用于小范围内传播学习,请在下载后24小时内删除,
如果有侵权内容、不妥之处,请第一时间联系我们删除。敬请谅解!
E-mail:dpw1001@163.com

分享:

扫一扫在手机阅读、分享本文

发表评论
热门文章
  • 华为 Mate 70 性能重回第一梯队 iPhone 16 最后一块遮羞布被掀

    华为 Mate 70 性能重回第一梯队 iPhone 16 最后一块遮羞布被掀
    华为 mate 70 或将首发麒麟新款处理器,并将此前有博主爆料其性能跑分将突破110万,这意味着 mate 70 性能将重新夺回第一梯队。也因此,苹果 iphone 16 唯一能有一战之力的性能,也要被 mate 70 拉近不少了。 据悉,华为 Mate 70 性能会大幅提升,并且销量相比 Mate 60 预计增长40% - 50%,且备货充足。如果 iPhone 16 发售日期与 Mate 70 重合,销量很可能被瞬间抢购。 不过,iPhone 16 还有一个阵地暂时难...
  • 酷凛 ID-COOLING 推出霜界 240/360 一体水冷散热器,239/279 元

    酷凛 ID-COOLING 推出霜界 240/360 一体水冷散热器,239/279 元
    本站 5 月 16 日消息,酷凛 id-cooling 近日推出霜界 240/360 一体式水冷散热器,采用黑色无光低调设计,分别定价 239/279 元。 本站整理霜界 240/360 散热器规格如下: 酷凛宣称这两款水冷散热器搭载“自研新 V7 水泵”,采用三相六极马达和改进的铜底方案,缩短了水流路径,相较上代水泵进一步提升解热能力。 霜界 240/360 散热器的水泵为定速 2800 RPM 设计,噪声 28db (A)。 两款一体式水冷散热器采用 27mm 厚冷排,...
  • 惠普新款战 99 笔记本 5 月 20 日开售:酷睿 Ultra / 锐龙 8040,4999 元起

    惠普新款战 99 笔记本 5 月 20 日开售:酷睿 Ultra / 锐龙 8040,4999 元起
    本站 5 月 14 日消息,继上线官网后,新款惠普战 99 商用笔记本现已上架,搭载酷睿 ultra / 锐龙 8040处理器,最高可选英伟达rtx 3000 ada 独立显卡,售价 4999 元起。 战 99 锐龙版 R7-8845HS / 16GB / 1TB:4999 元 R7-8845HS / 32GB / 1TB:5299 元 R7-8845HS / RTX 4050 / 32GB / 1TB:7299 元 R7 Pro-8845HS / RTX 2000 Ada...
  • python中def什么意思

    python中def什么意思
    python 中,def 关键字用于定义函数,这些函数是代码块,执行特定任务。函数语法为 def (参数列表)。函数可以通过其名字和圆括号调用。函数可以接受参数作为输入,并在函数体中使用参数名访问。函数可以使用 return 语句返回一个值,它将成为函数调用的结果。 Python 中 def 关键字 在 Python 中,def 关键字用于定义函数。函数是代码块,旨在执行特定任务。 语法 def 函数定义的语法如下: def (参数列表): # 函数体 示例 定义...
  • python中int函数的用法

    python中int函数的用法
    int() 函数将值转换为整数,支持多种类型(字符串、字节、浮点数),默认进制为 10。可以指定进制数范围在 2-36。int() 返回 int 类型的转换结果,丢弃小数点。例如,将字符串 "42" 转换为整数为 42,将浮点数 3.14 转换为整数为 3。 Python 中的 int() 函数 int() 函数用于将各种类型的值转换为整数。它接受任何可以解释为整数的值作为输入,包括字符串、字节、浮点数和十六进制表示。 用法 int(object, base=10) 其中...