《The Adventure Game》是为亚马逊云科技游戏构建者挑战赛所创作的一款基于文本的开放式角色扮演游戏(RPG),设计初衷旨在构建一个多功能的实验平台,不仅支持玩家通过游戏过程本身进行探索,还鼓励对游戏代码进行个性化调整。
本系列文章将从以下方面进行介绍:
游戏机制概述:介绍游戏基本机制。
入门指南(Level 100):详细讲解如何在本地机器上搭建并运行游戏。
进阶指南(Level 200):如何进行基本调整以提升游戏体验。
游戏状态解析(Level 300):深入讲解游戏状态的实际运作方式。
大规模修改(Level 400):演示如何较大规模改动游戏机制。
本篇文章将先介绍游戏机制、入门指南(Level 100)以及进阶指南(Level 200),余下内容将在下篇文章推出。
游戏概念
《The Adventure Game》(不同于20世纪80年代BBC的同名电视节目)是一款角色扮演游戏(RPG),其基本机制与《龙与地下城》(Dungeons&Dragons)类似。游戏本身扮演着故事讲述者或游戏主持人的角色,每次都会引导玩家经历一个独特的故事。玩家在游戏中的决策和行为选择将直接影响游戏故事的发展与走向。每个决策都至关重要,包括那些不寻常的行动,这些决策完全由玩家自主做出,结果也将由玩家自己承担。和所有角色扮演游戏(RPG)一样,建议玩家尽量遵循游戏设定的故事脉络,获得丰富的游戏体验和乐趣。在游戏过程中,当玩家执行某些动作时,故事叙述者可能会采用掷骰子的方式,随机决定玩家命运。
游戏开始玩家可以选择场景,然后便可开始冒险,以下是一些游戏玩法的示例:
关于游戏玩法
以及儿童使用的注意事项:
由于使用了生成式AI,游戏的环境和体验可能不稳定,因此在游戏过程中玩家应当保持谨慎,特别是在触及敏感内容或儿童参与游戏时。建议您不要在游戏中输入任何个人隐私信息以确保安全,也必须确保儿童在成人监护下才能参与游戏。
开始构建
TL:DR;
- Set up a Python environment that runs AWS code.
- Enable access to the LLM in the Amazon Bedrock console page.
- Clone the Python repo.
- From the code folder run pip install -r
- Run main.py
左右滑动查看完整示意
这款游戏是用Python编写的,采用简单的文本模式,因此它可以在本地机器上通过命令行运行。游戏使用了亚马逊云科技服务,特别是Amazon Bedrock来处理生成式AI相关内容。如果您想了解更多细节,请阅读完整篇文章。
设置开发环境
1
Python环境设置
首先,您需要设置一个与亚马逊云科技服务配合使用的Python开发环境,以下是详细设置步骤:
安装Python 3.8或更高版本:如果您尚未安装,可以从python.org下载并安装Python。
建议使用虚拟环境:为了保持环境的整洁,推荐使用虚拟环境来隔离项目的依赖项。
python -m venv venv
激活虚拟环境。
在Windows上运行:
venv\Scripts\activate
在macOS/Linux上运行:
source venv/bin/activate
2
亚马逊云科技的设置和安全
配置Amazon Credentials。
有多种方法可以配置Amazon Credentials,但以下是最简单的入门方法:
1.创建Amazon IAM(Identity and Access Management)用户:
登录到亚马逊云科技管理控制台,并使用管理员账户。
转到Amazon IAM服务。
创建一个新的Amazon IAM用户。
启用“程序化访问”选项,以便生成访问密钥。
2.应用最小权限访问:
创建一个自定义策略,仅允许访问Amazon Bedrock服务。
以下是一个最小权限策略示例(请将其保存为.json文件):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel"
],
"Resource": "*"
}
]
}
将此策略附加到新的Amazon IAM用户。
3.获取凭证:
创建用户后,您将收到访问密钥ID和秘密访问密钥。
将它们保存在安全的地方,因为您将无法再次看到秘密访问密钥。
4.配置本地环境:
根据提示输入访问密钥ID和秘密访问密钥。
设置默认区域。
将输出格式设置为.json。
安全注意事项:
切勿将Amazon Credentials提交至源代码控制中。
不要共享访问密钥。
对于企业环境,建议使用Amazon IAM Identity Center。
对于生产部署,考虑使用Amazon IAM角色而不是访问密钥。
定期轮换访问密钥。
如果愿意,您可以将凭证存储在环境变量中:
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_DEFAULT_REGION=your_region
左右滑动查看完整示意
其他设置方法:
Amazon CLI 凭证文件(~/.aws/credentials)。
Amazon IAM Identity Center。
环境变量。
Amazon SDK凭证提供者。
3
Amazon Bedrock访问
游戏使用Amazon Bedrock进行生成式AI叙事,您需要进行以下操作:
登录亚马逊云科技控制台。
导航至Amazon Bedrock控制台。
点击左侧导航中的“模型访问”。
查找并启用语言模型。(游戏最初使用Anthropic的Claude 3.5 Haiku,但您也可以尝试使用Amazon Bedrock中的其他模型)。
点击“保存更改”。
注意:您需要一个具有适当权限的亚马逊云科技账户。
4
获取游戏代码
获取代码有两种方法:
方法1:使用Git克隆。
如果您安装了Git,可以克隆存储库:
git clone https://github.com/build-on-aws/amazon-bedrock-adventure-game.git
cd amazon-bedrock-adventure-game
左右滑动查看完整示意
方案2:下载ZIP文件。
如果您不熟悉Git,请执行以下操作:
访问游戏的GitHub页面。
游戏的GitHub页面
https://github.com/build-on-aws/amazon-bedrock-adventure-game
点击绿色的“代码”按钮。
选择“下载ZIP”。
将下载的ZIP文件解压缩到您喜欢的位置。
打开终端或命令提示符,并导航到解压后的文件夹。
5
安装依赖项
激活虚拟环境后,打开命令行终端,切换到项目文件夹并安装所有必需的软件包:
pip install -r requirements.txt
这将安装所有必要的Python软件包,包括Amazon SDK(boto3)和游戏需要的其他依赖项。
6
运行游戏
运行以下命令,即可开始运行游戏:
python main.py
常见故障排除
如果遇到错误,请您进行以下操作:
确保虚拟环境已激活。
验证是否已正确配置您的亚马逊云科技凭证。
检查是否已在Amazon Bedrock中启用正确的模型。
确保所有依赖项都已正确安装。
如何运行游戏(Level 100)
这款游戏是一款文字冒险游戏,它使用生成式AI来创建互动故事体验。传统的文字冒险游戏使用预先写好的回复和固定的地图,而这款游戏则使用Amazon Bedrock服务动态创建故事。以下是该游戏工作原理的高级概述:
基本结构
游戏使用图形结构维护“世界”,其中房间相互连接。
每个房间可以包含:
可以拾取的物品。
可与之互动的NPC(非玩家角色)。
所见事物的描述。
通往其他房间的出口。
游戏循环
输入您想要执行操作的指令。
生成式AI将解读指令,并决定该做什么。
生成式AI使用Agent与工具进行如下操作:
创建或修改房间。
移动玩家角色。
添加或删除物品。
控制NPC。
生成式AI的作用
生成式AI就像《龙与地下城》中的地下城主,具有以下作用:
创建故事和环境。
控制NPC对玩家的反应。
决定玩家尝试做某事时会发生什么。
跟踪哪些事情是可能的或不可能的。
保持世界和叙事的连贯性。
其它事项
游戏设计使用的几个关键组件:
一个可追踪所有物品位置的游戏状态管理器。
一个允许生成式AI修改游戏世界的工具系统。
一个提供生成式AI功能的Amazon Bedrock。
一个用于玩家交互的简单命令行界面。
这种设计的魅力在于,游戏世界能够灵敏地响应玩家的行动,从而在每次游戏过程中编织出一个独特的故事。与那些遵循固定脚本的传统文字冒险游戏不同,这款游戏允许玩家在游戏过程中实时塑造冒险,并以富有创意的方式回应玩家选择。
进行简单更改(Level 200)
在一开始开发这款游戏,目标就是确保每个无论是否具备编程能力的人,都能根据需求自定义游戏。其中,系统提示功能非常强大,尽管只是一个控制生成式AI行为的文本文件,却完美结合了生成式AI性格和规则手册,下文将为您详细介绍。
系统提示的魔力
在任何文本编辑器中打开system.txt文件,您会发现它都呈现为一组指令集,这正是其神奇所在:它能够指导生成式AI定义游戏规则,包括设定“您是地下城主”的角色、细致描绘场景、处理玩家行为的具体规则。这一设置的独到之处在于,您只需简单编辑这个文件,就能彻底重塑游戏玩法和体验,从而为每位玩家带来独一无二的冒险旅程。
例如,您希望游戏无论在什么主题下都使用海盗的声音,您只需在系统提示中找到“书写风格”部分并修改即可,而无需修改任何代码:
Original:
Writing Style:
- Use active voice
Modified:
Writing Style:
- Use the sing song voice of a pirate shanty!
左右滑动查看完整示意
通过这种方式,游戏的整体风格会发生彻底变化。
体验游戏
系统提示不仅仅能改变写作风格,如果您想要更长、更详细的描述,可以查看下面的代码:
Original:
Keep all descriptions under 3 sentences
Focus on the most important or interesting details
Modified:
Provide rich, detailed descriptions up to 5 sentences
Include sensory details about sights, sounds, and smells
左右滑动查看完整示意
您也可以改变游戏处理机会和技能检查的方式:
Original:
If the player is performing an action that requires skill or luck, roll the dice
Modified:
Roll dice for all social interactions
Use d20 for physical challenges and d12 for magical events
左右滑动查看完整示意
您甚至可以改变游戏世界的初始设置:
Original:
Create at least one room with a unique ID and brief description
Modified:
Create three connected rooms forming a hub area
Each room must contain at least one interactive object
左右滑动查看完整示意
安全进行修改
在开始编辑之前,请您注意以下事项:
务必备份原始system.txt文件。因为修改过程中很容易过于投入,导致遗忘最初的版本。
一次只修改一个部分。尽管生成式AI在执行指令方面相当智能,但有时它的解读方式可能会出乎意料。
指令要尽量具体。明确给出您希望哪种类型的幽默,比“让它更有趣”这样的指令更好。此外,检查修改后的内容是否与提示中的其他部分相冲突——生成式AI会尽力同时遵循所有指令,这可能会导致一些有趣但出乎意料的结果。
发挥创意
当您对基本修改熟悉后,可以开始尝试更具创意的调整。添加新的部分来处理特定的情境,并提供明确的示例,说明在某些情况下希望生成式AI如何回应,您甚至可以为不同的游戏类型或风格创建不同的系统提示。
系统提示本质上是生成式AI的操作手册——它会严格遵循这些指南。因此,这使得它成为一个极其强大的工具,让您能够无需理解背后代码也可定制游戏。您可以尝试添加更多关于游戏主题的细节,不论是打造恐怖游戏、太空歌剧、还是浪漫喜剧,只需编辑一个文件就可以实现。
有了Amazon Bedrock,您可以充分发挥自己的想象力!当然,还有在开始实验之前记得备份文件!
关于利用Amazon Bedrock开发游戏的余下进阶内容,将在下篇文章继续分享,敬请持续关注!
星标不迷路,开发更极速!
关注后记得星标「亚马逊云开发者」
听说,点完下面4个按钮
就不会碰到bug了!
点击阅读原文查看博客!获得更详细内容!