lili 532161a7ce
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
feat(art): 《夜市一条街》M4 资产整装——暖夜霓虹 92 图元换装+BGM3/SFX24
创始人锁锚候选 A 暖夜霓虹落地(纠正重派:看图+复用批次二产线+镜头单从数据表 import,首派 FAILED 后收敛):
P1 生图 92(顾客 39=13 类×3 态/菜品 30=recipes 真 id/设备 6/UI 图标 14+框 3)→抠图 89 sprite→
图集 nightmarket 89 帧 968KB webp+Phaser3 JSON;场景背景 4(日/夜/高峰/雨,复用锚图);
BGM 3(闲市 95/高峰 125/雨夜 78bpm,mmx music 各截 75s 循环 96k≈902KB 共 2.6MB 懒加载,压缩码率优于卡牌 256k);
SFX 24 类 ZzFX 程序合成零包体;表现层换装(顾客立绘 typeId+态切帧/点单气泡菜品图标/背景昼夜雨切换/HUD 金币/
dock 4 页签,全带缺图降级,readState 语义零改)。
门证据(主会话逐门复验):换装后三门零倒退(logic-smoke 95 断言/tree-check 15 查/单测 30)+两本包体账实测过门
(账一 assets 4.23MB≤10MB/首屏 1.13MB≤2MB,账二引擎首屏传输~2.42MB 与设计书预估 2.35 吻合)+CDP 九门 8/9
(唯 C_frame=本机 headless 无 vsync~110fps 环境采样非换装,mini-desktop 复验)+富三门全过;成本 <¥5(101 呼)。
少年类顾客漂卡通词面顽疾用「去学生词+反卡通厚涂」攻克;单骑手不满态待重摇=已知项。dist/evidence 按惯例不入库。
M5 缺口=rare/critic 立绘 6 类分包/食材图标 12/HUD 图标+9-patch/BGM 无缝循环点/C_frame 真机复验。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 09:55:17 -07:00

5.7 KiB
Raw Permalink Blame History

良率与成本 · P1 资产整装(2026-07-07,《夜市一条街》M4)

批次二眼验锁定「暖夜霓虹」候选 A 之后,这一轮把风格版落成游戏真资产:首屏与核心玩法面的全套图元、图集、场景背景、音频,并完成表现层换装(程序化占位 → 真图集贴图,纯逻辑内核 readState 语义一字未改)。所有数字由 manifest.jsonl 与构建脚本自产,不含估算。

交付面

落点
P1 生图 92(顾客 39 = 常客 13 类×3 态 / 菜品 30 = recipes 全量真 id / 设备 6 / UI 图标 14 + 框件 3) images/nm-p1/
抠图透明精灵 89(sprite 全量;UI 框件 3 张 bleed 不抠) images/nm-p1-keyed/
图集(单页 Phaser3) 89 帧 / 968KB webp tier2/games/night-market/assets/atlas/nightmarket.{webp,json}
场景背景 4(日/夜/高峰/雨,复用批次二锚样张压 webp,682KB) assets/scenes/scene-*.webp
BGM 3(闲市 95bpm / 高峰 125bpm / 雨夜 78bpm,mmx music-2.6 instrumental,各截 75s 循环 96kbps ≈ 902KB) assets/audio/bgm-*.mp3
音效 24 类(ZzFX 程序合成,零二进制字节) src/audio/sfx.js
换装 顾客立绘(typeId+态切帧)/ 点单气泡菜品图标 / 背景昼夜雨切换 / HUD 金币图标 / dock 4 页签图标,全带缺图降级 src/scenes/main-scene.js · src/ui/{hud,dock}.js

镜头单由 scripts/asset-shots.mjs 从三张数据表(customer-types / recipes / equipment)import 程序生成,id 单源、禁手抄;缺美术设定的 id 直接抛错,防漏类防错 id。

良率(候选 A 已知风险=生图一致性要求最高,如实记账)

