手搓游戏 —— 生成式 AI 助手 Amazon Q Developer 初体验

一、前言

实验时长: 本实验预计可以在 1 小时内完成。

近年来,人们对使用人工智能改进软件开发越来越感兴趣。生成式人工智能编码助手和聊天机器人是该领域最有前途的新发展之一。这些工具使用机器学习来生成代码并以自然语言格式回答有关代码的问题。这使得所有技能水平的开发人员都可以轻松使用它们。

Amazon Q Developer 是一款生成式人工智能 (AI) 支持的对话助理,可以帮助您理解、构建、扩展和操作 Amazon 应用程序,您可以询问有关 Amazon 架构、最佳实践、文档、代码等的问题。

1.1、手册内容

本手册的内容包括:

在控制台中快速体验和了解 Amazon Q 本地实验环境准备 基于 Amazon Q 协助梳理项目逻辑,快速掌握项目全貌 基于 Amazon Q 解释、调试、优化、构建游戏应用 基于 Amazon Q 修复程序漏洞

1.2、实验内容

参与者将使用 Amazon Q Developer(一种生成式 AI 编码助手和聊天机器人)来开发基于 Python 语言的像素沙盒开放世界游戏应用程序。 参与者将使用 Amazon Q 对像素沙盒开放世界游戏代码执行各种任务,例如解释代码、调试代码和优化代码。

本次实验使用的源代码为国外开发者 fogleman 在 GitHub 上传的开源代码。(GitHub 链接: https://github.com/fogleman/Minecraft ) 我们在源代码的基础上进行了一些修改以获得更好的实验体验。 在此版本的像素沙盒开放世界游戏游戏中,玩家可以进行简单的移动,跳跃,挖掘以及放置方块。

二、实验环境准备

项目运行需要提前准备如下环境:

  • Python 3.10.11 或更高级版本
  • pyglet 1.5.27
  • VS Code IDE

2.1、获取项目工程

点击 “下载项目安装包” 按钮,即可下载此项目的压缩包内容。

同时,点击 “立即注册” 按钮即可免费注册属于你的亚马逊云科技海外区账号,开启个性化的系统构建之旅,进一步探索更广泛、更深入的云服务领域并保留实验中构建的系统应用,尽情享受云上构建的无限可能!

扫码登陆:

填写邮箱:

如果您之前没有填写过邮箱,则需要填写一下邮箱,并勾选隐私协议,点击前往实验,及可进入实验室

2.2、验证 Python 环境

如果本地没有 Python 环境需要先下载 Python 和 pyglet。 本实验使用的 Python 版本是 3.10.11 或更高级版本,pyglet 版本是 1.5.27(此处版本非常重要) Python 环境安装:

Windows:

直接使用 python.orginstaller (https://www.python.org/downloads/)

macOS:

先安装 brew (https://docs.brew.sh/Installation) 然后用 brew 安装 python:

brew install python3

在 VS Code IDE 中底部中按住鼠标往上拖拽即可唤出终端

pyglet 安装:

pyglet 版本非常重要,高版本会导致程序无法运行。
即使已经安装高版本的 pyglet 也可以使用以下指令降低版本\

pip install pyglet==1.5.27 

或者(如果 pip “command not found” ):

python3 -m pip install pyglet==1.5.27

输入如下命令查看环境是否正常:

python --version
pip show pyglet

正常版本显示如图:

2.3、安装 Amazon Q 扩展

  1. 导航到 VS Code IDE 左侧窗格中的 扩展 图标
  2. 在搜索栏中,输入 Amazon Q 并点击 Install

2.4、设置 Builder ID

在本次实验中,您将使用 Builder ID 连接到 Amazon Q,这将允许从 Amazon 访问某些开发人员工具和服务,Builder ID 可免费使用。

  1. 在 Visual Studio Code 的 Amazon Q 扩展中,选择免费使用。选择继续。
  1. 出现提示是否要使用代码打开外部网站,选择打开。
  1. 将打开一个浏览器选项卡并显示创建 Builder ID 页面。输入您的电子邮件地址并选择下一步。
  1. 将出现您的姓名字段。输入您的姓名并选择下一步。
  1. Amazon 会将确认码发送到您提交的电子邮件地址。在电子邮件验证屏幕上输入代码并选择“验证”。
  1. 在选择您的密码屏幕上,输入密码并确认,然后选择创建 Builder ID
  2. 浏览器选项卡中会显示一条消息,要求您允许 Visual Studio Code 的 Amazon Q 扩展访问您的数据,选择允许。
  1. 返回 VS Code 即可正常使用

看到 Chat 页面如下图所示就是链接成功

  1. Amazon Q 对话测试
What programming languages does it support?

三、基于 Amazon Q 协助梳理项目逻辑,快速掌握项目全貌

3.1、快速理解 main.py

Amazon Q 可以快速帮助我们梳理项目逻辑,从而快速掌握项目全貌,我们可以打开项目根目录的 main.py 文件,在 Amazon Q Chat 面板中,询问:

Can you summarize main.py for me? What does this program do? 

我们将看到文件的简短描述。在构建聊天历史记录时,在问题中包含文件名会有所帮助,因为这将成为上下文的一部分。

3.2、快速梳理控制器逻辑

Amazon Q 会使用聊天历史记录作为上下文的一部分。如果您发现 Q 没有做出适当的反应,则可能是由于当前上下文所致。在这些情况下,通常最好清除聊天或打开新的聊天选项卡,您可以通过键入 /clear 来清除聊天。

现在我们知道这是一个由 Python 语言编写的像素沙盒开放世界游戏了。让我们看看 Amazon Q 如何理解应用程序功能。

在不清除聊天的情况下,我们在 Chat 页面中进行对话,对话内容如下:

Based on the code in main.py, what are the game's controls?

四、基于 Amazon Q 解释、调试、优化、构建生成式 AI 游戏应用

4.1 启动像素沙盒开放世界程序

在对代码有了整体的了解后,我们可以快速尝试游玩这款像素沙盒开放世界。 在 VS Code IDE 的 终端 中,执行以下命令:

python main.py

程序将会自动打开游戏窗口。由于地图是随机生成的,每个人看到的地形将会不同。

操作方式:
按下 wasd 控制角色前后左右移动
按下 空格键 控制角色跳跃
按下 左键 破坏方块
按下 右键 放置方块
按下数字 123 切换即将放置的方块
按下 tab 即可切换飞行模式
按下 esc 释放鼠标后,点击右上角的 X 即可关闭游戏

当我们来到地图边界向下看时,我们会看到一片虚空。

如果我们选择一跃而下,我们的人物将会持续不断地坠落。 如果想要再次回到地面,我们需要飞行很长一段时间。 我们可以通过开发坠落后传送的功能来避免这糟糕的游戏体验。

4.2 在 update() 中实现传送功能

为了实现掉出世界后传送的功能,我们需要不停地检测角色当前的 y 坐标 。 当 y 坐标 低于某一特定值(例如-10)后,程序应将角色传送到出生点 (0,0,0)。 我们让 Amazon Q 来帮助我们实现这个功能,先按⌘+I Mac)或 Ctrl+I Windows),然后在输入框中对选中的代码进行提问,例如:

How can I change the _update() function in main.py so that if the player's y position is below -10, they are returned to the starting point (0,0,0)?

Amazon Q为我们实现如下代码:

   # Reset position if player falls below y = -10
   if y < -10:
       x, y, z = 0, 0, 0
       self.dy = 0

再次打开游戏并且在边界跃下,我们会发现角色被传送回到出生点。 但是比起出生点,传送到边界似乎更符合逻辑。 让我们看看 Amazon Q 能不能帮助我们改进一下代码。 在 Amazon Q Chat 面板中,询问:

How can I modify the _update() function in main.py so that if the player's y position is below -10, they are teleported to the closest surface block on the map? Write additional functions to calculate distances, if necessary.

我们将  Amazon Q_update() 方法中的改动 acceptmain.py 中。

    # Reset position if player falls below y = -10
    if y < -10:
        # Find closest surface block and place player on top
        surface_y = self.find_closest_surface(x, z)
        x, y, z = x, surface_y, z
        self.dy = 0

再次运行游戏并在边界跃下,我们会发现人物被传送到了方块中。

五、 基于 Amazon Q 修复代码漏洞

5.1 定位并修复代码漏洞

在游玩中我们发现,当玩家传送到最近的地面方块时并没有正确传送到地面上,而是卡在了方块中。 我们让 Amazon Q 来帮助我们修复这个漏洞。先按⌘+I Mac)或 Ctrl+I Windows),然后在输入框中对选中的代码进行提问:

