docs: 验收技能跟上 SQLite 存档——预置存档改塞库行,加了别动共享端口的提醒

This commit is contained in:
snowy-yang committed 2026-09-19 19:11:27 +08:00
1 parent bc3ae96a38
commit cb292f9f53
1 file changed
+11 -4
@@ -34,10 +34,13 @@ bench 里带调用计数器,计数变红说明轻量路径被改回重路径
`run_in_background: true` 跑前台服务器,验完再停掉。 `run_in_background: true` 跑前台服务器,验完再停掉。
```bash ```bash
# 1) 预置存档:想验"买得起"的路径,就先塞一份有钱的档。 # 1) 预置存档(SQLite,v2 起):想验"买得起"的路径,就先塞一行有钱的档。
# farm_id 直接映射到 <save-dir>/<farm_id>.json;字段缺失一律走默认值, # python -c "
# 所以最小延迟 {version:2, state:{gold,level}} 就够。 # from farm.models import GameState
# 必须在同一条命令里 mkdir -p 好目录再写文件。 # from farm.storage import save_state
# st = GameState(); st.gold = 5000; st.level = 5
# save_state(st, '.e2e-saves/farm.db', 'boss')"
# 字段缺失一律走默认值;老 JSON 档也可以直接丢进 --save-dir,启动时自动迁移。
# 2) 起服务器(tick 小一点,3 秒一天) # 2) 起服务器(tick 小一点,3 秒一天)
uv run main.py serve --port 8799 --tick 3 --save-dir .e2e-saves uv run main.py serve --port 8799 --tick 3 --save-dir .e2e-saves
# 3) 用 RemoteFarm 驱动,跑完删掉脚本和 .e2e-saves/ # 3) 用 RemoteFarm 驱动,跑完删掉脚本和 .e2e-saves/
@@ -49,6 +52,10 @@ uv run main.py serve --port 8799 --tick 3 --save-dir .e2e-saves
`while True: client.snapshot()` 会永远读到同一份旧数据——服务器在推进, `while True: client.snapshot()` 会永远读到同一份旧数据——服务器在推进,
看起来却像卡死。非实时客户端必须自己调 `client.refresh()` 再读 `snapshot()`。 看起来却像卡死。非实时客户端必须自己调 `client.refresh()` 再读 `snapshot()`。
TUI/网页走 SSE 所以没这个问题。 TUI/网页走 SSE 所以没这个问题。
- **端口上可能有别人的服务器。** 8765 是默认端口,用户自己(或另一个 checkout)
起的实例可能正在上面跑、里面还有玩家进度。动手前先看 `/api/farms` 里有没有
不认识的活跃牧场;有就换端口验,**别 stop 它**。判断一个实例是不是本工作区
的代码,看它的存档目录在不在这个项目里(`saves/farm.db` 的 mtime 动不动)。
- **作物会缺水停长。** 天气随机消耗水分(晴 1 / 多云 0 / 干旱 2), - **作物会缺水停长。** 天气随机消耗水分(晴 1 / 多云 0 / 干旱 2),
等成熟的循环里要盯水分补浇,否则 120 秒也等不到成熟。这也顺带证明了 等成熟的循环里要盯水分补浇,否则 120 秒也等不到成熟。这也顺带证明了
天气→浇水这条链真的在起作用。 天气→浇水这条链真的在起作用。