games-development-ai/.agents/skills/engine-capabilities-brief.md
lili 85f48228cd
Some checks failed
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
feat(cheap-gen): W-AXIS 波3 知识层补强+收尾——tsc 顾问门+recipes+暗资产接线+n=5 基线台账
- tsc 顾问门:typescript devDependency + tsc-advisory 测试档;顾问性(永不阻断),
  金标 10 款零误伤抽验
- recipes/ 五篇高频场景索引(命中矩形/计时器/资产回退/场景机/结算演出,「抄这段形态
  +头号病根」)+ littlejs-game-dev §0.5 卡壳就查接线
- 暗资产接线:plugin-capability-map(11 注入+1 取证+6 储备逐件裁定)+
  engine-capabilities-brief(≤3KB 蒸馏)+ api.d.ts/game-host.d.ts 补插件指针;
  三方一致性对账门 plugin-surface-gate.py(含 cwd 锚定修)挂 pre-commit+Gitea Actions
- hard_genre_batch 参数化(五品类 n=5 批跑驱动,checkpoint 续跑)
- n=5 基线台账入库(gitignore 例外 add -f,只入台账不入游戏产物):
  wax-baseline.jsonl 25 局逐局记录(含判定仪器订正批注:cap1500 重判/图像盲 M3 重判,
  只加字段零改值)——终数:操作口径 14/25=56%、质量口径 18/25=72%;
  品类 narrative/heritage 5/5、trpg 4/5、puzzle/sim-business 2/5(缺口逐局有名有姓,
  根因见 07-10 v2 plan §1);旧「80%/39%」口径正式作废存照

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 04:27:18 -07:00

2.7 KiB
Raw Permalink Blame History

引擎能力摘要(给生成 agent 的 ≤3KB 版)

引擎 = LittleJS 1.18.19。你几乎不直接碰它——重活(粒子/音频/物理/手感/调色)都被 L2 插件封装好了,你调 plugins.<键> 就行。这份摘要只让你知道「插件背后是什么、坑在哪」,以及极少数要经 ctx.getEngine() 够引擎时的事实。完整逐函数签名在 game-runtime/docs/ENGINE-CAPABILITIES.md277KB 引擎 .d.ts 的抽取版),本篇是够用的地板。

铁律:先找插件,别碰引擎

  • 画面:画在 render(g)g= 引擎 mainContext,一块 Canvas2D 叠加层)。用 g.fillRect/drawImage/fillText 直接画即可, ctx.getContext2d()(那是另一块 overlay
  • 粒子/打击感 → plugins.juice;音乐音效 → plugins.audioMusic;缓动手感 → plugins.gamefeel;碰撞 → plugins.collision;运动 → plugins.physics;调色 → plugins.palettePost这些引擎里都有,但一律走插件——直接碰引擎会踩下面的坐标系坑。
  • 时间走 ctx.time()(或 .nowMs())、随机走 ctx.random()(或 .next()/.range(a,b))——确定性可复现,别用引擎全局 time/rand(受暂停/timeScale 污染、不可复现)。

ctx.getEngine():极少用,用则容错

返回一条受控透传通道(粒子发射器 / 音频合成核 / 数学缓动库)——但这三样插件都已封装,正常你用不到。getEngine() 在无引擎环境node/桩)返回 null,碰它必须先判空降级,别裸调。真要用数学缓动,plugins.gamefeel.easing 有 13 条曲线,比引擎全(引擎只有 lerp/smoothStep/oscillate没有 elastic/back/cubic

坐标系坑(碰引擎才会踩,也是插件封装它的原因)

  • 引擎默认世界坐标、几何是 Vector2 类;插件受控面是朴素 {x,y} number 对。
  • 引擎 AABB 用 size=全宽全高;插件 AABB 用 {x,y,hw,hh}=中心+半宽半高——差 2× 换算。混用必错,所以一律走插件的 {x,y,w,h}/{x,y,hw,hh} 形状。
  • 引擎碰撞查询只返 bool 或命中位置,没有穿透深度/MTV 法线/标量 t{hit,depth,nx,ny} 这种结构化结果走 plugins.collision(它替你补齐)。

几个「引擎有 vs 没有」的事实(省得你猜)

  • 音乐没有 Music 类——引擎是 ZzFXMusic/Sound.playMusic();你走 audioMusic 就别管这个。
  • 没有 engineUpdate 导出——主循环是引擎内部 RAF你只在 update(dt)bundle.tick(dt) 驱动插件,别想手摇引擎帧。
  • 成就/勋章系统Medal、GLSL 后处理注入引擎里有,但非本档范围,别用。