diff --git a/game-cloud/game-module-aigc/game-module-aigc-server/src/main/java/com/wanxiang/huijing/game/module/aigc/saa/SaaPrompts.java b/game-cloud/game-module-aigc/game-module-aigc-server/src/main/java/com/wanxiang/huijing/game/module/aigc/saa/SaaPrompts.java index 1cbf19d1..5407e9a2 100644 --- a/game-cloud/game-module-aigc/game-module-aigc-server/src/main/java/com/wanxiang/huijing/game/module/aigc/saa/SaaPrompts.java +++ b/game-cloud/game-module-aigc/game-module-aigc-server/src/main/java/com/wanxiang/huijing/game/module/aigc/saa/SaaPrompts.java @@ -207,6 +207,28 @@ final class SaaPrompts { "scenes":[{"id":"main","entityRefs":["world","player"]}], "rules":[{"id":"survive","condition":"rt.score >= 20","outcome":"win"}] } + + 【参照2(离散点击/tap-targets 类:井字棋/打地鼠/翻牌/三消点选——每个可点目标打 tags:["target"]+idx+occupied,点中→翻态+spawn 标记可见+计分)】 + { + "components":[ + {"id":"bg","kind":"render","shape":"fill","color":"#10101a"}, + {"id":"tile","kind":"render","shape":"rect","color":"#33384a","w":100,"h":100} + ], + "entities":[ + {"id":"world","transform":{"position":{"x":0,"y":0}},"components":["bg"]}, + {"id":"t0","transform":{"position":{"x":75,"y":350}},"tags":["target"],"idx":0,"components":["tile"]}, + {"id":"t1","transform":{"position":{"x":195,"y":350}},"tags":["target"],"idx":1,"components":["tile"]}, + {"id":"t2","transform":{"position":{"x":315,"y":350}},"tags":["target"],"idx":2,"components":["tile"]}, + {"id":"t3","transform":{"position":{"x":75,"y":520}},"tags":["target"],"idx":3,"components":["tile"]}, + {"id":"t4","transform":{"position":{"x":195,"y":520}},"tags":["target"],"idx":4,"components":["tile"]}, + {"id":"t5","transform":{"position":{"x":315,"y":520}},"tags":["target"],"idx":5,"components":["tile"]} + ], + "behaviors":[ + {"id":"tap","trigger":"update","code":"if(!rt.input.justTapped()) return; const p=rt.input.pointer; for(const t of rt.query('target')){ if(!t.occupied && rt.overlap({x:p.x,y:p.y,w:8,h:8},{x:t.x,y:t.y,w:100,h:100})){ t.occupied=true; rt.spawn({x:t.x,y:t.y,components:[{kind:'render',shape:'circle',color:'#ffcc00',r:30}]}); rt.addScore(1); rt.fx.burst(t.x,t.y,'#ffcc00'); rt.fx.beep('score'); break; } }"} + ], + "scenes":[{"id":"main","entityRefs":["world","t0","t1","t2","t3","t4","t5"]}], + "rules":[{"id":"win","condition":"rt.score >= 6","outcome":"win"}] + } """; // ============================================================================ diff --git a/wg1/gen-worker/gamedef_quickcheck.py b/wg1/gen-worker/gamedef_quickcheck.py index 6007c0e6..55ed3d5c 100644 --- a/wg1/gen-worker/gamedef_quickcheck.py +++ b/wg1/gen-worker/gamedef_quickcheck.py @@ -27,7 +27,8 @@ SAA_PROMPTS = (REPO_ROOT / "game-cloud/game-module-aigc/game-module-aigc-server/ GAME_RUNTIME = REPO_ROOT / "game-runtime" GEN_DIR = GAME_RUNTIME / "games" / "_wg1-gen" BRIEFS = Path(__file__).resolve().parent / "briefs" -MAX_RETRIES = 2 # repair 回环上限(mirror studio.py max_repairs 默认;总尝试=MAX_RETRIES+1) +import os +MAX_RETRIES = int(os.environ.get("QC_MAX_RETRIES", "3")) # repair 回环上限(可环境覆盖;真图 maxRepairs=5,本机早读取 3 平衡时延) def extract_block(name):