Appearance
本文是"边玩边学"系列的第一篇,带你在本地启动 Spirit of Kiro 游戏。主要步骤:克隆仓库并切换到 challenge 分支、安装 Docker 和 AWS CLI、部署 Cognito 用户池用于认证、用 Podman/Docker Compose 构建并启动游戏栈、初始化 DynamoDB Local 数据库表。完成后通过 localhost:5173 访问游戏,创建账号并验证游戏可正常运行。环境就绪后即可开始第一个 Kiro 任务:改进游戏主页。
搭建本地开发环境
首先需要在本地启动游戏的客户端和服务端,并连接到 AWS 账户。这样当你用 Kiro 修改代码时,可以实时验证改动效果。
克隆仓库
克隆开源代码仓库并切换到 challenge 分支:
bash
git clone git@github.com:kirodotdev/spirit-of-kiro.git
cd spirit-of-kiro/
git checkout challenge克隆后,建议先阅读以下关键文件了解项目背景:
- architecture.md — 架构概览
- appsec-overview.md — 各组件如何协同工作
安装前置依赖
你需要以下依赖:
- 容器运行时:Docker Desktop 或推荐的 Podman
- AWS 环境:
- AWS Bedrock 模型访问权限:需开通以下至少一个模型的访问权限:
- Amazon Nova Pro
- Anthropic Claude Sonnet 3.7
- Anthropic Claude Sonnet 4
验证依赖安装
运行依赖检查脚本,确认所有工具已正确安装:
bash
./scripts/check-dependencies.sh部署 Cognito 用户池
部署 Amazon Cognito 用户池用于游戏认证(在 AWS 免费套餐范围内):
bash
./scripts/deploy-cognito.sh game-auth构建并启动游戏栈
使用 Podman 或 Docker 构建并启动游戏栈:
bash
podman compose build &&
podman compose up \
--watch \
--remove-orphans \
--timeout 0 \
--force-recreate首次运行可能需要几分钟,后续运行会快很多。
启动成功后,你应该能在容器管理界面看到游戏容器正在运行(以下是 Podman 界面的示例)。
按 Control + C 或 Command + C 停止整个栈。
初始化数据库
游戏栈启动后,会同时启动 DynamoDB Local——一个在本地模拟 AWS DynamoDB 的容器。游戏需要在其中预先创建若干数据表。
保持游戏栈运行,打开新的终端窗口,执行以下命令自动创建所需数据表:
bash
podman exec server mkdir -p /app/server/iac &&
podman cp scripts/bootstrap-local-dynamodb.js server:/app/ &&
podman cp server/iac/dynamodb.yml server:/app/server/iac/ &&
podman exec server bun run /app/bootstrap-local-dynamodb.js验证游戏可正常运行
先测试游戏服务端是否正常响应:
bash
curl localhost:8080应该返回 OK。
然后在浏览器中访问:
localhost:5173你应该看到游戏客户端的主页。注册一个账号,开始游玩。
游戏操作说明
WASD移动,E互动- 拉动红色 "PULL" 拉杆可以随机获得物品
- 按
E拾取物品,按T扔出持有的物品(提示:可以从底部门口扔出) - 将物品带到工作台,按
E放上工作台。将工具墙上的物品点击到目标物品,触发"特性"互动——两者都会发生变化,结果千变万化 - 箱子用于存储多余物品
- 将物品从底部门口扔出,店员会评估其价值并给你钱(他喜欢有趣、罕见、品相好的物品)
- 电脑展示所有被丢弃或出售的物品(你自己的和其他玩家的),可以间接从其他玩家处购买
环境搭建完成后,进入第一个 Kiro 任务:
常见问题
Q:我没有 AWS 账户,可以跳过这一步吗?
AWS 账户是必需的,游戏需要 Cognito 做认证,AI 功能需要 AWS Bedrock 的模型访问权限。不过 AWS 免费套餐可以覆盖绝大部分本教程所需资源,基本不会产生费用。
Q:Docker Desktop 和 Podman 有什么区别,用哪个更好?
两者都可以运行 compose 命令,教程中以 Podman 为例。如果你已经安装了 Docker Desktop,把命令中的 podman 替换成 docker 即可。Podman 是开源的、不需要后台 daemon,在 Linux/macOS 上更轻量。
Q:DynamoDB 初始化失败怎么办?
确认游戏栈正在运行(podman ps 可查看容器状态),然后重新执行初始化命令。如果 server 容器名不是 server,用以下命令确认实际容器名后替换命令中的 server:
bash
podman ps --format "{{.Names}}"