3b-B e2e(mini-desktop 真跑·证据 wg1/gen-worker/evidence-3bB/): ✅ P0-P4 安全面+全自动管线=真证闭合(铁证 backend-callback-hmac.log + p4*.txt): - HMAC 双向证:缺签名头→HTTP 401 / 错签(deadbeef≠482147b5)→HTTP 401 / 正签→过门(走到下游"任务不存在"非401) =关死 /dify/callback-internal 裸 @PermitAll 缺口 - 全自动派发链真通:执行器认领 taskId→dispatchGeneric 投 §6.1 job→worker 真生成(真烧模型)→ HMAC 签名回调→验签通过→handleCallback 落库(gen-9303/9304/9305 三轮齐全) ❌ P5 一句话真生成=未达终局:三款全 nine_gate_failed。但截图(gen-9303-after-play.png)证生成 真出 on-theme 可渲可动的「点击小怪物」游戏(Score/3s 倒计时/多彩怪物 monsters/targetScore=12), 仅点击→计分坏(Score 仍 0)→九门确定性地板正确拦截「看着像但玩不了」=质量门正确履职、拒发不可玩。 判:L0 交付(管线+安全+质量门)已完成且证;缺=便宜模型把「点击命中→计分」写对=L1 生成域 (prompt 点击坑+模型档+player/calibration,run_studio 自修 max_repairs 未救回)→转 L1 v3 迭代。 附带:serve-and-play.sh 跨平台 Chrome 探测(CHROME_BIN 覆盖>Linux /usr/bin>macOS>PATH 兜底, Linux 在前因 mini-desktop x86 是权威 e2e 机);p3bB_*.sql 发布四态/翻 feed 桩。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
41 lines
1.0 KiB
JavaScript
41 lines
1.0 KiB
JavaScript
'use strict';
|
|
export default function createGame(opts) {
|
|
const o = opts || {};
|
|
let ctx = null;
|
|
let nowMs = 0;
|
|
let seed = o.seed || 0;
|
|
|
|
// 游戏状态
|
|
let phase = 'booting';
|
|
let score = 0;
|
|
let timeLeft = 30; // 剩余秒数
|
|
let targetScore = 12;
|
|
let gameoverReason = '';
|
|
let monsters = []; // {x,y,vx,vy,radius,color,isBomb,ttl}
|
|
let spawnTimer = 0; // 距离下次生成怪物的时间(秒)
|
|
let bombTimer = 0; // 距离下次生成炸弹的时间(秒)
|
|
let elapsed = 0; // 游戏已运行时间(秒)
|
|
let explosionEnd = 0; // 炸弹爆炸闪烁结束时间戳
|
|
let inputSub = null;
|
|
|
|
// 用于 last 5 秒闪烁
|
|
let flashAlpha = 0;
|
|
|
|
function init(boot) {
|
|
ctx = boot.ctx;
|
|
const random = ctx.random;
|
|
if (seed !== undefined) {
|
|
random.reseed(seed);
|
|
}
|
|
phase = 'playing';
|
|
score = 0;
|
|
timeLeft = 30;
|
|
monsters = [];
|
|
spawnTimer = 1.0; // 第一个怪物在 1.0 秒后
|
|
bombTimer = random.range(8, 10);
|
|
elapsed = 0;
|
|
explosionEnd = 0;
|
|
gameoverReason = '';
|
|
|
|
// 订阅点击
|