口径
图像外呼总数 101(成 99 / 瞬时超时重试 2)
一轮达标(菜品/设备/UI 图标) 高——sprite 组经批次二 r2 修订后净底稳,菜品 30、设备 6 一轮全过
质检重摇 4 张:少年类漂卡通(放学学生 3 态)/ 净底偶发失效(加班白领等待)/ 发光图标光晕满幅(广告礼盒、研发灯泡)
已知漂移项 1 张:待单骑手·不满态——「骑手+头盔」组合顽固漂 3D 卡通(与少年类同属词面顽疾),重摇一轮未收敛,以对照身份保留(单张、angry 短暂态,渲染层同类降级不影响可玩)
P1 范围外缺口 rare/critic 顾客立绘(设计书稀有 12 类分包,P1=常客 13),运行时降级圆身占位;食材图标、UI 图标 15+ 打磨接入——归 M5

成本

口径
图像外呼 101 次 官方 $0.35 / 仓内实测口径 ≈ ¥3.33
BGM music 外呼 ~10 次(mmx music 服务当日间歇「准备失败」,自主重试至 3 首全成)
累计 < ¥5,工单预算位 ¥200 用 < 3%

两本包体账(实测,scripts/build.mjs 自产)

账一·契约资产门(挂 assets,不含引擎)assets 总 4.23MB ≤ 10MB ✓(图集常驻 0.97 + 场景背景 0.68 + 音频 BGM 懒加载 2.58);首屏最小集 1.13MB ≤ 2MB ✓(常驻图集 + 首场景 scene-nightBGM 与其余场景不计首屏)。

账二·首屏传输账:游戏 bundle 0.162 + index.html 0.004 + 引擎 Phaser 3.80.1 minCDN 联网实测 1.13MB+ 首屏 assets 1.13 ≈ 2.42MB(设计书账二预估 2.35MB,吻合;超出 0.07MB 的收敛路径按设计书 §5 已列:引擎深裁 / 代码分包 / 首局资产再压)。平台编译体积门仍是「契约已定义、实现待接」,本脚本自产字节即顶门证据。

换装验证

本机三门换装后重跑零倒退logic-smoke 95 断言 / tree-check 15 查 / 单测 30 全绿(换装只触渲染层,纯逻辑内核未动)。

真浏览器 CDP 九门 8/9(本机 headless ChromeA_boot / B_uncaught=0 / D_render bright=133614 / E_live 69/69 / F_wiring / G_input / H_progress / I_control 全过,富三门(三联动 / 经济 / latch全过。唯一未过 C_frame判据 Δframe∈[20,45],实测 56——换装前 M2 原版对照实测 61(同样超上限),证明是本机 headless 无 vsync 帧率偏高(~110fps的环境采样与换装无关mini-desktop 复验。

渲染树硬证据CDP 直读 scene顾客节点 body = Sprite、texture=nm、frame=nm-cust-<typeId>-<state>;背景 texture 随高峰切 scene-peak无立绘的稀有客降级 Arc 圆身——立绘换装、态切帧、背景切换、缺图降级全部真生效。

工艺发现(与批次一/二叠加,收口蒸馏回 .agents)

  1. 少年类漂卡通的词面解法:去掉「学生/校服」等卡通触发词、改纯成年外观描述 + --subject-extra 反卡通厚涂强化(「写实成年人体态,浓稠厚涂油画笔触,绝非日系动漫/美式卡通/3D渲染」把批次二未解的放学学生三态拉回厚涂锚。但「骑手+头盔」这类强职业符号仍顽固——词面顽疾未全灭,升档 B 通道的实证点再添一例。
  2. 发光物件 UI 图标的净底陷阱:礼盒金光、灯泡光晕这类主体自带放射光的图标,光晕填满画面导致色键抠图四角采样失效(整幅进图)。prompt 去「迸射金光/发亮光晕」、改「造型紧凑/清晰」后主体裁出、净底恢复。
  3. UI 框件走程序化而非生图:面板/按钮用 bleed 组会连夜市街景一起出、抠不净;9-patch 程序绘制更可控,生图框件仅留参考。
  4. 大图进图集必先按类缩放:mmx 出 1024²、抠图后仍 ~900²,直接进图集单页装不下且破账一。按 id 前缀缩放(顾客高 208 / 菜品·设备 168 / UI 图标 112)后 89 帧进单页 968KB。
  5. C_frame [20,45] 上限对本机 headless 偏严:无 vsync 时 rAF 跑到 ~110fps,换装前后同样超上限,是环境非缺陷;帧率门的真判定环境是 mini-desktop。