小黑屋中文重制

把经典网页游戏《A Dark Room》做成简体中文新版(用 Godot 游戏引擎) · 代码仓库 →
能通关 · 网页上看到了结局 · 只剩 1 件事等你拍板 更新于 2026-10-18 05:59 Asia/Taipei

能通关,网页上也看到了结局画面;只剩 1 件事等你拍板。今天凌晨我在真浏览器里打开试玩站,从生火一路打到结局,结局画面正常显示(「终局 · 本局得分 71718」,信标那句结局文字也在)。整套自动检查现在一条命令就能跑完、不再崩:330 项过了 325 项。没过的 5 项里,4 项是开局截图对不上(开局多了两个灰色的「野外」「漫漫尘途」按钮),1 项是一个以前就时好时坏的布局检查,跟这次改动无关。

只剩一件要你定:开局那两个灰按钮留不留。这次的改动 #38 已合进试玩线(只改检查脚本,不改游戏);我在截图里看到 5 个小的画面问题,列在「需要你处理」第 4 条下面,还没改。

下一步 · 1 件事等你定
  1. 你来定:开局那两个灰按钮留着还是藏起来(我建议藏起来,恢复 #36 之前的样子)。定了我来改代码或更新对照截图。

另外(不用拍板):「需要你处理」页能看到我在网页上打到结局拍的截图,和截图里看到的 5 个小画面问题;想改哪个告诉我。

这个项目在保留原版游戏的同时,做一个简体中文新版。代码有两条线:主线(叫 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)已做到

不做什么

进展一览

“PR”是一次改动的提交申请。目前没有在等审核的;已完成的按批归在一起。

顺序内容谁现状
第 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。

已经弄清楚的


第 4 步:主线 → 试玩线 已完成

#36 — 把主线上村庄经济到结局等内容单向合进试玩线。合并提交:6364da99d2。


第 2 步:核心内容(先在主线) 已完成

编号做了什么合入日期
#16村庄经济:建筑、工人、熏肉Village economy batch 110月12日
#17内容搬运的审查规则和自动检查Migration review skill10月12日
#18工坊:工具、武器、升级Workshop crafts batch 210月12日
#19贸易站:原版所有可买商品Trading post batch 310月12日
#20房间和野外的随机事件Room and outside events batch 410月12日
#21野外战斗:地图、遭遇、武器、技能World combat batch 510月12日
#22地标和特殊场景Landmarks and setpieces batch 610月12日
#23飞船和太空Ship and space batch 710月12日
#24制造机和图纸Fabricator and blueprints batch 810月12日
#25刽子手、结局、重玩奖励和分数Executioner, ending, prestige, and score batch 910月12日
#26小屋住满时的提示Hut cap notification10月12日
#27修复玩家数据上报时的假报错Drain playtest_events bodies10月12日

第 3 步:试玩线的后续改进 已完成

编号做了什么合入日期
#28每条玩家数据带上游戏版本号,并加数据检查Stamp client_version…10月13日
#29真人试玩时自动检查数据有没有传上来live-play telemetry check10月13日
#30检查改进建议写得是否规范pm-recommendation-hygiene10月13日
#31开局引导:屏幕上一直显示当前目标Early-game onboarding goal line10月13日
#32补全中后期内容,并自动检查能否通关补全中后期并加入确定性通关门禁10月13日
#33上报存档快照(只用来分析玩家行为)save_snapshot telemetry10月13日
#34去掉网页强制滚动的外框和像素画面的金边fix web scroll shell10月14日
#35改动申请模板要求附上改前/改后对比画面PR template Before/After10月17日
技术细节(我怎么查的)
  • 开放 PR → 0。
  • #37 已合并进 cursor/godot-chinese-remake-5c3a;merge commit 40d476346e3fdf18c8dfea77305383f61b0e72ca;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 件我没动,只查清楚了。你回一句“按建议做”或者挑选项,我就去办。第 2–4 件你已同意,今天凌晨办完了,结果在下面。

1. 开局多了两个灰按钮,导致截图检查没过 你来定

怎么回事:现在一打开游戏,顶部除了「小黑屋」,还会出现两个灰色、点不了的「野外」「漫漫尘途」按钮。之前开局只有「小黑屋」,其它按钮等解锁了才出现。

哪来的:10月13日 #32 在试玩线上加了“没解锁就不显示”的写法;10月14日 #34 存的对照截图就是只有「小黑屋」的样子。主线一直是“显示灰按钮”的写法。10月18日 #36 把主线合进试玩线时,界面这段代码采用了主线的版本,“不显示”那几行被去掉了。#36 的说明里写的是“界面跟试玩线”,没有提到这个变化,所以看起来不是有意改的,是合并时顺带的。

为什么重要:新玩家开局看到两个点不了的按钮,可能会困惑,也会提前剧透后面有什么;同时截图检查会一直报红,以后真出问题反而不容易发现。

选项:

我的建议:A。这是原来试玩线的设计,也更接近原版“一步步揭开”的感觉,而且合并说明里本来就说界面要跟试玩线。

已经办完的(10月18日凌晨)

2. 整套自动检查一次跑完时崩过一次 已办完

按建议 A 改了检查脚本(#38):每组检查各开一个新浏览器、跑完就关。改完一条命令跑完全套,约 4 分 42 秒,没有崩。

3. 自动通关脚本没有真正打开试玩站 已办完

按建议 A 加了一项检查(#38):在真浏览器里打开试玩站、打到结局、确认结局画面出现并截图。19 项全过,每次约 72 秒,以后跑整套检查都会带上。

4. 在网页上玩到结局 我替你玩了一遍

用上面那项检查在试玩站上从生火一直玩到结局(飞船起飞到结局这段是实时玩的)。结局画面正常,浏览器没有报错。下面是结局和太空飞行的截图:

试玩站结局画面

试玩站太空飞行画面

截图里我看到的画面问题(都还没改;想改哪个告诉我):

  1. 太空飞行时,右边「库存」框压在飞行区域上,飞行框右边一截被盖住(见上图)。
  2. 后期库存很长,在常见笔记本屏幕(1280×800)上超出底部,飞船、太空、结局画面都要往下滚才看全。
  3. 顶部页签那一排和下面的分隔线之间空出一大块;村庄画面里「生火间」下面的选中横线跟页签分开了。
  4. 有个敌人名字没翻译:硫磺矿战斗记录里出现「veteran倒下了。」
  5. 结局画面上方仍显示全部页签(生火间、中型村落……),看起来还能点进去。

这是机器按固定打法玩的,不是真人手感;节奏顺不顺、文字自然不自然,你有空自己玩一遍还是最准(可选)。

技术细节(我怎么查的)
  • 开局按钮的写法在 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。

在等别人的

没有。

只看一页的话看这里:核心内容已在试玩线;机器能从头打到结局,网页上也看到了结局画面。只剩开局灰按钮这 1 件事等你拍板,见「需要你处理」。

这是个什么项目

《A Dark Room》原本是一个网页文字冒险游戏。这个仓库保留了原版,同时用 Godot 做了一个简体中文新版。

几个说法

思路

搭好中文新版和试玩环境 → 搬原版内容 → 合进试玩线 → 让自动检查跟上 → 真人确认。前七步已完成,现在只等你定开局灰按钮。

阶段

阶段要做到现状
0–3重制、基建、核心内容、试玩线改进已完成
4主线合进试玩线 + 清悬挂分支已完成
5通关检查跟上新地标名已完成
6整体复查(机器通关 + 全套检查)已完成
7检查一次跑完不崩、真浏览器打到结局(#38)已完成
8开局灰按钮留不留等你定

风险

风险可能性 / 影响怎么应对谁
网页上的画面有小毛病(太空被库存挡住、库存超出屏幕等 5 处)已发现 / 低列在「需要你处理」第 4 条下面,你说改哪个我就改你定,我做
合并时界面被悄悄改了(开局灰按钮),类似情况可能还有已发生 / 中截图检查抓到了这一处;你定了第 1 条后,我顺便比对 #36 其它界面改动我
有一项布局检查时好时坏(底部按钮挡消息)已发生 / 低改动前就有;以后修,或先当作已知问题我
#37 的网站自动发布被取消,误以为最新检查脚本已随站上线已发生 / 低#37 不改游戏本身;检查脚本在仓库里已合入。玩游戏仍用带 #36 内容的预览—
不小心把试玩线并进主线低 / 大规矩仍是只往试玩线搬你和我

⚠ 要当心的地方

现在网页上的结局画面已经有自动检查和截图;但打法是机器的固定套路,不代表真人玩起来节奏顺。开局灰按钮定下来之前,截图检查会一直有 4 项红。

待定问题

哪些线会自动发布成网站?

只有主线和试玩线。

两条线怎么对齐?

只把主线合进试玩线(#36 已做完),不把试玩线并进主线。

密码、密钥放哪?

只放在浏览器本地或发布环境的设置里,绝不写进代码或这个页面。

合并冲突怎么选?

#36 约定:游戏内容跟主线;玩家数据上报、界面、开局引导跟试玩线。