lili 4a2f782a9d feat(polaris): 《夜市一条街》表现层二轮——弹层期抑制世界飘字+灶台案板让出街景
创始人真机眼验批②⑦。② Hud 新增 _floatMuted 闸(飘字 depth=100 高于研发/图鉴/日结弹层部件≤94,照绘会压菜谱列表);MainScene.update 按弹层 open 态每帧驱动,仅抑制被动世界飘字/飘心,dock 主动「不行」反馈在 drainFx 循环外触发不误伤。⑦ STALL 操作台 330×120→300×72 矮案板让出中上部街景消失点;STOVES 灶台坐标未动、service-loop 用 index 非坐标,招牌 y 与案板高度解耦。logic-smoke(M0+M1+M2)+build 双门 EXIT=0。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 04:35:44 -07:00
..

《夜市一条街》——北极星顶级线①(模拟经营)

创始人 2026-07-06 批产的三款顶级长线游戏之一。规格单源 = 开发设计书(底稿 = 复杂游戏北极星件 §1);本目录是它的开发工程,当前进度 M3(内容一期+数值定标)。

跑起来

# 纯逻辑冒烟(node 直跑,无浏览器;M0 四段 + M1 四段 + M2 七段,95 断言)
node scripts/logic-smoke.mjs

# 静态可达门(M1 八查 + M2 五查 + M3 一查〔阶段任务链〕,15 查)
node scripts/tree-check.mjs

# 单测(经济骨架 + 九门 driver 接线 + 富三门 serve 判定 + M2 八系统边界 + M3 注入缝,30 用例)
node --test test/m1-core.test.mjs test/driver-wiring.test.mjs test/m2-systems.test.mjs

# 仿真千局首扫(M2 门③:25 生涯 × 40 营业日;零死锁/零 uncaught/latch 全自然;报告落 dist/)
node scripts/sim-scan.mjs

# M3 上界安全门(U8b:7 曲线配置网格判据 1/2;--grid 全扫 --m30 30分钟口径 --only/--part 分批)
node scripts/scan-calibrate.mjs          # 门判(可 --from=dist/m3-scan.json 免重跑)
node scripts/scan-calibrate.mjs --m30    # 30 分钟真玩口径(headless;真人真玩归验收窗口)

# 构建(esbuild iife,Phaser 经垫片走宿主预载不进 bundle)+ 两本包体账实测
node scripts/build.mjs

# 本机手玩(构建后;file:// 下 CDN 可用,严格环境用静态服)
python3 -m http.server 8080   # 然后开 http://localhost:8080/index.html
# URL 参数:?seed=整数 ?day=秒(短营业日) ?tier=high|mid|low ?reset=1(清存档)
#          ?admock=failed|timeout|closed|nofill(变现位失败路演练;缺省 mock filled)

九门+富三门 CDP 真跑(mini-desktop,本机禁 chrome;spec 见 play-spec.json 头注):

# 仓根起静态服:python3 -m http.server 4320
cd game-runtime && node ../tier2/harness/play-phaser.cdp.cjs night-market \
  --base=http://localhost:4320/tier2 \
  --spec=../tier2/games/night-market/play-spec.json \
  --out=../tier2/games/night-market/evidence

工程形态(设计书 §8)

  • src/core/ 纯逻辑内核:营业日时钟、三资源经济、效果解释器单点施效(解锁树/地块/设备/ 员工/事件/广告加速的全部效果条目一处汇流)、存档编解码(SaveEnvelope v1,M2 字段 additive 缺省兜底不升版)、latch 终态、readState/_forensicsView 契约、受控随机(游标导出/恢复)、 逻辑坐标单源(layout,含扩张地块坐标组)。零 DOM/canvas/引擎,node 可直跑。
  • src/systems/ 一文件一系统、不 import core、函数注入通信: ①服务循环(M0)/ ②扩张 expansion(地块+设备槽位)/ ④员工 staff-system(帮工自动出招走同一 tapCustomer 链)/ ⑤事件 event-system(日初掷签,排程不入档靠 rng 游标重放)/ ⑦变现位 monetization-system(mock 槽状态机,五路径回调,失败静默绝不卡死)。
  • src/data/ 表驱动零魔法数(M3 内容一期到量):economy_curve(全锚经 M3 千局定标, 定标报告)/ 菜谱 30 / 食材 12 / 解锁树 46 节点(4 系统门户 + 2 研发 带食材组合)/ 里程碑 12(buildMilestones 随曲线派生)/ 地块 4 / 设备 6 / 员工 4 / 事件 12(潮汐 3/ 评论家 2/天气 3/限时 4)/ 顾客 19(常 13/稀 4/特邀 2)/ 任务 52(成就 12 + 阶段链 40,奖励只发 金币 = 声望纯度)/ 变现位 3(ad-slot 契约 slotId 口径)。
  • src/scenes/、src/ui/ Phaser 表现层:只读 readState/页面视图、只发 core 命令; M2 增底部 dock 四页签(扩张/研发/员工/图鉴成就,全屏页深度 ≤2)+ 事件横幅与雨夜滤镜 + 广告加速钮 + 日结双倍位。仍程序化占位美术,风格换装归 M4。
  • src/main.js 装配:M2 命令面全数取证(F 门)+ mock 广告 adapter(宿主侧,?admock 可注入失败路)。
  • play-spec.json + tier2/harness/business-serve.driver.js 九门经营 driven 接线; 富三门 serve 语义 M2 已接(harness RICHGAME_GATED_ARCHETYPES 增 business-serve,additive): 三联动 = recipesSourced+unlockDagAcyclic(静态判 _forensicsView().dataEcho() 运行时表回声,零双写)
    • 点单真入账 + 下锅真耗库存;经济 = 勤快路有净入 vs 放任路零输入口碑真跌(经营生涯无破产终局, 衰退负反馈为 serve 语义第二路),双路真到 day_end;latch = day_end 驻留不回弹。