When the player was teleported, they were stuck inside a block. Can you fix this bug, so the player is always placed on TOP of the closest block? Write new code for _update() in main.py to fix this.

我们将  Amazon Q_update() 方法中的改动 acceptmain.py 中。

        # Reset position if player falls below y = -10
        if y < -10:
            # Find closest surface block and place player on top
            surface_y = self.find_closest_surface(x, z)
            # Add PLAYER_HEIGHT + 1 to ensure player is fully above the block
            x, y, z = x, surface_y + PLAYER_HEIGHT + 1, z
            self.dy = 0
            # Do an additional collision check to ensure player isn't stuck
            x, y, z = self.collide((x, y, z), PLAYER_HEIGHT)

再次进入游戏并在边界跃下,我们会发现人物被正确传送到了方块上

六、总结

本章实验主要是引导大家如何在控制台中使用 Amazon Q 来了解 Amazon 服务的详细内容,通过在 IDE 中安装 Amazon Q 扩展加速软件应用的开发,解决开发全流程中的各种问题;最后也欢迎大家一起探索 Amazon Q 更多的功能,为工作中赋能增效降本!

现在,是时候将所学付诸实践了。轻轻一点,轻轻一点,“注册海外账号”,立即免费踏入属于您的云端构建世界。作为新注册的您,更能体验到长达12个月的免费使用权,涵盖云计算、云数据库、云存储与前沿的生成式 AI 服务等 100 余种云产品与服务。更值一提的是,您还将全面享受亚马逊云科技的海外区域节点,为您的实战构建之旅铺设坚实的基石。不再等待,立即开启您的云上探索之旅吧!

同时,在云上探索实验室中,我们还有更多丰富多彩的实验内容,让您的学习之旅永不止步。期待您的热情参与,共同体验这场技术的盛宴,一起成长,一起探索更广阔的科技天地。

更多精彩内容,尽在亚马逊云科技!

您的支持是对我最大的鼓励!

发表于: 作者:憧憬。
关注互联网以及分享全栈工作经验的原创个人博客和技术博客,热爱编程,极客精神
Github 新浪微博 SegmentFault 掘金专栏