zizi
|
99b6c82dec
|
feat(runner-v2): P1 王蓝莓上引擎=游戏宿主装载契约 spike 实(mini-desktop real 引擎 5 门全过)
Runner v2 全弧第一相(HJ-RUNNER-ARC-001 / P1):用王蓝莓把"上层游戏宿主装载契约"
从零 spike 到"引擎真掌帧 + 游戏美术与引擎粒子同屏可玩",解锁 P2 泛化 / P3 生成。
契约与共享件
- 新增装载契约 game-runtime/src/core/game-host.d.ts(第9类 additive·暂名):
GameHostBootContext / GameInstance / GameHostFactory;游戏=纯模块工厂,零引擎 import,
能力经下层 ctx.getEngine()(受控面 6 项零改),绘制面 render(g) 的 g=引擎 mainContext
- makeEngineCaps 闭包提升为可 import 模块 host-dev/engine-caps.js(createEngineCaps):
host-dev/ref/未来生成游戏共用;engineMode 短路 / __engineCalls 探针 / null-engine 语义逐行不变
王蓝莓 real 通道(games/wanglanmei-ref)
- 增 ?engine=real:主循环从浏览器 RAF 改挂 engineInit 五回调(掌帧唯一源=引擎);
游戏美术绘制面从 #game 改引擎 mainContext(同屏合并);bundle 延后到 setupReal 内以
mainContext 建(getContext2d 闭包快照修);保 ?engine=stub 逐像素确定性回滚
- game-shop.js 抽为独立 GameHostFactory(零引擎 import,P3 生成 agent 可复制范本)
- entry.js 动态 import('littlejsengine')=node-import-safe ∧ esbuild iife 入包两全
- 驱动 e2e-input.cdp.cjs real 改造:禁 stepFrames 手摇(防双掌帧),真触摸+轮询;
门②同屏像素判据(暖色 warmHits ∧ 引擎粒子 brightHits 同张 #game-engine)
真机验收(mini-desktop real 引擎,5 门)
引擎掌帧 dFrame=31∈[20,45] / 同屏 warmHits=682∧brightHits=13028 同张 #game-engine /
particles.spawnEmitter+synthSfx call-ID 运行时真调引擎 / CDP 517 真触摸跑通整局
(第1天接待18·营收¥79.9·连击9) / console 零错;本机 88 单测全绿(含修复 4 红+补回归)
证据:games/wanglanmei-ref/evidence/p1-real/(e2e-evidence.json pass=true + 5 截图肉眼复核)
诚实 caveat:门② brightHits 在结算屏混入亮 UI,同屏合并由 warmHits(美术落引擎画布)+
call-ID(粒子真调引擎)+ 引擎架构(粒子渲同一 mainContext)三证成立,非阻断。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-13 18:32:50 +00:00 |
|
zizi
|
3e5cab455c
|
test(t1b-beta): A6 引擎真接线门 6/6 全过——A1-A4 接线 mini-desktop real 引擎收口
A6=A1-A4 引擎接线的真引擎运行时验证门(本机禁 chrome,mini-desktop headless chrome 实测)。
真接线门②(本波新增):host-dev makeEngineCaps 给每个引擎能力叶方法埋 rec()→window.__engineCalls
(仅取证,绝不入渠道产物);__hostdev.engineProbe() 经各插件真实公开 API(particles-juice.spawnEmitter /
audio-music.playSfx / gamefeel.easing.quadIn)触发 → 断言 __engineCalls 含 call-ID = 证「运行时真接线」
(动态证据,区别于门①的 esbuild metafile 静态 import)。
实测 6/6 硬门全过(evidence/a6/a6.json):
- A6-1 掌帧回归:dFrame=31∈[20,45](A1-A4 后引擎仍真掌帧);
- A6-2 粒子真接线:__engineCalls 含 particles.spawnEmitter;
- A6-3 缓动真接线:含 math.easing.quadIn(gamefeel 运行时真走引擎 Ease 门面,非内置 fallback——easing 改判运行时铁证);
- A6-4 音频真接线:含 audio.synth.synthSfx(playSfx→引擎 zzfxG);
- A6-5 引擎粒子真渲:burst 后 maxCh=240/brightHits=3/whiteTextHits=0(引擎 ParticleEmitter 渲白粒子落 2D mainContext);
- A6-6 受控面 smoke:initOk+verify.ok+0 uncaught+6 锚点。
调试坑(蒸馏入 RESULT.md / harness):①引擎粒子渲出色=spec.colorStart(burst 给白),非旧 sim 青蓝→像素门判据改
「任意亮像素 maxCh/brightHits」+ maxCh 反证 GL 关无碍粒子落 2D;②音频合成需 AudioContext 非空→探针先 unlockAudio;
③real 通道不验逐像素(引擎追帧 N 不定),逐像素由 stub 通道兜(沿 A0)。
harness:test/harness/a6-engine-wiring.cjs(driver,双通道 evidence+smoke) + a6-runbook.sh(mini-desktop 编排,
复用 run-integration.sh 的 systemd-run serve+chrome 形制 + 就绪两段探活)。host.js 仅加 host-dev 取证探针,运行时零行为改。
至此 T1b-β Phase A(A0 掌帧 + A1-A4 接线 + A5 出厂门 + A6 真引擎门)全线收口。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-13 13:42:01 +00:00 |
|
zizi
|
e591e9b705
|
feat(t1b-beta): A1-A4 引擎能力接线落地——受控面工厂/粒子/音频/手感经 getEngine 薄包装(easing 改判)
承 A0 引擎掌帧地基,按创始人「引擎↔插件边界模型」(引擎有→薄包装·引擎无→自研补层·
同一职不留两条并行路)接线 A1-A4。host.js 注入真 engineFactory,getEngine() 在 host-dev 真活。
A1 受控面+引擎工厂地基+easing 门面:
- host.js makeEngineCaps 一处构造 EngineCapabilities{particles,audio.synth,math};
- 新 host-dev/engine-math.js 包装引擎 lerp/smoothStep + Ease 曲线(11 条等价曲线门面);
- api.d.ts additive 扩 EngineEasing + EngineMath.easing?(不破已冻 lerp/smoothStep)+ 块级降级措辞校准为 null no-op;
- 受控面 random/time 保确定性(引擎粒子用全局 rand 不可种子对齐→random 留插件自管,真缺件)。
A2 particles 薄包装+删 sim:
- EngineEmitterSpec additive 扩 10 可选字段(count/coneAngle/speed/gravityScale/sizeStart-End/colorStart-End/additive);
- spawnEmitter 改走 getEngine().particles 映射引擎 ParticleEmitter,删自研逐粒子积分 sim;null-engine→no-op 句柄;
- juice 全段(hitStop/屏震/闪白)补层保留;测试转向映射纯单测+真渲出现(逐像素确定性随 sim 退役,§1.4 记账)。
A3 audio 包装+删 vendored+补 ×0.3:
- 删 vendor/zzfx.js+zzfxm.js;audio.synth 包装引擎 zzfxG/zzfxM;
- 播放层补 ×0.3 主音量(引擎样本不烤 0.3,gain 层施)+ SAMPLE_RATE=44100 本地常量;
- impl.js 走 getEngine().audio.synth,null-engine→合成 no-op(不回退 vendored)。
A4 gamefeel easing 改判=门面包装(对抗门源码证伪纠偏):
- easing 改走 getEngine().math.easing 门面(quadIn→Ease.POWER(2) 等),内置降名 builtinEasing 作 null-engine fallback(纯数学族特例);
- backInOut/elasticInOut 引擎 IN_OUT 拼接差 6.6%/17%(另一条曲线)→门面刻意不暴,这二者恒走内置=真缺件补层;
- collision/physics-lite/palette-post 加边界裁定注释(真缺件补层,源码精校:引擎仅 isOverlapping/isIntersecting 返 boolean,无 Manifold/任意几何/RayHit)。
对抗门两逮(均前置于实现·零返工):
- A4 easing 误判 fatal:前轮按小写 quadIn grep 假阴性误判「引擎无 easing」;引擎实有 Ease(esm.js:15118)→创始人拍本波包装;
- collision 注释 under-claim:已精校为源码准措辞。新红线 §1.5:引擎能力普查禁按预期名 grep,须读 export 块/.d.ts。
本机门全绿(亲验):
- node --test 168/168 绿;all-plugins+host-bundle 双 esbuild rc=0(35594B/209516B);
- 真接线门①引擎真入产物 littlejsengine 163641B;门③负扫=0 插件直 import+vendor 已删+0 自研 sim+0 假注释;Q4 引擎 import 仅 entry.js+host.js。
A6(mini-desktop real 像素门 + 真接线门② runtime probe call-ID)待主会话驱动。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-13 11:48:28 +00:00 |
|
zizi
|
11c8eafb42
|
feat(t1b-beta): A0 引擎掌帧接管落地——host-dev RAF桩→littlejsengine engineInit 五回调;本机门全绿,门0浏览器段待mini-desktop
host.js+entry.js:engineMode 分流。real=引擎掌帧(engineInit 五回调 engGameInit/
Update/UpdatePost/Render/RenderPost 接帧驱动+渲染)+getContext2d backing 切引擎
mainContext(setGLEnable(false) 纯2D渲进 mainContext);stub=α RAF桩原样保留(可回滚点)。
本机已验(主会话亲跑):
- 155单测绿(基线持平,受控面/插件零改故计数不变)
- 受控面零改实证:src/core/api.d.ts+plugin.js 未触(七项 backing 全在 host 层切换)
- Q4边界:引擎 import 仅 host.js+entry.js(metafile importers 反查证),未泄进受控面/插件
- 真接线门①:esbuild metafile 实证 littlejsengine 真入产物(163691 bytesInOutput),
box2d 惰性(0 wasm input),产物 205KB min
8-agent workflow(源码取证→设计→对抗复审→实现):3/3 concerns 0 fatal。
17 mustFix(P0×1/P1×9/P2×7)全采纳:P0=real像素门 overshoot(引擎追帧 N tick/RAF 墙钟抖动
污染采样帧)→改 stub 通道独占逐像素回归,real 只证掌帧;P1 源码级纠偏=debug水印每帧画
averageFPS入mainContext(setDebugWatermark(false))/clearColor默认alpha=0不铺底
(setCanvasClearColor(BLACK))/P75须读timeReal非mockNowMs(real模式退化逻辑帧钟)。
门0 G0-1~G0-7(引擎真掌帧/真渲2D mainContext/双时钟/无uncaught/水印已除)须 mini-desktop
chrome 实测(6c6g 禁 chrome)——未实测不宣布 A0 完成。
新:docs/agent-specs/2026-06-13-A0-引擎掌帧接管-edit-plan.md(编辑计划+门0 runbook)
+game-runtime/test/harness/gate0-engine-takeover.cjs(门0 CDP 驱动,独立闭合不复用未改造的 integration-run)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-13 06:33:27 +00:00 |
|
zizi
|
878ad3f7da
|
feat(game-runtime): T1b-α集成段三门全PASS——SIZES九件全≤配额(全栈gz16.5KB),mini-desktop真浏览器证据(probe链/vfx像素哈希×3/CDP真输入),host-dev宿主页+参考件轮1计划
- 门①构建绿:all-plugins barrel+host-dev 双构建日志留档
- 门②SIZES增量实测:九件单件全≤配额,插件gz净增13263B(自律线60K),core基准gz 3222
- 门③浏览器证据:六锚点FNV-1a链verify.ok=true/burst-trail-drift三预设哈希×3重跑一致+几何命中+直方图非空/vignette-dither开关对照哈希互异/CDP dispatchTouchEvent真点击→probe第7条firstInput旁证
- 模板哲学红线被门③实证:particles不内置颜色致首版全黑,host作引擎供色后过——验证门逮住设计而非绕过
- α不接littlejsengine裁定留痕(host.js顶注/index.html/REPORT §4.1),受控面桩即引擎接缝点
- 遗留:probe前四锚tMono=0(冻结lane件,注入时钟拆分留β)
- games/wanglanmei-ref/LOOP-LOG.md:参考件内部预判轮1计划(五要素挂点/插件用法图/mmx资产单13次/红线五条)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-12 12:39:15 +00:00 |
|