evomeme 0.1.9 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/canvas-public/app.js +509 -5999
- package/dist/canvas-public/assets/presets/catalog.json +47 -0
- package/dist/canvas-public/assets/presets/tiles/A_01_CaoDi.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_02_ShaMo.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_03_TianKong.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_04_ShuiBo.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_05_HaiMian.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_06_MuDiBan.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_07_ShiZhuan.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_08_AnRongYan.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_09_QingTaiShi.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_10_ShenHai.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_11_HuiYanShi.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_12_HongTu.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_13_GengDi.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_14_HuoShanYan.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_15_NiTu.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_16_HuangSha.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_17_CongLin.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_18_ZiYanShi.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_19_MoGuTu.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_20_HuaDian.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_21_HaiLang.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_22_GanTu.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_23_QingTaiShiBan.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_24_XingKong.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_25_MoFaFuWen.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_26_ShiTuYeDi.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_27_LanZhuan.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_28_HongZhuan.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_29_YueQiu.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_30_JinShuGe.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_31_JinShuJingGai.png +0 -0
- package/dist/canvas-public/assets/presets/tiles/A_32_ShuZiChuang.png +0 -0
- package/dist/canvas-public/canvas/actions.js +143 -0
- package/dist/canvas-public/canvas/camera.js +28 -0
- package/dist/canvas-public/canvas/chrome.js +13 -0
- package/dist/canvas-public/canvas/data.js +123 -0
- package/dist/canvas-public/canvas/dependencies.js +19 -0
- package/dist/canvas-public/canvas/interactions.js +544 -0
- package/dist/canvas-public/canvas/panel-resize.js +5 -0
- package/dist/canvas-public/canvas/renderer.js +297 -0
- package/dist/canvas-public/canvas/selection.js +62 -0
- package/dist/canvas-public/canvas/serialization.js +118 -0
- package/dist/canvas-public/canvas/sync.js +202 -0
- package/dist/canvas-public/core/api.js +27 -0
- package/dist/canvas-public/core/feature-registry.js +29 -0
- package/dist/canvas-public/core/feature-state.js +228 -0
- package/dist/canvas-public/core/layout.js +133 -0
- package/dist/canvas-public/core/operations.js +38 -0
- package/dist/canvas-public/core/project.js +203 -0
- package/dist/canvas-public/core/state.js +27 -0
- package/dist/canvas-public/dialogs/context-menu.js +118 -0
- package/dist/canvas-public/elements/base.js +100 -0
- package/dist/canvas-public/elements/connections.js +105 -0
- package/dist/canvas-public/elements/drag.js +53 -0
- package/dist/canvas-public/elements/image.js +259 -0
- package/dist/canvas-public/elements/loading-recovery.js +5 -0
- package/dist/canvas-public/elements/loading.js +21 -0
- package/dist/canvas-public/elements/map.js +64 -0
- package/dist/canvas-public/elements/registry.js +58 -0
- package/dist/canvas-public/elements/replacement.js +78 -0
- package/dist/canvas-public/elements/resize.js +210 -0
- package/dist/canvas-public/elements/task-pipeline.js +234 -0
- package/dist/canvas-public/elements/types.js +21 -0
- package/dist/canvas-public/elements/ui.js +14 -0
- package/dist/canvas-public/elements/video.js +64 -0
- package/dist/canvas-public/features/assets/local-assets.js +72 -0
- package/dist/canvas-public/features/assets/official-assets.js +538 -0
- package/dist/canvas-public/features/editing/canvas-size.js +532 -0
- package/dist/canvas-public/features/editing/color-key.js +469 -0
- package/dist/canvas-public/features/editing/cutout.js +20 -0
- package/dist/canvas-public/features/editing/interactive-image-editing.js +981 -0
- package/dist/canvas-public/features/editing/layer-decomposition.js +44 -0
- package/dist/canvas-public/features/editing/manual-split.js +114 -0
- package/dist/canvas-public/features/editing/perfect-pixel.js +336 -0
- package/dist/canvas-public/features/editing/scroll-preview.js +129 -0
- package/dist/canvas-public/features/editing/scroll-seam-elimination.js +71 -0
- package/dist/canvas-public/features/editing/seam-elimination.js +46 -0
- package/dist/canvas-public/features/editing/smart-split.js +48 -0
- package/dist/canvas-public/features/editing/source-preview.js +43 -0
- package/dist/canvas-public/features/editing/video-cycle.js +49 -0
- package/dist/canvas-public/features/editing/video-frames.js +35 -0
- package/dist/canvas-public/features/frame-editor/frame-editing.js +755 -0
- package/dist/canvas-public/features/frame-editor/frame-model.js +63 -0
- package/dist/canvas-public/features/frame-editor/playback.js +83 -0
- package/dist/canvas-public/features/frame-editor/preview.js +149 -0
- package/dist/canvas-public/features/generation/animation.js +272 -0
- package/dist/canvas-public/features/generation/asset-batch.js +102 -0
- package/dist/canvas-public/features/generation/direction.js +163 -0
- package/dist/canvas-public/features/generation/fields.js +73 -0
- package/dist/canvas-public/features/generation/game-ui.js +64 -0
- package/dist/canvas-public/features/generation/image.js +83 -0
- package/dist/canvas-public/features/generation/scroll-image.js +157 -0
- package/dist/canvas-public/features/generation/seamless-tile.js +52 -0
- package/dist/canvas-public/features/generation/tile-transition-atlas.js +79 -0
- package/dist/canvas-public/features/generation/video.js +105 -0
- package/dist/canvas-public/features/map/creation.js +73 -0
- package/dist/canvas-public/features/map/tile-map-editor.js +2518 -0
- package/dist/canvas-public/features/registry.js +59 -0
- package/dist/canvas-public/index.html +84 -259
- package/dist/canvas-public/inspector/controls.js +49 -0
- package/dist/canvas-public/inspector/frame-preview.js +11 -0
- package/dist/canvas-public/inspector/inspector.js +190 -0
- package/dist/canvas-public/inspector/media-inspector.js +517 -0
- package/dist/canvas-public/inspector/media-preview.js +56 -0
- package/dist/canvas-public/inspector/number-stepper.js +96 -0
- package/dist/canvas-public/inspector/resize.js +88 -0
- package/dist/canvas-public/inspector/scroll-preview.js +11 -0
- package/dist/canvas-public/inspector/ui-inspector.js +14 -0
- package/dist/canvas-public/language/en-US.js +1059 -0
- package/dist/canvas-public/language/index.js +79 -0
- package/dist/canvas-public/language/zh-CN.js +1059 -0
- package/dist/canvas-public/map/export.js +9 -0
- package/dist/canvas-public/map/inspector.js +8 -0
- package/dist/canvas-public/map/model.js +409 -0
- package/dist/canvas-public/map/tile-map-editor.js +2 -0
- package/dist/canvas-public/media/metadata.js +183 -0
- package/dist/canvas-public/media/support.js +183 -0
- package/dist/canvas-public/styles/base.css +49 -0
- package/dist/canvas-public/styles/canvas.css +127 -0
- package/dist/canvas-public/styles/controls.css +203 -0
- package/dist/canvas-public/styles/dialogs.css +521 -0
- package/dist/canvas-public/styles/feature-form.css +409 -0
- package/dist/canvas-public/styles/inspector.css +441 -0
- package/dist/canvas-public/styles/layout.css +344 -0
- package/dist/canvas-public/styles/map.css +11 -0
- package/dist/canvas-public/styles/nodes.css +636 -0
- package/dist/canvas-public/styles.css +9 -2247
- package/dist/canvas-public/ui/controls.js +222 -0
- package/dist/canvas-public/ui/elements.js +9 -0
- package/dist/canvas-public/ui/feature-controller.js +296 -0
- package/dist/canvas-public/ui/feature-form.js +401 -0
- package/dist/canvas-public/ui/settings.js +83 -0
- package/dist/canvas-public/ui/toolbar.js +55 -0
- package/dist/canvas-public/vendor/pixi-tilemap.js +126 -0
- package/dist/canvas-public/vendor/pixi.min.js +2340 -0
- package/dist/canvas-public/workers/color-key-worker.js +289 -0
- package/dist/canvas-public/workers/perfect-pixel-worker.js +510 -0
- package/dist/index.js +42236 -13382
- package/dist/skills/en-US/evomeme-canvas/SKILL.md +52 -0
- package/dist/skills/en-US/evomeme-canvas/agents/openai.yaml +7 -0
- package/dist/skills/en-US/evomeme-cloud-fs/SKILL.md +176 -0
- package/dist/skills/en-US/evomeme-cloud-fs/agents/openai.yaml +7 -0
- package/dist/skills/en-US/evomeme-cover/SKILL.md +132 -0
- package/dist/skills/en-US/evomeme-cover/agents/openai.yaml +7 -0
- package/dist/skills/en-US/evomeme-game-maker/SKILL.md +288 -0
- package/dist/skills/en-US/evomeme-game-maker/agents/openai.yaml +4 -0
- package/dist/skills/en-US/evomeme-login/SKILL.md +92 -0
- package/dist/skills/en-US/evomeme-login/agents/openai.yaml +7 -0
- package/dist/skills/en-US/evomeme-native-bridge-sdk/SKILL.md +286 -0
- package/dist/skills/en-US/evomeme-native-bridge-sdk/agents/openai.yaml +8 -0
- package/dist/skills/en-US/evomeme-tos-upload/SKILL.md +47 -0
- package/dist/skills/en-US/evomeme-tos-upload/agents/openai.yaml +5 -0
- package/dist/skills/en-US/evomeme-ui/SKILL.md +123 -0
- package/dist/skills/en-US/evomeme-ui/agents/openai.yaml +4 -0
- package/dist/skills/en-US/evomeme-ui/references/host-layout.md +69 -0
- package/dist/skills/en-US/game-art/SKILL.md +121 -0
- package/dist/skills/en-US/game-art/agents/openai.yaml +8 -0
- package/dist/skills/en-US/game-asset-align/SKILL.md +45 -0
- package/dist/skills/en-US/game-asset-align/agents/openai.yaml +8 -0
- package/dist/skills/en-US/game-asset-align/references/alignment-contract.md +61 -0
- package/dist/skills/en-US/game-asset-align/references/blender-scene-pipeline.md +45 -0
- package/dist/skills/en-US/game-asset-align/references/canonical-package.md +26 -0
- package/dist/skills/en-US/game-asset-align/references/engine-capabilities.md +14 -0
- package/dist/skills/en-US/game-asset-align/references/lightweight-review.md +32 -0
- package/dist/skills/en-US/game-asset-align/references/repair-policy.md +30 -0
- package/dist/skills/en-US/game-asset-align/references/tool-contract.md +39 -0
- package/dist/skills/en-US/game-asset-align/references/visual-review.md +26 -0
- package/dist/skills/en-US/game-asset-image-generator/SKILL.md +104 -0
- package/dist/skills/en-US/game-asset-image-generator/agents/openai.yaml +7 -0
- package/dist/skills/en-US/game-asset-image-generator/references/background.md +32 -0
- package/dist/skills/en-US/game-asset-image-generator/references/static-game-assets.md +38 -0
- package/dist/skills/en-US/game-audio/SKILL.md +82 -0
- package/dist/skills/en-US/game-audio/agents/openai.yaml +4 -0
- package/dist/skills/en-US/game-demo/SKILL.md +103 -0
- package/dist/skills/en-US/game-demo/agents/openai.yaml +7 -0
- package/dist/skills/en-US/game-maker/SKILL.md +111 -0
- package/dist/skills/en-US/game-maker/agents/openai.yaml +4 -0
- package/dist/skills/en-US/game-test/SKILL.md +58 -0
- package/dist/skills/en-US/game-test/agents/openai.yaml +7 -0
- package/dist/skills/en-US/game-ui/SKILL.md +177 -0
- package/dist/skills/en-US/game-ui/agents/openai.yaml +4 -0
- package/dist/skills/en-US/godot-3d-game/SKILL.md +39 -0
- package/dist/skills/en-US/godot-3d-game/agents/openai.yaml +8 -0
- package/dist/skills/en-US/godot-3d-game/references/alignment-gates.md +26 -0
- package/dist/skills/en-US/godot-3d-game/references/appearance-alignment.md +52 -0
- package/dist/skills/en-US/godot-3d-game/references/build-and-qa.md +22 -0
- package/dist/skills/en-US/godot-3d-game/references/canonical-asset-runtime.md +27 -0
- package/dist/skills/en-US/godot-3d-game/references/import-and-wrapper-scenes.md +20 -0
- package/dist/skills/en-US/godot-3d-game/references/physics-colliders.md +13 -0
- package/dist/skills/en-US/godot-3d-game/references/project-structure.md +22 -0
- package/dist/skills/en-US/godot-3d-game/references/skeleton-animation.md +16 -0
- package/dist/skills/en-US/phaser-2d-game/SKILL.md +127 -0
- package/dist/skills/en-US/phaser-2d-game/agents/openai.yaml +8 -0
- package/dist/skills/en-US/phaser-2d-game/references/engine-performance.md +64 -0
- package/dist/skills/en-US/phaser-2d-game/references/engine-physics.md +139 -0
- package/dist/skills/en-US/phaser-2d-game/references/engine-runtime.md +129 -0
- package/dist/skills/en-US/phaser-2d-game/references/engine-spritesheets.md +99 -0
- package/dist/skills/en-US/phaser-2d-game/references/engine-tilemaps.md +80 -0
- package/dist/skills/en-US/phaser-2d-game/references/file-structure.md +94 -0
- package/dist/skills/en-US/phaser-2d-graphics-builder/SKILL.md +68 -0
- package/dist/skills/en-US/phaser-2d-graphics-builder/agents/openai.yaml +7 -0
- package/dist/skills/en-US/threejs-3d-game/SKILL.md +117 -0
- package/dist/skills/en-US/threejs-3d-game/agents/openai.yaml +7 -0
- package/dist/skills/en-US/threejs-3d-game/references/engine-asset-pipeline.md +153 -0
- package/dist/skills/en-US/threejs-3d-game/references/engine-audio.md +70 -0
- package/dist/skills/en-US/threejs-3d-game/references/engine-input-camera.md +84 -0
- package/dist/skills/en-US/threejs-3d-game/references/engine-performance.md +96 -0
- package/dist/skills/en-US/threejs-3d-game/references/engine-physics.md +142 -0
- package/dist/skills/en-US/threejs-3d-game/references/engine-runtime.md +199 -0
- package/dist/skills/en-US/threejs-3d-game/references/file-structure.md +353 -0
- package/dist/skills/en-US/threejs-aaa-graphics-builder/SKILL.md +62 -0
- package/dist/skills/en-US/threejs-aaa-graphics-builder/agents/openai.yaml +7 -0
- package/{skills → dist/skills/zh-CN}/evomeme-cloud-fs/SKILL.md +4 -4
- package/{skills → dist/skills/zh-CN}/evomeme-cover/SKILL.md +1 -1
- package/{skills → dist/skills/zh-CN}/evomeme-game-maker/SKILL.md +91 -88
- package/{skills → dist/skills/zh-CN}/evomeme-tos-upload/SKILL.md +6 -5
- package/dist/skills/zh-CN/evomeme-ui/SKILL.md +123 -0
- package/dist/skills/zh-CN/evomeme-ui/agents/openai.yaml +4 -0
- package/dist/skills/zh-CN/evomeme-ui/references/host-layout.md +69 -0
- package/dist/skills/zh-CN/game-asset-align/SKILL.md +45 -0
- package/dist/skills/zh-CN/game-asset-align/agents/openai.yaml +8 -0
- package/dist/skills/zh-CN/game-asset-align/references/alignment-contract.md +61 -0
- package/dist/skills/zh-CN/game-asset-align/references/blender-scene-pipeline.md +45 -0
- package/dist/skills/zh-CN/game-asset-align/references/canonical-package.md +26 -0
- package/dist/skills/zh-CN/game-asset-align/references/engine-capabilities.md +14 -0
- package/dist/skills/zh-CN/game-asset-align/references/lightweight-review.md +32 -0
- package/dist/skills/zh-CN/game-asset-align/references/repair-policy.md +30 -0
- package/dist/skills/zh-CN/game-asset-align/references/tool-contract.md +39 -0
- package/dist/skills/zh-CN/game-asset-align/references/visual-review.md +26 -0
- package/{skills → dist/skills/zh-CN}/game-asset-image-generator/SKILL.md +1 -1
- package/dist/skills/zh-CN/game-audio/references/bgm-cdn.md +127 -0
- package/dist/skills/zh-CN/game-audio/references/sfx-cdn.md +77 -0
- package/dist/skills/zh-CN/game-test/references/checklists/playtest-qa.md +12 -0
- package/{skills → dist/skills/zh-CN}/game-ui/SKILL.md +9 -1
- package/dist/skills/zh-CN/game-ui/references/checklists/game-ui-quality.md +14 -0
- package/dist/skills/zh-CN/game-ui/references/checklists/hud-readability.md +12 -0
- package/dist/skills/zh-CN/game-ui/references/checklists/mobile-input.md +12 -0
- package/dist/skills/zh-CN/game-ui/references/checklists/responsive-ui-fit.md +12 -0
- package/dist/skills/zh-CN/game-ui/references/ui-patterns.md +140 -0
- package/dist/skills/zh-CN/game-ui/references/ui-prompt-templates.md +63 -0
- package/dist/skills/zh-CN/godot-3d-game/SKILL.md +39 -0
- package/dist/skills/zh-CN/godot-3d-game/agents/openai.yaml +8 -0
- package/dist/skills/zh-CN/godot-3d-game/references/alignment-gates.md +26 -0
- package/dist/skills/zh-CN/godot-3d-game/references/appearance-alignment.md +52 -0
- package/dist/skills/zh-CN/godot-3d-game/references/build-and-qa.md +22 -0
- package/dist/skills/zh-CN/godot-3d-game/references/canonical-asset-runtime.md +27 -0
- package/dist/skills/zh-CN/godot-3d-game/references/import-and-wrapper-scenes.md +20 -0
- package/dist/skills/zh-CN/godot-3d-game/references/physics-colliders.md +13 -0
- package/dist/skills/zh-CN/godot-3d-game/references/project-structure.md +22 -0
- package/dist/skills/zh-CN/godot-3d-game/references/skeleton-animation.md +16 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-1.jpeg +0 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-2.jpeg +0 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/compose-quality.md +10 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/performance-safe-visual-detail.md +9 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/premium-game-quality-gate.md +15 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/sprite-quality.md +10 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/technical-art-quality.md +9 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/visual-scorecard.md +9 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/compose-recipes.md +71 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/graphics-prompt-templates.md +33 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/implementation-blueprint.md +82 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/sprite-recipes.md +90 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/technical-art.md +67 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/vfx-recipes.md +67 -0
- package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/visual-scorecard.md +129 -0
- package/{skills → dist/skills/zh-CN}/threejs-3d-game/SKILL.md +6 -2
- package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-asset-pipeline.md +52 -15
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-1.jpg +0 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-2.jpg +0 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/aaa-game-quality-gate.md +23 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/aaa-visual-scorecard.md +19 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/material-lighting-quality.md +14 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/performance-safe-visual-detail.md +14 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/procedural-model-quality.md +15 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/technical-art-quality.md +17 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/graphics-prompt-templates.md +236 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/implementation-blueprint.md +161 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/model-recipes.md +146 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/render-recipes.md +90 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/shader-cookbook.md +292 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/technical-art.md +167 -0
- package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/visual-scorecard.md +147 -0
- package/dist/stage-blender/bake_materials.py +102 -0
- package/dist/stage-blender/export_scene.py +275 -0
- package/dist/stage-blender/preview_camera.py +90 -0
- package/dist/stage-blender/repair_mesh.py +112 -0
- package/dist/stage-public/app.js +759 -0
- package/dist/stage-public/baked/bakePilot.js +44 -0
- package/dist/stage-public/baked/bakedScene.js +129 -0
- package/dist/stage-public/baked/sceneAppearance.js +225 -0
- package/dist/stage-public/baked/sceneCamera.js +45 -0
- package/dist/stage-public/comparison-contract.js +28 -0
- package/dist/stage-public/delivery.html +4 -0
- package/dist/stage-public/delivery.js +17 -0
- package/dist/stage-public/godot/appearance.gd +170 -0
- package/dist/stage-public/godot/preview.gd +79 -0
- package/dist/stage-public/index.html +141 -0
- package/dist/stage-public/review-app.js +289 -0
- package/dist/stage-public/review-runtime.js +63 -0
- package/dist/stage-public/review.css +24 -0
- package/dist/stage-public/review.html +47 -0
- package/dist/stage-public/scene-runtime.js +212 -0
- package/dist/stage-public/sceneContractRuntime.js +235 -0
- package/dist/stage-public/styles.css +328 -0
- package/dist/stage-public/three-appearance.js +104 -0
- package/dist/stage-public/vendor/three170/LICENSE +21 -0
- package/dist/stage-public/vendor/three170/build/three.module.js +54571 -0
- package/dist/stage-public/vendor/three170/examples/jsm/controls/OrbitControls.js +1523 -0
- package/dist/stage-public/vendor/three170/examples/jsm/environments/RoomEnvironment.js +144 -0
- package/dist/stage-public/vendor/three170/examples/jsm/libs/fflate.module.js +2672 -0
- package/dist/stage-public/vendor/three170/examples/jsm/loaders/EXRLoader.js +2563 -0
- package/dist/stage-public/vendor/three170/examples/jsm/loaders/GLTFLoader.js +4727 -0
- package/dist/stage-public/vendor/three170/examples/jsm/utils/BufferGeometryUtils.js +1373 -0
- package/dist/tile-transition-mask.svg +40 -0
- package/package.json +21 -7
- package/dist/canvas-public/cycle-detect.js +0 -166
- package/dist/canvas-public/smart-split.js +0 -185
- /package/{skills → dist/skills/en-US}/game-audio/references/bgm-cdn.md +0 -0
- /package/{skills → dist/skills/en-US}/game-audio/references/sfx-cdn.md +0 -0
- /package/{skills → dist/skills/en-US}/game-test/references/checklists/playtest-qa.md +0 -0
- /package/{skills → dist/skills/en-US}/game-ui/references/checklists/game-ui-quality.md +0 -0
- /package/{skills → dist/skills/en-US}/game-ui/references/checklists/hud-readability.md +0 -0
- /package/{skills → dist/skills/en-US}/game-ui/references/checklists/mobile-input.md +0 -0
- /package/{skills → dist/skills/en-US}/game-ui/references/checklists/responsive-ui-fit.md +0 -0
- /package/{skills → dist/skills/en-US}/game-ui/references/ui-patterns.md +0 -0
- /package/{skills → dist/skills/en-US}/game-ui/references/ui-prompt-templates.md +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-1.jpeg +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-2.jpeg +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/compose-quality.md +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/performance-safe-visual-detail.md +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/premium-game-quality-gate.md +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/sprite-quality.md +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/technical-art-quality.md +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/visual-scorecard.md +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/compose-recipes.md +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/graphics-prompt-templates.md +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/implementation-blueprint.md +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/sprite-recipes.md +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/technical-art.md +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/vfx-recipes.md +0 -0
- /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/visual-scorecard.md +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-1.jpg +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-2.jpg +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/aaa-game-quality-gate.md +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/aaa-visual-scorecard.md +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/material-lighting-quality.md +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/performance-safe-visual-detail.md +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/procedural-model-quality.md +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/technical-art-quality.md +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/graphics-prompt-templates.md +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/implementation-blueprint.md +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/model-recipes.md +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/render-recipes.md +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/shader-cookbook.md +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/technical-art.md +0 -0
- /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/visual-scorecard.md +0 -0
- /package/{skills → dist/skills/zh-CN}/evomeme-canvas/SKILL.md +0 -0
- /package/{skills → dist/skills/zh-CN}/evomeme-canvas/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/evomeme-cloud-fs/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/evomeme-cover/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/evomeme-game-maker/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/evomeme-login/SKILL.md +0 -0
- /package/{skills → dist/skills/zh-CN}/evomeme-login/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/evomeme-native-bridge-sdk/SKILL.md +0 -0
- /package/{skills → dist/skills/zh-CN}/evomeme-native-bridge-sdk/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/evomeme-tos-upload/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/game-art/SKILL.md +0 -0
- /package/{skills → dist/skills/zh-CN}/game-art/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/references/background.md +0 -0
- /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/references/static-game-assets.md +0 -0
- /package/{skills → dist/skills/zh-CN}/game-audio/SKILL.md +0 -0
- /package/{skills → dist/skills/zh-CN}/game-audio/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/game-demo/SKILL.md +0 -0
- /package/{skills → dist/skills/zh-CN}/game-demo/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/game-maker/SKILL.md +0 -0
- /package/{skills → dist/skills/zh-CN}/game-maker/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/game-test/SKILL.md +0 -0
- /package/{skills → dist/skills/zh-CN}/game-test/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/game-ui/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/phaser-2d-game/SKILL.md +0 -0
- /package/{skills → dist/skills/zh-CN}/phaser-2d-game/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-performance.md +0 -0
- /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-physics.md +0 -0
- /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-runtime.md +0 -0
- /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-spritesheets.md +0 -0
- /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-tilemaps.md +0 -0
- /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/file-structure.md +0 -0
- /package/{skills → dist/skills/zh-CN}/phaser-2d-graphics-builder/SKILL.md +0 -0
- /package/{skills → dist/skills/zh-CN}/phaser-2d-graphics-builder/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/threejs-3d-game/agents/openai.yaml +0 -0
- /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-audio.md +0 -0
- /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-input-camera.md +0 -0
- /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-performance.md +0 -0
- /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-physics.md +0 -0
- /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-runtime.md +0 -0
- /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/file-structure.md +0 -0
- /package/{skills → dist/skills/zh-CN}/threejs-aaa-graphics-builder/SKILL.md +0 -0
- /package/{skills → dist/skills/zh-CN}/threejs-aaa-graphics-builder/agents/openai.yaml +0 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Phaser 2D Graphics Implementation Blueprint
|
|
2
|
+
|
|
3
|
+
Use when a Phaser game reads as basic even after it is playable. Goal: a production graphics architecture that can be iterated, scored, and budgeted. For premium/showcase work, also load `technical-art.md`.
|
|
4
|
+
|
|
5
|
+
## Recommended Ownership
|
|
6
|
+
|
|
7
|
+
Directory layout follows `../phaser-2d-game/references/file-structure.md`. Keep **rules in Systems**, **sprites/FX in Scene or view helpers**. Suggested modules (names can merge in small games; concepts must stay separate):
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
src/game/assets/manifest.ts # or public/config.json bindings
|
|
11
|
+
src/game/view/SpriteFactory.ts # hero / hazard / reward creators
|
|
12
|
+
src/game/view/WorldPropKit.ts # repeated props, tileside dressing
|
|
13
|
+
src/game/view/DepthLayers.ts # Play/Near/Mid/Far/Motion constants
|
|
14
|
+
src/game/view/ComposeRig.ts # camera helpers, parallax, vignette/tint
|
|
15
|
+
src/game/view/VfxSystem.ts # event-driven FX (pooled)
|
|
16
|
+
src/game/view/QualityDiagnostics.ts # optional counters / debug overlays
|
|
17
|
+
src/scenes/GameplayScene.ts # wires systems → view; no rule ownership
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Asset files live under `assets/` (`characters/`, `environment/`, `fx/`, …) with stable keys in `public/config.json`.
|
|
21
|
+
|
|
22
|
+
## Hybrid Asset Pipeline
|
|
23
|
+
|
|
24
|
+
Choose the asset path per surface:
|
|
25
|
+
|
|
26
|
+
- **MCP image** (`game-asset-image-generator`): hero, enemies, signature props, backgrounds, parallax layers, tileset sheets when art quality matters.
|
|
27
|
+
- **User-provided**: local/remote URLs the user supplies; still bind via `config.json`.
|
|
28
|
+
- **Procedural / Phaser Graphics / shapes**: collision debug, temporary stubs, repeated micro-detail, telegraph shapes that must stay code-driven.
|
|
29
|
+
- **Hybrid**: MCP base sprite + code tint/flash/outline for states; or tileset + prop kit overlays.
|
|
30
|
+
|
|
31
|
+
For premium hero, main background, and primary hazard family: do not finish with procedural-only unless a real MCP/user blocker is recorded.
|
|
32
|
+
|
|
33
|
+
## Production Surfaces
|
|
34
|
+
|
|
35
|
+
A premium pass must touch every weak visible surface:
|
|
36
|
+
|
|
37
|
+
- Hero/player: authored silhouette, facing aligned with art brief, hurt/invuln/boost cues.
|
|
38
|
+
- Hazards/enemies: ≥3 distinct silhouettes when the genre has multiple threat types; telegraphs readable.
|
|
39
|
+
- Rewards/interactables: ≥2 forms; idle + collect states.
|
|
40
|
+
- World kit: Play / Near / Mid / Far / Motion matching `scene-profiles` profile; parallax ratios documented.
|
|
41
|
+
- Sprite fidelity: consistent pixel density; spritesheets measured before `load.spritesheet` (`engine-spritesheets.md`).
|
|
42
|
+
- Compose: camera model, depth sort, tint/overlay discipline (`compose-recipes.md`).
|
|
43
|
+
- VFX: event-driven only (`vfx-recipes.md`); pooled.
|
|
44
|
+
- UI/world cohesion: DOM HUD colors echo hazard/reward/safe signals—do not redesign HUD here beyond color token alignment; full HUD work is `game-ui`.
|
|
45
|
+
- Diagnostics: budget notes, screenshots, scorecard.
|
|
46
|
+
|
|
47
|
+
## Technical Art Contract
|
|
48
|
+
|
|
49
|
+
Before broad implementation, write the brief from `technical-art.md`: hero vs support surfaces, texture/display/particle budgets, atlas plan, VFX caps, mobile first cuts.
|
|
50
|
+
|
|
51
|
+
## Depth Layer Contract
|
|
52
|
+
|
|
53
|
+
Map `scene-profiles` layers to Phaser depth (example—adjust per game, keep gaps):
|
|
54
|
+
|
|
55
|
+
| Layer | Role | Typical depth |
|
|
56
|
+
| --- | --- | --- |
|
|
57
|
+
| Far | Background / sky | 0–100 |
|
|
58
|
+
| Mid | Stage / buildings | 100–300 |
|
|
59
|
+
| Play | Actors, hazards, rewards | 500–800 |
|
|
60
|
+
| Near | Foreground occluders | 900–1000 |
|
|
61
|
+
| Motion / VFX | Muzzle, impact, dashes | 1100–1200 |
|
|
62
|
+
| Screen FX | Flash/vignette containers | 2000+ |
|
|
63
|
+
|
|
64
|
+
Document the chosen map in `DepthLayers.ts`. Actors that need Y-sort stay within Play band.
|
|
65
|
+
|
|
66
|
+
## State Feedback Without Fake AAA
|
|
67
|
+
|
|
68
|
+
Prefer, in order:
|
|
69
|
+
|
|
70
|
+
1. Swap frame / anim / attachment sprite.
|
|
71
|
+
2. Controlled tint / flash (short).
|
|
72
|
+
3. Scale squash-stretch tied to gameplay events.
|
|
73
|
+
4. Camera punch / hitstop (from `game-feel`, scaled for readability).
|
|
74
|
+
5. Particles/trails last.
|
|
75
|
+
|
|
76
|
+
Never use permanent bloom-like overlays to hide missing art.
|
|
77
|
+
|
|
78
|
+
## Wiring Rules
|
|
79
|
+
|
|
80
|
+
- Scene reads System state and spawns/updates view objects; Systems do not import Phaser GameObjects if avoidable.
|
|
81
|
+
- All runtime image URLs come from `config.json` / manifest—no scattered hardcoded CDN strings in multiple files.
|
|
82
|
+
- Scale only via Phaser Scale Manager (`engine-runtime.md`).
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Sprite Recipes (Phaser 2D)
|
|
2
|
+
|
|
3
|
+
Use before upgrading hero, hazard, reward, or world prop visuals. Recipes describe **readable silhouettes and production intent**, not full illustration briefs. Generation details stay in `../game-asset-image-generator/`.
|
|
4
|
+
|
|
5
|
+
## Shared Rules
|
|
6
|
+
|
|
7
|
+
- One subject per asset key; facing must match gameplay (right-facing runners stay right-facing in art).
|
|
8
|
+
- Keep a **collision proxy** simpler than the art (rectangle/circle); art can overhang slightly if the hitbox stays fair.
|
|
9
|
+
- Family variants share a motif (helmet shape, horn, stripe) so players learn the cast.
|
|
10
|
+
- Pixel density: characters readable at mobile play size; do not upscale tiny icons into heroes.
|
|
11
|
+
- Prefer transparent Assets for actors; opaque Background for Far plates; Parallax layers with alpha for Mid/Near dressing.
|
|
12
|
+
|
|
13
|
+
## Hero / Player
|
|
14
|
+
|
|
15
|
+
**Must have**
|
|
16
|
+
|
|
17
|
+
- Clear silhouette at thumbnail size.
|
|
18
|
+
- Readable front/facing (or top-down orientation for `topdown_map` / `board_table`).
|
|
19
|
+
- At least one state cue path: idle vs hurt vs power (frame, overlay, or tint—documented).
|
|
20
|
+
|
|
21
|
+
**Avoid**
|
|
22
|
+
|
|
23
|
+
- Symmetric blobs with no facing.
|
|
24
|
+
- Oversized weapon that hides the body.
|
|
25
|
+
- Relying on outline glow as the only identity.
|
|
26
|
+
|
|
27
|
+
**Upgrade path**
|
|
28
|
+
|
|
29
|
+
1. Lock style from `game-art` (+ advanced style if requested).
|
|
30
|
+
2. MCP generate `asset_player` (and optional `asset_player_hurt` / atlas frames).
|
|
31
|
+
3. Wire anim keys; verify facing vs movement code.
|
|
32
|
+
4. Add attach points later (dust, muzzle) without reskinning the whole hero.
|
|
33
|
+
|
|
34
|
+
## Hazards / Enemies
|
|
35
|
+
|
|
36
|
+
**Must have**
|
|
37
|
+
|
|
38
|
+
- ≥3 variants when the design has multiple threat roles (blocker / chaser / ranged)—or document why the genre is single-threat.
|
|
39
|
+
- Telegraph: wind-up pose, color flash, or warning glyph **before** damage frames.
|
|
40
|
+
- Shape language distinct from rewards.
|
|
41
|
+
|
|
42
|
+
**Avoid**
|
|
43
|
+
|
|
44
|
+
- One square, three hues.
|
|
45
|
+
- Camouflage against Mid/Far that makes hits feel unfair.
|
|
46
|
+
|
|
47
|
+
## Rewards / Interactables
|
|
48
|
+
|
|
49
|
+
**Must have**
|
|
50
|
+
|
|
51
|
+
- High contrast vs Play floor.
|
|
52
|
+
- Idle motion subtle (bob/pulse ≤ subtle); collect burst is event FX.
|
|
53
|
+
- Two forms when economy has tiers (coin vs gem, weapon vs heal).
|
|
54
|
+
|
|
55
|
+
**Avoid**
|
|
56
|
+
|
|
57
|
+
- Same shape as hazards.
|
|
58
|
+
- Permanent screen-covering sparkle.
|
|
59
|
+
|
|
60
|
+
## World Prop Kit
|
|
61
|
+
|
|
62
|
+
Build a small kit, not one-off decorations:
|
|
63
|
+
|
|
64
|
+
| Kit piece | Use |
|
|
65
|
+
| --- | --- |
|
|
66
|
+
| Edge marker | Lane/arena boundary readability |
|
|
67
|
+
| Mid module | Repeatable building/cliff/hedge segment |
|
|
68
|
+
| Far plate | Single strong skyline or stage back |
|
|
69
|
+
| Near fringe | Grass, railing, table lip—occludes lightly |
|
|
70
|
+
| Hazard stripe / safe glyph | Gameplay-readable floor language |
|
|
71
|
+
|
|
72
|
+
Repeat with tint variants; do not MCP-generate 50 unique bushes.
|
|
73
|
+
|
|
74
|
+
## Tilesets
|
|
75
|
+
|
|
76
|
+
When using tilemaps (`engine-tilemaps.md`):
|
|
77
|
+
|
|
78
|
+
- One visual language per biome.
|
|
79
|
+
- Collision layer ≠ decorated layer.
|
|
80
|
+
- Autotile/seam care: avoid noisy tiles that hide pickups.
|
|
81
|
+
|
|
82
|
+
## Backgrounds & Parallax
|
|
83
|
+
|
|
84
|
+
- Far: full-bleed Background, no characters/UI in the plate.
|
|
85
|
+
- Mid/Near parallax: fewer focal subjects; leave Play cone clean per `scene-profiles`.
|
|
86
|
+
- Scroll factors: Far `0.1–0.3`, Mid `0.4–0.7`, Near `1.0–1.15` (tune per game; document).
|
|
87
|
+
|
|
88
|
+
## Checklist Hook
|
|
89
|
+
|
|
90
|
+
Before scoring Sprite fidelity / Hero / Obstacles / Rewards, run `checklists/sprite-quality.md`.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Technical Art For Phaser 2D Games
|
|
2
|
+
|
|
3
|
+
Use before premium/showcase graphics work, atlas/texture strategy, particle/VFX systems, or any visual pass that could affect mobile performance.
|
|
4
|
+
|
|
5
|
+
Technical art bridges art direction and real-time constraints. Goal: readable authored detail that survives active play on mid-tier phones—not maximum particle counts.
|
|
6
|
+
|
|
7
|
+
## Technical Art Brief
|
|
8
|
+
|
|
9
|
+
Before implementation, write:
|
|
10
|
+
|
|
11
|
+
- Art direction in renderable terms: silhouettes, layers, compose, VFX language, camera.
|
|
12
|
+
- Hero surfaces vs support surfaces.
|
|
13
|
+
- Texture/atlas plan: max page size, shared atlases vs discrete images.
|
|
14
|
+
- VFX caps: max concurrent emitters, particle lifespans, pool sizes.
|
|
15
|
+
- Display list budget target (rough): dynamic objects in Play band.
|
|
16
|
+
- Asset strategy per surface: mcp-image / user / procedural / hybrid.
|
|
17
|
+
- Mobile first cuts: what to disable first if frame time slips (screen FX → Near props → Mid parallax detail → particle rate).
|
|
18
|
+
|
|
19
|
+
## Budget Starting Points
|
|
20
|
+
|
|
21
|
+
Starting contracts—not universal limits. Measure on device; document overruns.
|
|
22
|
+
|
|
23
|
+
| Metric (worst active-play) | Mobile portrait target | Notes |
|
|
24
|
+
| --- | --- | --- |
|
|
25
|
+
| Unique textures (approx.) | ≤ 40–60 | Prefer atlases; huge unique BGs count heavy |
|
|
26
|
+
| Max single texture edge | ≤ 2048 | Prefer 1024–2048 backgrounds; split if needed |
|
|
27
|
+
| Concurrent particle emitters | ≤ 8 | Pool; hard-cap on spam events |
|
|
28
|
+
| Particles alive (sum) | ≤ 300–500 | Lower on low-end; kill on scene sleep |
|
|
29
|
+
| Dynamic GameObjects (Play) | keep pooled | No per-frame `new` for bullets/FX |
|
|
30
|
+
| Camera shake stacking | 1 active profile | Don’t stack 3 shakes |
|
|
31
|
+
| DPR / resolution | Scale Manager FIT/SHOW_ALL | Never CSS-scale canvas |
|
|
32
|
+
|
|
33
|
+
Also follow `../phaser-2d-game/references/engine-performance.md` (pooling, culling, update budgets).
|
|
34
|
+
|
|
35
|
+
## Texture And Atlas Discipline
|
|
36
|
+
|
|
37
|
+
- Measure spritesheet frame size before loader config (`engine-spritesheets.md`).
|
|
38
|
+
- Don’t pack unrelated PPI into one sheet if it forces wasteful padding—but do atlas frequent FX/UI icons when possible.
|
|
39
|
+
- Prefer WebP/PNG with real alpha; avoid huge uncompressed photo BGs when a painted 1080×1920 plate suffices.
|
|
40
|
+
- Destroy/unload textures on scene shutdown when switching biomes with large unique plates.
|
|
41
|
+
|
|
42
|
+
## Particles And FX Cost
|
|
43
|
+
|
|
44
|
+
- Event-driven only; no permanent full-screen ambient snow unless genre-critical and budgeted.
|
|
45
|
+
- Pre-create emitters; `explode`/`quantity` bursts over long-running drip when possible.
|
|
46
|
+
- Additive blending sparingly on mobile.
|
|
47
|
+
- Tie FX lifetime to gameplay feedback windows (100–400ms for hits; longer only for celebrations).
|
|
48
|
+
|
|
49
|
+
## Compose Cost
|
|
50
|
+
|
|
51
|
+
- Parallax layers are textures too—3 strong layers beat 8 weak ones.
|
|
52
|
+
- Full-screen overlay Images are cheap vs thousands of nodes; don’t simulate vignette with 200 sprites.
|
|
53
|
+
- Lights (Phaser Lights Manager) are optional and costly—default to tint/overlay recipes first.
|
|
54
|
+
|
|
55
|
+
## Diagnostics To Report
|
|
56
|
+
|
|
57
|
+
After a graphics pass, report:
|
|
58
|
+
|
|
59
|
+
- Which surfaces used MCP vs procedural.
|
|
60
|
+
- Texture strategy (atlases / largest BG size).
|
|
61
|
+
- Particle/emitter caps chosen.
|
|
62
|
+
- Any deliberate budget overrun + why.
|
|
63
|
+
- Mobile screenshot path(s).
|
|
64
|
+
|
|
65
|
+
## Checklist Hook
|
|
66
|
+
|
|
67
|
+
Run `checklists/technical-art-quality.md` and `checklists/performance-safe-visual-detail.md` before claiming Performance evidence ≥ 2.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# VFX Recipes (Phaser 2D)
|
|
2
|
+
|
|
3
|
+
Event-driven visual effects that clarify game state. Load only after sprites and compose are readable. Core rule still applies: FX never substitutes for authored art.
|
|
4
|
+
|
|
5
|
+
Cross-link: hand-feel timing principles in `../game-designer/references/game-feel.md`; UI motion in `../game-art/references/animation-specs.md`. This file is **in-world / camera FX** for Phaser.
|
|
6
|
+
|
|
7
|
+
## Principles
|
|
8
|
+
|
|
9
|
+
1. **One trigger → one readable beat.** Prefer a single strong burst over layered noise.
|
|
10
|
+
2. **Severity scale.** Pickup < hit < kill < fail/clear. Strongest events must still leave the next decision visible.
|
|
11
|
+
3. **Pool everything.** No allocating emitters per bullet in `update`.
|
|
12
|
+
4. **Sync with audio when present.** Same frame as SFX when `game-audio` is wired.
|
|
13
|
+
5. **No ambient filler** to hide empty Far layers.
|
|
14
|
+
|
|
15
|
+
## Recipe Table
|
|
16
|
+
|
|
17
|
+
| Event | Primary FX | Duration | Notes |
|
|
18
|
+
| --- | --- | --- | --- |
|
|
19
|
+
| Light confirm (UI-adjacent in world) | Small scale pop + brief spark | 100–200ms | Keep off HUD DOM |
|
|
20
|
+
| Pickup / coin | Radial burst (8–16 particles) + optional arc to HUD anchor | 200–350ms | High contrast; don’t blanket Play |
|
|
21
|
+
| Hit (player) | White/red flash on sprite + tiny camera shake | 80–120ms | Invuln blink separate from flash |
|
|
22
|
+
| Hit (enemy) | Impact ring or directional sparks + hitstop 1–2 frames | 100–180ms | Direction from attack vector |
|
|
23
|
+
| Block / parry | Sharp spark + short freeze | 80–150ms | Distinct from hurt |
|
|
24
|
+
| Dash / boost | Motion streaks or afterimage (2–3 ghosts) | During dash | Cap ghosts; fade quick |
|
|
25
|
+
| Death / explode | Larger burst + brief screen flash ≤30% alpha | 300–500ms | Then remove clutter |
|
|
26
|
+
| Spawn | Poof / ring expand | 200–300ms | Telegraph if hostile |
|
|
27
|
+
| Charge telegraph | Pulse outline / growing warning glyph | Wind-up length | Must be readable before damage |
|
|
28
|
+
| Zone warning | Edge vignette or floor decal pulse | While zone active | Center Play stays clear |
|
|
29
|
+
| Combo / milestone | Short celebratory burst + optional zoom punch | 250–400ms | Don’t stack with death FX |
|
|
30
|
+
| Fail / soft lock | Gray flash or desat pulse | 200ms | Not seizure-level strobe |
|
|
31
|
+
|
|
32
|
+
## Implementation Notes (Phaser)
|
|
33
|
+
|
|
34
|
+
- Prefer `this.add.particles` with preconfigured `ParticleEmitter` reused via pools, or a small `VfxSystem.burst(kind, x, y, dir?)` API.
|
|
35
|
+
- Sprite flash: tween `setTintFill` / short `setAlpha` blink; clear tint on complete.
|
|
36
|
+
- Afterimages: spawn faded copies at depth just below hero; auto-destroy.
|
|
37
|
+
- Screen flash: camera-fixed Rectangle or Image at Screen FX depth; fade out; ignore input blocking.
|
|
38
|
+
- Respect `technical-art.md` emitter and particle caps; on spam (machine-gun hits), coalesce to rate-limited bursts.
|
|
39
|
+
|
|
40
|
+
## Anti-Patterns
|
|
41
|
+
|
|
42
|
+
- Permanent floating dust as “atmosphere” when Far art is missing.
|
|
43
|
+
- Full-screen rainbow particles on every tap.
|
|
44
|
+
- Shake so strong platforms/hazards can’t be aimed at.
|
|
45
|
+
- Additive glow soup that blows out silhouette edges.
|
|
46
|
+
- FX that spawn without a gameplay event (pure decoration loops).
|
|
47
|
+
|
|
48
|
+
## Severity Ladder (default)
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
0 none
|
|
52
|
+
1 sprite-only (tint/scale)
|
|
53
|
+
2 local particles
|
|
54
|
+
3 local particles + camera punch
|
|
55
|
+
4 screen flash + particles + punch
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Map events to ≤ one ladder step above the previous severity so players learn intensity.
|
|
59
|
+
|
|
60
|
+
## Checklist
|
|
61
|
+
|
|
62
|
+
Before scoring VFX/motion ≥ 2:
|
|
63
|
+
|
|
64
|
+
- [ ] Every FX kind maps to a gameplay event
|
|
65
|
+
- [ ] Caps documented in technical art brief
|
|
66
|
+
- [ ] Mobile screenshot shows FX without hiding hazards
|
|
67
|
+
- [ ] No ambient-only particle layer required for “premium”
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Visual Scorecard (Phaser 2D)
|
|
2
|
+
|
|
3
|
+
Score active-play screenshots, not idle title screens or isolated asset sheets. Prefer **mobile portrait** screenshots; add desktop when the project targets it.
|
|
4
|
+
|
|
5
|
+
Scores are self-assessed against the anchors below, so they drift optimistic. For premium/showcase claims: cite Measured Evidence where possible, run the Fresh-Eyes Review, and compare against packaged anchors before finalizing.
|
|
6
|
+
|
|
7
|
+
## Calibration Anchors
|
|
8
|
+
|
|
9
|
+
Reference screenshots for score calibration are packaged in `phaser-2d-graphics-builder/assets/scorecard-anchors/`:
|
|
10
|
+
|
|
11
|
+
- `scene-1.jpeg` — score ~1: geometric/simple hero and props on a flat sparse stage, utility HUD.
|
|
12
|
+
- `scene-2.jpeg` — score ~2: authored sprites and scene art, readable state HUD, intentional composition; still short of dense active-play showcase.
|
|
13
|
+
- `scene-3.jpg` — score ~2.5–3: dense layered authored world in active play, varied character family, readable state feedback, cohesive HUD.
|
|
14
|
+
|
|
15
|
+
Before scoring World/environment, Hero/player, Sprite fidelity, Compose, or VFX, **view the anchors** and compare: if your screenshot reads closer to `scene-1.jpeg` than `scene-3.jpg` for that surface, the category is at most a 1–2 regardless of how much code was written.
|
|
16
|
+
|
|
17
|
+
Do not score against title screens, collages, or marketing montages.
|
|
18
|
+
|
|
19
|
+
## Scoring Scale
|
|
20
|
+
|
|
21
|
+
- 0: Placeholder. Flat colors, missing art, unreadable state, debug UI, or no evidence.
|
|
22
|
+
- 1: Basic styled. Playable and themed, but obvious prototype assets, flat composition, or generic UI.
|
|
23
|
+
- 2: Premium stylized. Authored silhouettes, layered world, readable state, cohesive UI/world, measured performance.
|
|
24
|
+
- 3: Showcase. Strong art direction, memorable hero and world, dense authored detail, excellent readability, polished VFX, diagnostics.
|
|
25
|
+
|
|
26
|
+
## Categories
|
|
27
|
+
|
|
28
|
+
1. Art direction.
|
|
29
|
+
- 0: No clear theme.
|
|
30
|
+
- 1: Theme is mostly a palette swap.
|
|
31
|
+
- 2: Theme affects sprites, world layers, UI, and feedback.
|
|
32
|
+
- 3: Distinct identity on every production surface.
|
|
33
|
+
2. Hero/player.
|
|
34
|
+
- 0: Colored rectangle / emoji / default shape.
|
|
35
|
+
- 1: Basic sprite with glow or simple tint.
|
|
36
|
+
- 2: Authored silhouette, clear facing, state cues (hurt/boost).
|
|
37
|
+
- 3: Memorable sprite language with expressive feedback.
|
|
38
|
+
3. Obstacles/enemies.
|
|
39
|
+
- 0: Same box as everything else.
|
|
40
|
+
- 1: Recolored repeated silhouette.
|
|
41
|
+
- 2: At least three readable variants with telegraphs.
|
|
42
|
+
- 3: Varied family with anticipation and gameplay clarity.
|
|
43
|
+
4. Rewards/interactables.
|
|
44
|
+
- 0: Plain circle/token.
|
|
45
|
+
- 1: Repeated icon with simple pulse.
|
|
46
|
+
- 2: Two authored forms with idle/collect states.
|
|
47
|
+
- 3: Desirable, animated, clearly valued in motion.
|
|
48
|
+
5. World/environment.
|
|
49
|
+
- 0: Flat fill or empty stage.
|
|
50
|
+
- 1: Single background image, sparse props.
|
|
51
|
+
- 2: Layered Play/Near/Mid/Far matching `scene-profiles` profile.
|
|
52
|
+
- 3: Dense authored world that still preserves play readability.
|
|
53
|
+
6. Sprite fidelity / atlas.
|
|
54
|
+
- 0: Procedural shapes only.
|
|
55
|
+
- 1: Mixed placeholder + one real image.
|
|
56
|
+
- 2: Key surfaces from MCP/user art; consistent PPI and facing; sheets measured before load.
|
|
57
|
+
- 3: Cohesive atlas/mip strategy, clean cutouts, no stretched mush.
|
|
58
|
+
7. Compose (camera / parallax / tint).
|
|
59
|
+
- 0: No depth; camera fights the player.
|
|
60
|
+
- 1: Parallax or tint used as the whole style.
|
|
61
|
+
- 2: Intentional camera, parallax ratios, depth sort, readable overlays.
|
|
62
|
+
- 3: Cinematic but disciplined compose; never hides the next decision.
|
|
63
|
+
8. VFX/motion.
|
|
64
|
+
- 0: None or random ambient particles.
|
|
65
|
+
- 1: Generic particles/trails.
|
|
66
|
+
- 2: Event-driven FX for hit, pickup, fail, combo, spawn, dash.
|
|
67
|
+
- 3: High-impact FX that clarify state and stay within budget.
|
|
68
|
+
9. UI/HUD.
|
|
69
|
+
- 0: Debug text or missing UI.
|
|
70
|
+
- 1: Generic stat cards over the canvas.
|
|
71
|
+
- 2: Genre HUD via DOM overlay; colors echo world signals.
|
|
72
|
+
- 3: Cohesive hierarchy and polished transitions without covering Play.
|
|
73
|
+
10. Performance evidence.
|
|
74
|
+
- 0: No notes after visual changes.
|
|
75
|
+
- 1: Informal "seems fine".
|
|
76
|
+
- 2: Texture/display/particle budget notes + mobile screenshot.
|
|
77
|
+
- 3: Before/after or budget-aware notes, pooling, atlas strategy.
|
|
78
|
+
|
|
79
|
+
## Thresholds
|
|
80
|
+
|
|
81
|
+
Premium:
|
|
82
|
+
|
|
83
|
+
- Every category at least 2.
|
|
84
|
+
- Average at least 2.3.
|
|
85
|
+
- Mobile active-play screenshot when portrait mobile is in scope.
|
|
86
|
+
- Technical-art / budget notes after graphics changes.
|
|
87
|
+
|
|
88
|
+
Showcase:
|
|
89
|
+
|
|
90
|
+
- At least six categories score 3.
|
|
91
|
+
- No category below 2.
|
|
92
|
+
- Average at least 2.7.
|
|
93
|
+
- Performance evidence includes before/after or budget-aware notes.
|
|
94
|
+
|
|
95
|
+
## Automatic Failures
|
|
96
|
+
|
|
97
|
+
Any of these prevents a premium/showcase claim:
|
|
98
|
+
|
|
99
|
+
- Active screenshot is placeholder-dominant (SVG/rect/emoji as hero or main threats).
|
|
100
|
+
- Main world is a flat fill with no authored Far/Mid layers when the profile requires them.
|
|
101
|
+
- Hero is mostly a shape plus glow/particles.
|
|
102
|
+
- Obstacles or rewards are one repeated silhouette recolored.
|
|
103
|
+
- Ambient particles or full-screen flash are the primary “art”.
|
|
104
|
+
- Compose (shake/vignette/parallax) hides the next gameplay decision.
|
|
105
|
+
- Dense formal HUD drawn in Canvas instead of DOM without an explicit project requirement.
|
|
106
|
+
- No asset sourcing ledger for premium hero/background surfaces.
|
|
107
|
+
- Claimed premium while required references were skipped.
|
|
108
|
+
|
|
109
|
+
## Fresh-Eyes Review
|
|
110
|
+
|
|
111
|
+
Before finalizing premium/showcase:
|
|
112
|
+
|
|
113
|
+
1. Look only at the latest active-play screenshot for 10 seconds.
|
|
114
|
+
2. Name the weakest two categories without reading the scorecard you just filled.
|
|
115
|
+
3. If either is below 2, lower scores and keep working—or report blockers.
|
|
116
|
+
4. Confirm Automatic Failures are absent.
|
|
117
|
+
|
|
118
|
+
## Measured Evidence
|
|
119
|
+
|
|
120
|
+
Prefer citing:
|
|
121
|
+
|
|
122
|
+
- `public/config.json` keys bound for hero/bg/parallax.
|
|
123
|
+
- Screenshot paths (mobile/desktop).
|
|
124
|
+
- Texture sizes / atlas notes / particle max counts from the technical art brief.
|
|
125
|
+
- Phaser Scale mode confirmation (no CSS canvas scale).
|
|
126
|
+
|
|
127
|
+
## Output
|
|
128
|
+
|
|
129
|
+
When claiming premium/showcase, paste a filled table: category, score 0–3, one-line evidence, measured evidence if any. Include average and list Automatic Failures remaining (or “none”).
|
|
@@ -25,8 +25,12 @@ description: 用 Three.js、React Three Fiber、TypeScript 与 Vite 实现 3D
|
|
|
25
25
|
3. **纯 Three 模块可单测**
|
|
26
26
|
- `game/three/*` 禁止 import React;场景构建与数学助手可独立验证。
|
|
27
27
|
|
|
28
|
-
4.
|
|
29
|
-
- 全部游戏代码通过 `manifest` / `public/config.json`
|
|
28
|
+
4. **资产键稳定 + Canonical 语义**
|
|
29
|
+
- 全部游戏代码通过 `manifest` / `public/config.json` / canonical 包引用资产,不在业务代码中硬编码 glTF / 贴图路径。
|
|
30
|
+
- **3D 网格必须来自** `assets/canonical/<id>/`(或 `evomeme_asset_sync_to_three` 同步到 `public/assets/canonical/<id>/`)。
|
|
31
|
+
- 加载后**必须**按 `asset.json` 应用朝向/尺度(见 `references/engine-asset-pipeline.md`);禁止在实体里硬编码 `rotation.y += Math.PI`。
|
|
32
|
+
- 对齐与预览默认走技能 `game-asset-align` + MCP `evomeme_stage_open`。
|
|
33
|
+
- **Blender 建模或修改后必须先打开 Stage,由用户查看并确认当前 Three.js 版本后才能导入。** `alignment.ready=true` 或 set_orientation 不代替用户确认;不得手工复制或替用户点击绕过门禁。
|
|
30
34
|
|
|
31
35
|
## 实现指导
|
|
32
36
|
|
|
@@ -1,39 +1,72 @@
|
|
|
1
1
|
# 引擎:资产加载与动画管线
|
|
2
2
|
|
|
3
|
-
关注 **运行时如何安全接入 GLB
|
|
3
|
+
关注 **运行时如何安全接入 GLB**,以及如何消费 **canonical 资产包**(`model.glb` + `asset.json`)。
|
|
4
4
|
|
|
5
|
-
加载/绑定网格、AnimationMixer、根运动、碰撞代理、导入后性能时加载本文件。路径与 config 契约仍以 `file-structure.md`
|
|
5
|
+
加载/绑定网格、AnimationMixer、根运动、碰撞代理、导入后性能时加载本文件。路径与 config 契约仍以 `file-structure.md` 为准。对齐流程见技能 `game-asset-align`。
|
|
6
|
+
|
|
7
|
+
## Canonical 包(强制)
|
|
8
|
+
|
|
9
|
+
**Blender 建模/修改后必须先打开 Stage 展板。用户查看并点击“确认当前版本,允许导入”后,才可进行下一步导入。** `evomeme_stage_open({workspace_dir,asset_id,target:"three_js"})`;格式检查和 `alignment.ready` 只表示技术状态,不能跳过确认。修改模型、纹理、灯光或显示配置后旧确认失效,必须重新查看确认。
|
|
10
|
+
|
|
11
|
+
Tripo / 代码建模 / Blender / 上传的模型,进游戏前必须是:
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
assets/canonical/<asset_id>/model.glb
|
|
15
|
+
assets/canonical/<asset_id>/asset.json
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
同步进 Vite 工程:
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
evomeme_asset_sync_to_three
|
|
22
|
+
→ public/assets/canonical/<asset_id>/
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`asset.json` 关键字段:`forward_axis`、`scale_hint_metres`、`yaw/pitch/roll_offset_degrees`、`verified_by`。
|
|
26
|
+
directional 资产(角色/枪械/载具)`verified_by` 不得为 `unverified`。
|
|
27
|
+
|
|
28
|
+
运行时约定:**-Z forward,+Y up**(与 Godot 相同)。完整场景使用同步生成的 `src/evomeme-stage/<id>/canonical_loader.js`,调用 `loadReviewedScene`。它与 Stage 共用 scene-runtime.js 和 three-appearance.js,复现已确认的 PBR、灯光、环境、相机以及已有烘焙显示路径。项目须使用 Three.js **0.170.0**;版本不一致会报错,需统一依赖后重新查看。
|
|
29
|
+
|
|
30
|
+
包内包含 three.appearance.json(已确认 profile、诊断与文件指纹)、THREE_IMPORT.md、锁定运行时和可独立查看的 three-preview.html。旧 applyCanonicalOrientation.ts 仅供旧模型代码兼容;它不负责完整场景显示。
|
|
6
31
|
|
|
7
32
|
## 输出与加载偏好
|
|
8
33
|
|
|
9
34
|
| 用途 | 格式 |
|
|
10
35
|
| --- | --- |
|
|
11
|
-
| Three 运行时 | 优先 GLB(PBR
|
|
36
|
+
| Three 运行时 | 优先 GLB(PBR)+ 同目录 `asset.json` |
|
|
12
37
|
| 动画交换 | FBX 按需,再谨慎导入或离线转 GLB |
|
|
13
38
|
| 打印 / AR | STL/3MF、USDZ —— 非本游戏运行时默认 |
|
|
14
39
|
|
|
15
40
|
- 用 `GLTFLoader`(`three/addons/loaders/GLTFLoader.js`)。
|
|
16
|
-
- 运行时 URL:`./`
|
|
41
|
+
- 运行时 URL:`./` 相对路径、`/assets/canonical/<id>/model.glb` 或外部 `http(s)`;禁止站点根随意绝对路径(见部署规则)。
|
|
17
42
|
- 加载放在资产层 / `game/three` 助手,**不要**在实体每帧 update 里 `load`。
|
|
18
|
-
- 业务代码通过 `manifest` / `config`
|
|
43
|
+
- 业务代码通过 `manifest` / `config` / canonical `asset_id` 引用,不硬编码裸 URL。
|
|
19
44
|
|
|
20
45
|
```ts
|
|
21
|
-
import
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
46
|
+
import * as THREE from 'three';
|
|
47
|
+
import { loadReviewedScene } from '../../evomeme-stage/courtyard/canonical_loader.js';
|
|
48
|
+
|
|
49
|
+
// assetBase 来自部署资源配置,指向本场景目录并以 / 结尾。
|
|
50
|
+
const runtime = await loadReviewedScene({
|
|
51
|
+
renderer, world: scene, camera, assetBase: config.assets.courtyard,
|
|
52
|
+
});
|
|
53
|
+
// 游戏主循环;由游戏负责更新相机画幅与 renderer 尺寸。
|
|
54
|
+
runtime.render(camera, deltaSeconds);
|
|
55
|
+
// 离场时
|
|
56
|
+
runtime.dispose();
|
|
26
57
|
```
|
|
27
58
|
|
|
59
|
+
完整环境在一个 Scene 内只加载一次。道具使用 appearanceEnabled:false 接入已有环境,返回根节点已应用 canonical TRS,不得再套补偿旋转或缩放。返回值还有 animations 和 stats;玩法、物理、动画播放由游戏资产层接管。R3F 或自定义后处理需接管渲染循环并调用 runtime.render;仅让框架调用 renderer.render 会跳过完整场景烘焙/后处理路径。
|
|
60
|
+
|
|
28
61
|
## 包装实体
|
|
29
62
|
|
|
30
63
|
导入场景包进游戏实体时显式处理:
|
|
31
64
|
|
|
32
|
-
- 统一 scale、pivot
|
|
65
|
+
- **必须**用 `asset.json` 统一 scale、pivot、朝向(外层 `Group`)
|
|
33
66
|
- 包围盒 / 逻辑 bounds
|
|
34
67
|
- **与视觉分离的 collision proxy**
|
|
35
68
|
- 加载失败占位或错误态
|
|
36
|
-
- 记录:文件大小、三角面、材质数、贴图尺寸、clip
|
|
69
|
+
- 记录:文件大小、三角面、材质数、贴图尺寸、clip 名、`verified_by`
|
|
37
70
|
|
|
38
71
|
## AnimationMixer
|
|
39
72
|
|
|
@@ -98,18 +131,22 @@ for (const clip of clips) {
|
|
|
98
131
|
- [ ] 文件大小与三角面可接受
|
|
99
132
|
- [ ] 网格 / 材质 / 贴图数量与尺寸
|
|
100
133
|
- [ ] 当前灯光下 PBR 观感
|
|
101
|
-
- [ ] 米制尺度与 pivot / bounds
|
|
134
|
+
- [ ] 米制尺度与 pivot / bounds 来自 `asset.json`,非猜的
|
|
135
|
+
- [ ] `verified_by` 已记录(directional 资产非 unverified)
|
|
102
136
|
- [ ] 碰撞代理独立且调试可见
|
|
103
137
|
- [ ] clip 名、时长、根运动策略明确
|
|
104
|
-
- [ ] 失败有占位;成功路径进 manifest/config
|
|
138
|
+
- [ ] 失败有占位;成功路径进 manifest/config/canonical
|
|
105
139
|
- [ ] 卸载与重开无泄漏
|
|
140
|
+
- [ ] 未在玩法代码中硬编码补偿旋转
|
|
106
141
|
|
|
107
142
|
## 常见修复
|
|
108
143
|
|
|
109
144
|
| 问题 | 处理 |
|
|
110
145
|
| --- | --- |
|
|
111
146
|
| 过大/过小 | 外层 Group 归一化 bounds |
|
|
112
|
-
| 朝向错 | wrapper
|
|
147
|
+
| 朝向错 | **改 asset.json / 回展板**,不要在玩法 wrapper 里永久硬转 |
|
|
148
|
+
| 尺度错 | 写 `scale_hint_metres` 后重新加载 |
|
|
149
|
+
| 几何坏了 | `evomeme_asset_repair_blender` → 再展板对齐 → 再 sync |
|
|
113
150
|
| 动画滑步/飘走 | 保留导出根运动后按上式只钉 XZ |
|
|
114
151
|
| 太贵 | 降面、缩贴图、少唯一重模 |
|
|
115
152
|
| 材质过暗/过亮 | 色域、tone mapping、环境光、曝光 |
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# AAA Browser Game Quality Gate
|
|
2
|
+
|
|
3
|
+
- The game is immediately playable and not presented as a landing page.
|
|
4
|
+
- The core loop has objective, scoring/progress, fail/retry, pacing, and feedback.
|
|
5
|
+
- Screenshots do not read as a collection of default primitives, debug HUDs, or generic placeholder panels.
|
|
6
|
+
- Unadorned boxes, cones, spheres, flat planes, and stretched buildings are not the dominant art language unless explicitly intentional.
|
|
7
|
+
- UI is genre-specific, compact, readable during motion, responsive, and includes needed modal states.
|
|
8
|
+
- Player, threats, rewards, and objectives have distinct silhouettes and material/feedback language.
|
|
9
|
+
- Player/hero asset has primary silhouette, secondary structure, tertiary detail, material contrast, and state feedback.
|
|
10
|
+
- Obstacle/enemy set includes at least three authored variants with unique telegraphs.
|
|
11
|
+
- Reward/interactable set includes at least two authored variants with collection/interaction feedback.
|
|
12
|
+
- World kit includes reusable modules and does not rely on one repeated skyline/block/road primitive.
|
|
13
|
+
- The scene has foreground, midground, and background depth instead of one flat play lane.
|
|
14
|
+
- Lighting, shadows, fog, and post-processing clarify depth and mood without hiding gameplay.
|
|
15
|
+
- Procedural models use the authored factories, shared material kit, reusable prop kits, and collision proxies from `../implementation-blueprint.md` and `../technical-art.md`.
|
|
16
|
+
- Movement, camera, speed, impact, and restart loop feel tuned through play, not just configured.
|
|
17
|
+
- Audio/visual feedback exists for core actions and state transitions.
|
|
18
|
+
- Mobile viewport preserves framing, safe areas, touch targets, and text fit.
|
|
19
|
+
- Renderer diagnostics from `../technical-art.md` are reviewed when visual fidelity changes.
|
|
20
|
+
- Visual scorecard in `../visual-scorecard.md` passes: every category at least 2 and average at least 2.3.
|
|
21
|
+
- Build, browser run, console/page errors, screenshots, nonblank canvas, interaction, and responsive checks all pass.
|
|
22
|
+
- A screenshot critique identifies no unresolved high-impact placeholder-quality blockers.
|
|
23
|
+
- If any premium surface was intentionally deferred, the final report says which one and why.
|
package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/aaa-visual-scorecard.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# AAA Visual Scorecard Checklist
|
|
2
|
+
|
|
3
|
+
Use with `../visual-scorecard.md`.
|
|
4
|
+
|
|
5
|
+
- Current desktop and mobile active-play screenshots are available.
|
|
6
|
+
- Art direction category scored 0-3.
|
|
7
|
+
- Hero/player asset category scored 0-3.
|
|
8
|
+
- Obstacles/enemies category scored 0-3.
|
|
9
|
+
- Rewards/interactables category scored 0-3.
|
|
10
|
+
- World/environment category scored 0-3.
|
|
11
|
+
- Materials/textures category scored 0-3.
|
|
12
|
+
- Lighting/render category scored 0-3.
|
|
13
|
+
- VFX/motion category scored 0-3.
|
|
14
|
+
- UI/HUD category scored 0-3.
|
|
15
|
+
- Performance evidence category scored 0-3.
|
|
16
|
+
- No automatic failure is present: check every item in the canonical Automatic Failures list in `../visual-scorecard.md` (do not rely on a from-memory summary of it).
|
|
17
|
+
- Technical-art evidence includes material kit, VFX readability, instancing/LOD/culling decision, DPR/post/shadow tradeoffs, and imported asset diagnostics when generated/imported assets are used.
|
|
18
|
+
- Premium gate passes only when every category is at least 2 and average score is at least 2.3.
|
|
19
|
+
- Showcase gate passes only when at least six categories are 3, no category is below 2, and average score is at least 2.7.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Material and Lighting Quality Checklist
|
|
2
|
+
|
|
3
|
+
Gate the lighting/material recipes in `../render-recipes.md` and the material kit in `../technical-art.md`.
|
|
4
|
+
|
|
5
|
+
- Renderer color space, tone mapping, exposure, and shadow settings are intentional.
|
|
6
|
+
- Key, fill, rim, ambient, and environment lighting follow the lighting stack in `../render-recipes.md` and clarify depth and gameplay roles.
|
|
7
|
+
- Materials avoid flat default looks through roughness/metalness/emissive/vertex-color variation.
|
|
8
|
+
- Important objects have readable silhouettes against background, fog, and effects.
|
|
9
|
+
- Shadows help ground assets without obscuring navigation or collision boundaries.
|
|
10
|
+
- Fog, bloom, particles, and post-processing support readability instead of hiding it.
|
|
11
|
+
- Procedural textures or decals are scaled, stable, and not visually noisy during movement.
|
|
12
|
+
- Materials reuse the shared kit in `../technical-art.md` where possible and are disposed when obsolete.
|
|
13
|
+
- Desktop and mobile screenshots are checked after lighting/material changes.
|
|
14
|
+
- Renderer info or frame-time evidence is gathered when render cost changes.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Performance-Safe Visual Detail Checklist
|
|
2
|
+
|
|
3
|
+
Gate the render budget and instancing/LOD guidance in `../technical-art.md`.
|
|
4
|
+
|
|
5
|
+
- Baseline renderer info is captured when increasing fidelity.
|
|
6
|
+
- Draw calls, triangles, geometries, materials, textures, and frame time are reviewed against the render budget in `../technical-art.md` after changes.
|
|
7
|
+
- Repeated details use the instancing/LOD approach in `../technical-art.md`: instancing, shared resources, atlases, or generated texture reuse where practical.
|
|
8
|
+
- High segment counts are limited to silhouette-critical forms.
|
|
9
|
+
- Shadows are scoped by light count, shadow map size, casters/receivers, and camera distance.
|
|
10
|
+
- Post-processing is justified by gameplay readability or strong art direction.
|
|
11
|
+
- DPR caps or adaptive quality are considered for mobile.
|
|
12
|
+
- Generated resources have a disposal/reuse strategy.
|
|
13
|
+
- The worst-case gameplay scene, not only idle view, is inspected.
|
|
14
|
+
- Visual detail remains readable at mobile resolution without excessive GPU cost.
|