Skip to content

本文是"边玩边学"系列的第一篇,带你在本地启动 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

克隆后,建议先阅读以下关键文件了解项目背景:

安装前置依赖

你需要以下依赖:

  • 容器运行时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 + CCommand + 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 任务:

Steering 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}}"