八系统落位(M2:机制齐、内容最小集)

系统 最小闭环 门户
①服务循环 点顾客→烹→结账→连击/口碑(M0) 常开
②街区扩张 攒金币声望→盘地块(容量+坐标池真扩)→设备入槽(吞吐修饰) n_sys_expand
③菜谱研发 攒食材→研发解锁(下单一刻 FIFO 耗料)→菜单扩容 n_sys_rnd
④员工 雇佣→帮工代打/后厨加速/收银小费→日结扣薪→技能升级(×1.12/级) n_sys_staff
⑤事件 日初掷签→潮汐/评论家/雨夜/夜市节窗口修饰→评论家好评+声望 n_sys_event
⑥经济与进度 三资源+解锁树+离线(M1)+ 成就 12 + 双图鉴(M2)+ 阶段任务链 40 接力(M3) 常开
⑦变现位 结算双倍/烹饪加速(mock 五路径回调)+ 内购预留结构 常开(mock)
⑧社交外围 底稿远期档,不在 M2(结构占位不做) ——

存档口径(M2)

导出快照 = 日初检查点(含受控随机游标):日中退出回当日开局重打,不存日中瞬态——防"存档-重打"刷币, 且同 seed 恢复后随机流逐位续接;事件掷签发生在检查点之后,恢复局 start() 以同游标重掷 = 同签 (冒烟 ⑮ 以「4 日连跑 vs 2 日存-读-续 2 日、四系统态逐字段一致」实证)。 信封 = {schemaVersion:1, data};M2 新字段(plotsOwned/equipment/staff/collections*/achievementsClaimed/eventsSeen) 全部 additive 缺省兜底不升版,M1 旧档直接读入四系统态归零可玩。

M3 门状态(如实;M2 门史见 git)

门 状态
M0–M2 全部既有门回归(冒烟 95 断言/tree-check/单测/M2 千局首扫/富三门接线) ✅ 回归绿(数据面断言按 M3 现状更新:树 46/顾客 19/地价定标;冒烟 ⑤ 解锁阈值按设计 §3 首小时消耗带重定,机制断言不放水)
静态门 M3 一查(阶段任务链 40 条线性接力/轴阈值递增/零声望) ✅ 全绿(scripts/tree-check.mjs 15 查)
单测(+M3 econ 注入缝:覆盖键并入/里程碑随 tiers 重建/缺省零漂移) ✅ 30/30
上界安全门(U8b 网格 7 配置 × 25 生涯 × 40 日 = 7000 营业日) ✅ 判据 1(45min 零进度窗)全配置零违例;判据 2(2–7h 差一点间隔)基线中位 15min ∈ [15,45];dist/m3-gate.json
30 分钟真玩口径(headless 快进 3 seed × 2 营业日) ✅ 零卡死零 uncaught(真人真玩归验收窗口,如实标)
数值定标报告 ✅ docs/m3-数值定标报告.md(逐锚保留/调整/废弃;三处真缺陷修复史:破产死锁/卡点缺席/driver 保真)
M2 千局首扫(保守 driver 口径,冻结回归) ✅ 1000/1000 零死锁(relief 地板 + 均衡补货后;dist/m2-sim-scan.json)
构建 + 两本包体账 ✅ bundle 156KB(dist/m0-bytes.json;引擎 CDN 体积仍〔来源缺口〕待联网实测)
九门+富三门 CDP 真跑 ✅ M2 收口时 ACCEPT(decision=accept,evidence/verdict.json);M3 未动渲染契约面,回归窗口随 M4 换装一并排

M3 定标要点:破产死锁(11/25 生涯)→ relief 地板 + 均衡补货封口;卡点张力缺席 → 地块/树尾/设备/升级价按 plot_price 工期公式抬阶梯(判据 2 样本 0→182);消耗率@10h 95.7% 超判据 3 上界 = 内容量仍是 M5 瓶颈 (140 节点/12 地块灌装按已验证的工期公式排布),判据 3/4/5 与多档 driver 包络归 M5。