Pokemon Red
2026-03-31
新闻来源:网淘吧
围观:12
电脑广告
手机广告
《宝可梦 红》——你就是训练师
你将直接操作《宝可梦 红》游戏。无需通过中间脚本。你需要启动模拟器服务器,调用其HTTP接口获取游戏画面截图与状态,观察屏幕内容,决定操作指令并发送给模拟器。
首次设置
克隆代码库并安装依赖:

git clone https://github.com/drbarq/Pokemon-OpenClaw.git
cd Pokemon-OpenClaw
pip install pyboy pillow numpy fastapi uvicorn requests
# Place your legally obtained ROM at ./PokemonRed.gb
将POKEMON_DIR环境变量设置为代码库的克隆路径(默认路径为:~/Code/pokemon-openclaw)。
启动游戏会话
# Start emulator server (background process)
cd $POKEMON_DIR && python scripts/emulator_server.py --save ready --port 3456
操作循环流程
每个操作回合按顺序执行以下步骤:
1. 获取游戏状态与截图
curl -s http://localhost:3456/api/state
curl -s http://localhost:3456/api/screenshot -o /tmp/pokemon_current.png
随后通过图像查看工具观察游戏截图。务必先观察再行动。
2. 决策:选择自动导航或手动操作?
行进时使用自动导航功能——该功能将保持阻塞状态直至抵达目标、遭遇对战或陷入卡顿:
curl -s -X POST http://localhost:3456/api/navigate \
-H 'Content-Type: application/json' \
-d '{"destination": "Viridian City"}'
自动导航将返回以下状态之一:
"状态": "已抵达"— 你到了!继续任务。"状态": "战斗中"— 遭遇野外战斗。先战斗,然后再继续导航。"状态": "卡住"— 无法到达目的地。尝试手动按钮或不同路线。"状态": "错误"— 未知目的地或无路径。检查目的地列表。
响应始终包含完整的游戏状态,因此你能准确知道自己的位置。
重要提示:导航阻塞 — 在curl调用上设置较长超时(60-120秒)。
首先检查可用目的地:
curl -s http://localhost:3456/api/destinations
检查哪些地图有路径查找数据:
curl -s http://localhost:3456/api/maps
仅在以下情况回退到手动按钮:
- 导航返回"卡住"或"错误"
- 你在建筑物内进行特定交互时
- 你在对话或菜单中时
3. 手动控制(需要时)
# Move / interact
curl -s -X POST http://localhost:3456/api/press \
-H 'Content-Type: application/json' \
-d '{"buttons": ["up","up","a"], "reasoning": "Walking to door"}'
有效按钮:上下,左,右,a,b,开始,选择. 每回合发送1-5个。4. 战斗 (当状态中 in_battle 为 true 时)
战斗:
- 按a
打开战斗菜单,a再次选择战斗,导航到招式,a确认,然后连按a跳过动画逃跑: - 按Press
一个,然后下,右,一个选择"奔跑",快速连按一个跳过文本 - 检查状态后 — 如果仍然
战斗中,则重复操作
5. 任务追踪
curl -s http://localhost:3456/api/quest # Current objective
curl -s -X POST http://localhost:3456/api/quest/complete \
-H 'Content-Type: application/json' \
-d '{"lesson": "Door is at x=12"}' # Advance step + save lesson
6. 频繁保存
curl -s -X POST http://localhost:3456/api/command \
-H 'Content-Type: application/json' \
-d '{"command": "save", "name": "checkpoint_viridian"}'
关键端点
| 端点 | 方法 | 用途 |
|---|---|---|
/api/state | GET | 从RAM获取游戏状态(位置、队伍、徽章、战斗) |
/api/screenshot | GET | 游戏屏幕的PNG截图 |
/api/navigate | POST | 寻路至指定目的地 |
/api/destinations | GET | 列出所有导航目的地 |
/api/maps | GET | 哪些地图包含寻路数据 |
/api/press | POST | 发送按键操作 |
/api/quest | GET | 当前任务与步骤 |
/api/quest/complete | POST | 标记步骤完成,可选择保存一个经验教训 |
/api/knowledge | GET | 所有已学习的经验教训 |
/api/knowledge/lesson | POST | 添加新经验教训 |
/api/command | POST | 保存/加载/加速指令 |
策略优先级
- 导航优先。进行任何移动时,使用
/api/navigate接口。它会阻塞直到抵达目的地或遭遇战斗——无需轮询。 - 立即处理战斗。如果导航返回
"status": "battle"状态,则进行战斗(狂按A键),然后再次导航至同一目的地。 - 检查任务。始终明确当前目标。不要漫无目的地游荡。
- HP管理。低于30% → 考虑治疗。低于15% → 必须治疗。导航至最近的宝可梦中心。
- 忽略text_active标志。文本检测标志已损坏(始终为真)。不要狂按B键来关闭不存在的文本。
- 频繁保存。每10个回合或完成任何里程碑后保存。
会话模式
子代理会话应遵循以下流程:
- 启动模拟器服务器(如果尚未运行)
- 检查任务状态与目的地
- 进行20-50个回合(根据需要结合导航与手动操作)
- 退出前保存状态
- 报告进度(位置、等级、任务步骤、任何亮点)
将笔记保存在/tmp/pokemon_notepad.txt以确保单次会话内的连续性。
完整游戏策略
请参阅references/game_instructions.md了解《宝可梦红》基础知识:移动、建筑、门、战斗、属性相克、治疗及任务系统。
文章底部电脑广告
手机广告位-内容正文底部


微信扫一扫,打赏作者吧~