main)和试玩线(试玩站自动发布用的那条,叫 cursor/godot-chinese-remake-5c3a)。试玩站只显示试玩线上的内容。内容已合进试玩线;自动通关检查也已跟上。10月18日凌晨:机器能打到结局,我也在真浏览器里打到了结局;只剩开局两个灰按钮要不要保留等你定。做到什么算完成
| 目标 | 具体说 | 怎么判断做到了 | 现状 |
|---|---|---|---|
| 开局部分能玩 | 从黑屋子生火,到遇见建造者、伐木、盖小屋、出门探索,能完整玩一遍 | 打开试玩站照着说明玩 | 已做到 |
| 原版核心内容搬完 | 村庄经济到结局都做进新版,并进试玩线 | #16–#27 经 #36 进试玩线 | 已做到 |
| 能收集玩家数据 | 操作和进度会自动上报 | 已在试玩线上做好并实测过 | 已做到 |
| 两条线内容一致 | 试玩线拿到主线核心内容 | 试玩线相对主线:只超前、不落后 | 已做到 |
| 没有被遗忘的半成品 | 没人管的分支已处理 | 悬挂分支已删除 | 已做到 |
| 自动通关检查跟上新世界 | 检查脚本用地标/结局的新名字,并回到默认套件 | #37 合入;合入前无界面机器通关 15/15 通过 | 已做到 |
| 机器从头打到结局 | 自动通关脚本走完全部关卡并看到结局文字 | 10月18日:15 关全过,结局文字正确,重开正常 | 已做到 |
| 整套自动检查全过 | 页面布局、无障碍、极端情况、数据上报、截图对比等 | 10月18日:一条命令跑完 330 项,过 325 项;没过的 4 项是开局截图对比(等你定),1 项是以前就有的时好时坏检查 | 等你定 |
| 网页上打到结局 | 在真浏览器里打开试玩站玩到结局,确认画面和流程 | 10月18日:我在试玩站从生火打到结局,结局画面正常,浏览器没有报错;截图在「需要你处理」第 4 条 | 已做到 |
| 整套检查一次跑完不崩 | 在内存小的机器上一条命令跑完全部检查 | 10月18日:约 4 分 42 秒跑完,没有崩(#38) | 已做到 |
不做什么
- 不把试玩线并进主线(只往试玩线里搬)。
- 不把任何密码、密钥写进代码或这个页面。
- 不给其它临时分支开自动发布。
- 不编造没查到的状态。
进展一览
| 顺序 | 内容 | 谁 | 现状 |
|---|---|---|---|
| 第 0–3 步 | 初始重制、试玩线打基础、核心内容进主线、试玩线后续改进 | — | 已完成 |
| 第 4 步 | 主线内容合进试玩线(#36);删除没人管的分支 | — | 已完成 |
| 第 5 步 | 更新自动通关检查脚本并放回默认套件(#37) | — | 已完成 |
| 第 6 步 | 10月18日凌晨整体复查:机器通关 + 整套自动检查 | 我 | 已完成 |
| 第 7 步 | 复查发现的第 2、3、4 件:检查一次跑完不崩、加“真浏览器打到结局”检查、在试玩站打到结局(#38) | 我 | 已完成 |
| 第 8 步 | 开局两个灰按钮留不留(第 1 件) | 你来定,我来做 | 等你定 |
第 7 步:检查一次跑完 + 网页上打到结局 已完成
#38 — 检查分组跑不再崩,加“真浏览器打到结局”检查verify: low-memory split suite + browser run to the ending。合入时间:10月18日 05:57 Asia/Taipei。合并提交:ab37c206ef。只改检查脚本和说明,不改游戏,也没动开局灰按钮和对照截图。
| 做了什么 | 结果 |
|---|---|
| 整套检查一次跑完 | 现在每一组检查各自开一个新浏览器、一组跑完关掉再跑下一组,不会同时占很多内存。改完后一条命令跑完:约 4 分 42 秒,没有崩,330 项过 325 项。没过的:4 项开局截图(第 1 件,等你定)、1 项“底部按钮挡住消息”的布局检查(改动前的版本单独跑 3 次也挂 1 次,是老毛病)。 |
| 新检查:真浏览器打到结局 | 打开试玩站,真的点「生火」;中间用和通关脚本一样的打法、以游戏自带的最高 20 倍速在网页里推进;最后飞船起飞、太空躲陨石、结局这一段在网页里实时玩(真的点「原速/加速」「点火起飞」,约 30 秒飞行)。19 项全过,用时约 72 秒,已放进默认检查。 |
| 结局画面 | 结局面板出现:「终局 · 本局得分: 71718 总分: 71718 · 重启」,消息里有「信标轻轻脉动,飞船滑过太空。坐标已锁定。只能等待。」浏览器没有报错。 |
技术细节(我怎么查的)
node tools/verify/run.mjs(默认分进程,对线上试玩站)→ exit 1,330 checks / 5 failed:screenshot-diff pixel-360/390/768/1024 + cdp-layout pixel@1280 toolbar-notes。- cdp 单独跑:本分支 1 挂 1 过;改动前(
40d4763)3 次:过、过、挂(pixel@1024 toolbar-notes)。 tools/verify/browser-ending.mjs:policy 在页面里跑window.__ADR_GAME,测试用Date.now偏移 + 固定随机种子 7;上报请求在本地拦下,不进试玩数据表。- PR 检查:CodeRabbit(跳过)、PR Lens(通过)、Vercel(Ignored Build Step);仓库没有 GitHub Actions。
playthrough.mjs改动前后都是 15/15、分数 75993。
第 6 步:10月18日凌晨整体复查 已完成
| 查了什么 | 结果 |
|---|---|
| 自动通关脚本(只跑游戏逻辑,不开浏览器) | 打到结局,15 关全过;重开正常;用时约 48 秒;分数 75993。结局文字:「信标轻轻脉动,飞船滑过太空。坐标已锁定。只能等待。」 |
| 整套自动检查(对着线上试玩站) | 307 项过 303 项。没过的 4 项:开局截图在 4 种屏幕宽度下和旧对照图差太多(手机 360 宽差 4.6%、390 宽差 3.8%、平板 768 宽差 1.57%、1024 宽差 2.5%;允许最多 1.5%)。原因是开局多了两个灰按钮,见「需要你处理」第 1 条。 |
| 整套一次跑完 | 有一次中途页面崩了(在“极端情况”那组),很可能是这台机器内存不够(只剩约 2GB)。把那组单独再跑:43 项全过。 |
| 真人手点(我做的) | 在试玩站点生火正常,浏览器没有报错。没有玩到结局。 |
技术细节(我怎么查的)
node tools/verify/playthrough.mjs→ 15/15,restart OK,score 75993,约 48s。node tools/verify/run.mjs(对线上站)→ 307 checks / 303 passed;失败项 screenshot-diff pixel-360/390/768/1024。- 分组重跑(out/suite-split-summary.txt):cdp 0、screenshots 1、a11y 0、extremes 0(43/43)、telemetry/story/onboarding/playthrough/classic-playthrough/income 0。
- 日志:
/workspace/adarkroom-playthrough/out/(在我的工作机上)。 - 仓库里没有 GitHub Actions 运行记录;#36、#37 上的检查只有 CodeRabbit(已跳过)、PR Lens(通过)、Vercel(Ignored Build Step 取消)。
第 5 步:通关检查跟上新世界 已完成
#37 — 通关脚本改用迁移后的地标与结局状态verify: 通关脚本改用迁移后的地标与结局状态。合入时间:10月17日 20:27 UTC。合并提交:40d476346e。
已经弄清楚的
- 只改检查脚本和说明,不改游戏画面或玩法代码。
- 铁矿/煤矿等旧名字已改成现行名字;起飞、结局、转生等状态名也已对齐。
- 脚本重新放回默认检查套件;合入前无界面通关 15/15 通过,默认套件抽样也通过。
- 试玩线相对主线:超前 12、落后 0。
第 4 步:主线 → 试玩线 已完成
#36 — 把主线上村庄经济到结局等内容单向合进试玩线。合并提交:6364da99d2。
第 2 步:核心内容(先在主线) 已完成
| 编号 | 做了什么 | 合入日期 |
|---|---|---|
| #16 | 村庄经济:建筑、工人、熏肉Village economy batch 1 | 10月12日 |
| #17 | 内容搬运的审查规则和自动检查Migration review skill | 10月12日 |
| #18 | 工坊:工具、武器、升级Workshop crafts batch 2 | 10月12日 |
| #19 | 贸易站:原版所有可买商品Trading post batch 3 | 10月12日 |
| #20 | 房间和野外的随机事件Room and outside events batch 4 | 10月12日 |
| #21 | 野外战斗:地图、遭遇、武器、技能World combat batch 5 | 10月12日 |
| #22 | 地标和特殊场景Landmarks and setpieces batch 6 | 10月12日 |
| #23 | 飞船和太空Ship and space batch 7 | 10月12日 |
| #24 | 制造机和图纸Fabricator and blueprints batch 8 | 10月12日 |
| #25 | 刽子手、结局、重玩奖励和分数Executioner, ending, prestige, and score batch 9 | 10月12日 |
| #26 | 小屋住满时的提示Hut cap notification | 10月12日 |
| #27 | 修复玩家数据上报时的假报错Drain playtest_events bodies | 10月12日 |
第 3 步:试玩线的后续改进 已完成
| 编号 | 做了什么 | 合入日期 |
|---|---|---|
| #28 | 每条玩家数据带上游戏版本号,并加数据检查Stamp client_version… | 10月13日 |
| #29 | 真人试玩时自动检查数据有没有传上来live-play telemetry check | 10月13日 |
| #30 | 检查改进建议写得是否规范pm-recommendation-hygiene | 10月13日 |
| #31 | 开局引导:屏幕上一直显示当前目标Early-game onboarding goal line | 10月13日 |
| #32 | 补全中后期内容,并自动检查能否通关补全中后期并加入确定性通关门禁 | 10月13日 |
| #33 | 上报存档快照(只用来分析玩家行为)save_snapshot telemetry | 10月13日 |
| #34 | 去掉网页强制滚动的外框和像素画面的金边fix web scroll shell | 10月14日 |
| #35 | 改动申请模板要求附上改前/改后对比画面PR template Before/After | 10月17日 |
技术细节(我怎么查的)
- 开放 PR → 0。
- #37 已合并进
cursor/godot-chinese-remake-5c3a;merge commit40d476346e3fdf18c8dfea77305383f61b0e72ca;mergedAt 2026-10-17T20:27:27Z。 - compare main…live → status ahead, ahead_by 12, behind_by 0。
- #37 正文:playthrough 15/15 exit 0;重新进入默认
run.mjs。 - Vercel:#37 对应部署状态为 CANCELED;含 #36 游戏内容且 READY 的预览为
https://adarkroom-jo5t9utr5-nyn5255-8475s-projects.vercel.app。
需要你处理(1 件)
1. 开局多了两个灰按钮,导致截图检查没过 你来定
怎么回事:现在一打开游戏,顶部除了「小黑屋」,还会出现两个灰色、点不了的「野外」「漫漫尘途」按钮。之前开局只有「小黑屋」,其它按钮等解锁了才出现。
哪来的:10月13日 #32 在试玩线上加了“没解锁就不显示”的写法;10月14日 #34 存的对照截图就是只有「小黑屋」的样子。主线一直是“显示灰按钮”的写法。10月18日 #36 把主线合进试玩线时,界面这段代码采用了主线的版本,“不显示”那几行被去掉了。#36 的说明里写的是“界面跟试玩线”,没有提到这个变化,所以看起来不是有意改的,是合并时顺带的。
为什么重要:新玩家开局看到两个点不了的按钮,可能会困惑,也会提前剧透后面有什么;同时截图检查会一直报红,以后真出问题反而不容易发现。
选项:
- A. 藏起来:恢复 #36 之前的样子,没解锁就不显示。截图检查自然恢复,不用改对照图。
- B. 保留灰按钮:认为这是好的提示(让玩家知道还有别的地方),我把 4 张对照截图换成新样子。
我的建议:A。这是原来试玩线的设计,也更接近原版“一步步揭开”的感觉,而且合并说明里本来就说界面要跟试玩线。
已经办完的(10月18日凌晨)
2. 整套自动检查一次跑完时崩过一次 已办完
按建议 A 改了检查脚本(#38):每组检查各开一个新浏览器、跑完就关。改完一条命令跑完全套,约 4 分 42 秒,没有崩。
3. 自动通关脚本没有真正打开试玩站 已办完
按建议 A 加了一项检查(#38):在真浏览器里打开试玩站、打到结局、确认结局画面出现并截图。19 项全过,每次约 72 秒,以后跑整套检查都会带上。
4. 在网页上玩到结局 我替你玩了一遍
用上面那项检查在试玩站上从生火一直玩到结局(飞船起飞到结局这段是实时玩的)。结局画面正常,浏览器没有报错。下面是结局和太空飞行的截图:
截图里我看到的画面问题(都还没改;想改哪个告诉我):
- 太空飞行时,右边「库存」框压在飞行区域上,飞行框右边一截被盖住(见上图)。
- 后期库存很长,在常见笔记本屏幕(1280×800)上超出底部,飞船、太空、结局画面都要往下滚才看全。
- 顶部页签那一排和下面的分隔线之间空出一大块;村庄画面里「生火间」下面的选中横线跟页签分开了。
- 有个敌人名字没翻译:硫磺矿战斗记录里出现「veteran倒下了。」
- 结局画面上方仍显示全部页签(生火间、中型村落……),看起来还能点进去。
技术细节(我怎么查的)
- 开局按钮的写法在
godot/build/web/ui.js的renderHeader()。 git log -S:隐藏未解锁按钮的几行由cc27e8b(#32,2026-10-13)加入;合并提交86a6983(#36)中被删除。- 对照截图
tools/verify/baselines/pixel-*.png最后更新于f8af525(#34,2026-10-14 15:07 Asia/Taipei),在 #32 之后、#36 之前。 - 全部截图(开局、生火、村庄、世界地图、矿、残破战舰、飞船、起飞提示、太空、结局)在我工作机的
/workspace/adarkroom-playthrough/out/browser-ending/。 origin/main的ui.js只有b.disabled = locked,没有隐藏逻辑 → 主线一样显示灰按钮。- Godot 版
godot/scripts/ui/Main.gd从第一个提交起就是灰按钮写法,但网页试玩站用的是ui.js。
在等别人的
这是个什么项目
《A Dark Room》原本是一个网页文字冒险游戏。这个仓库保留了原版,同时用 Godot 做了一个简体中文新版。
几个说法
- 主线 / 试玩线:代码的两条版本线;试玩站用试玩线。
- 改动(PR):一次提交的修改,审核后合进某条线。
- 自动检查:每次改完跑一遍,看节奏、数据上报、通关路径有没有出错。
- 玩家数据上报:记录玩家操作和进度,供分析。
思路
搭好中文新版和试玩环境 → 搬原版内容 → 合进试玩线 → 让自动检查跟上 → 真人确认。前七步已完成,现在只等你定开局灰按钮。
阶段
| 阶段 | 要做到 | 现状 |
|---|---|---|
| 0–3 | 重制、基建、核心内容、试玩线改进 | 已完成 |
| 4 | 主线合进试玩线 + 清悬挂分支 | 已完成 |
| 5 | 通关检查跟上新地标名 | 已完成 |
| 6 | 整体复查(机器通关 + 全套检查) | 已完成 |
| 7 | 检查一次跑完不崩、真浏览器打到结局(#38) | 已完成 |
| 8 | 开局灰按钮留不留 | 等你定 |
风险
| 风险 | 可能性 / 影响 | 怎么应对 | 谁 |
|---|---|---|---|
| 网页上的画面有小毛病(太空被库存挡住、库存超出屏幕等 5 处) | 已发现 / 低 | 列在「需要你处理」第 4 条下面,你说改哪个我就改 | 你定,我做 |
| 合并时界面被悄悄改了(开局灰按钮),类似情况可能还有 | 已发生 / 中 | 截图检查抓到了这一处;你定了第 1 条后,我顺便比对 #36 其它界面改动 | 我 |
| 有一项布局检查时好时坏(底部按钮挡消息) | 已发生 / 低 | 改动前就有;以后修,或先当作已知问题 | 我 |
| #37 的网站自动发布被取消,误以为最新检查脚本已随站上线 | 已发生 / 低 | #37 不改游戏本身;检查脚本在仓库里已合入。玩游戏仍用带 #36 内容的预览 | — |
| 不小心把试玩线并进主线 | 低 / 大 | 规矩仍是只往试玩线搬 | 你和我 |
⚠ 要当心的地方
现在网页上的结局画面已经有自动检查和截图;但打法是机器的固定套路,不代表真人玩起来节奏顺。开局灰按钮定下来之前,截图检查会一直有 4 项红。
待定问题
- 主线还要不要继续自动发布,还是只当存档?
哪些线会自动发布成网站?
只有主线和试玩线。
两条线怎么对齐?
只把主线合进试玩线(#36 已做完),不把试玩线并进主线。
密码、密钥放哪?
只放在浏览器本地或发布环境的设置里,绝不写进代码或这个页面。
合并冲突怎么选?
#36 约定:游戏内容跟主线;玩家数据上报、界面、开局引导跟试玩线。