evomeme-dev 0.1.7
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/README.md +247 -0
- package/bin/evomeme +28 -0
- package/dist/canvas-public/app.js +5857 -0
- package/dist/canvas-public/cycle-detect.js +166 -0
- package/dist/canvas-public/index.html +395 -0
- package/dist/canvas-public/sequence-sheet.js +59 -0
- package/dist/canvas-public/smart-split.js +185 -0
- package/dist/canvas-public/styles.css +2276 -0
- package/dist/canvas-public/vendor/painterro.min.js +3 -0
- package/dist/index.js +25586 -0
- package/package.json +69 -0
- package/skills/evomeme-cloud-fs/SKILL.md +176 -0
- package/skills/evomeme-cloud-fs/agents/openai.yaml +7 -0
- package/skills/evomeme-cover/SKILL.md +132 -0
- package/skills/evomeme-cover/agents/openai.yaml +7 -0
- package/skills/evomeme-game-maker/SKILL.md +214 -0
- package/skills/evomeme-game-maker/agents/openai.yaml +4 -0
- package/skills/evomeme-login/SKILL.md +92 -0
- package/skills/evomeme-login/agents/openai.yaml +7 -0
- package/skills/evomeme-native-bridge-sdk/SKILL.md +286 -0
- package/skills/evomeme-native-bridge-sdk/agents/openai.yaml +7 -0
- package/skills/evomeme-tos-upload/SKILL.md +46 -0
- package/skills/evomeme-tos-upload/agents/openai.yaml +4 -0
- package/skills/game-art/SKILL.md +121 -0
- package/skills/game-art/agents/openai.yaml +7 -0
- package/skills/game-asset-image-generator/SKILL.md +104 -0
- package/skills/game-asset-image-generator/agents/openai.yaml +7 -0
- package/skills/game-asset-image-generator/references/background.md +32 -0
- package/skills/game-asset-image-generator/references/static-game-assets.md +38 -0
- package/skills/game-audio/SKILL.md +82 -0
- package/skills/game-audio/agents/openai.yaml +4 -0
- package/skills/game-audio/references/bgm-cdn.md +127 -0
- package/skills/game-audio/references/sfx-cdn.md +77 -0
- package/skills/game-demo/SKILL.md +103 -0
- package/skills/game-demo/agents/openai.yaml +7 -0
- package/skills/game-maker/SKILL.md +111 -0
- package/skills/game-maker/agents/openai.yaml +4 -0
- package/skills/game-test/SKILL.md +58 -0
- package/skills/game-test/agents/openai.yaml +7 -0
- package/skills/game-test/references/checklists/playtest-qa.md +12 -0
- package/skills/game-ui/SKILL.md +169 -0
- package/skills/game-ui/agents/openai.yaml +4 -0
- package/skills/game-ui/references/checklists/game-ui-quality.md +14 -0
- package/skills/game-ui/references/checklists/hud-readability.md +12 -0
- package/skills/game-ui/references/checklists/mobile-input.md +12 -0
- package/skills/game-ui/references/checklists/responsive-ui-fit.md +12 -0
- package/skills/game-ui/references/ui-patterns.md +140 -0
- package/skills/game-ui/references/ui-prompt-templates.md +63 -0
- package/skills/phaser-2d-game/SKILL.md +127 -0
- package/skills/phaser-2d-game/agents/openai.yaml +7 -0
- package/skills/phaser-2d-game/references/engine-performance.md +64 -0
- package/skills/phaser-2d-game/references/engine-physics.md +139 -0
- package/skills/phaser-2d-game/references/engine-runtime.md +129 -0
- package/skills/phaser-2d-game/references/engine-spritesheets.md +99 -0
- package/skills/phaser-2d-game/references/engine-tilemaps.md +80 -0
- package/skills/phaser-2d-game/references/file-structure.md +94 -0
- package/skills/phaser-2d-graphics-builder/SKILL.md +68 -0
- package/skills/phaser-2d-graphics-builder/agents/openai.yaml +7 -0
- package/skills/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-1.jpeg +0 -0
- package/skills/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-2.jpeg +0 -0
- package/skills/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
- package/skills/phaser-2d-graphics-builder/references/checklists/compose-quality.md +10 -0
- package/skills/phaser-2d-graphics-builder/references/checklists/performance-safe-visual-detail.md +9 -0
- package/skills/phaser-2d-graphics-builder/references/checklists/premium-game-quality-gate.md +15 -0
- package/skills/phaser-2d-graphics-builder/references/checklists/sprite-quality.md +10 -0
- package/skills/phaser-2d-graphics-builder/references/checklists/technical-art-quality.md +9 -0
- package/skills/phaser-2d-graphics-builder/references/checklists/visual-scorecard.md +9 -0
- package/skills/phaser-2d-graphics-builder/references/compose-recipes.md +71 -0
- package/skills/phaser-2d-graphics-builder/references/graphics-prompt-templates.md +33 -0
- package/skills/phaser-2d-graphics-builder/references/implementation-blueprint.md +82 -0
- package/skills/phaser-2d-graphics-builder/references/sprite-recipes.md +90 -0
- package/skills/phaser-2d-graphics-builder/references/technical-art.md +67 -0
- package/skills/phaser-2d-graphics-builder/references/vfx-recipes.md +67 -0
- package/skills/phaser-2d-graphics-builder/references/visual-scorecard.md +129 -0
- package/skills/threejs-3d-game/SKILL.md +113 -0
- package/skills/threejs-3d-game/agents/openai.yaml +7 -0
- package/skills/threejs-3d-game/references/engine-asset-pipeline.md +116 -0
- package/skills/threejs-3d-game/references/engine-audio.md +70 -0
- package/skills/threejs-3d-game/references/engine-input-camera.md +84 -0
- package/skills/threejs-3d-game/references/engine-performance.md +96 -0
- package/skills/threejs-3d-game/references/engine-physics.md +142 -0
- package/skills/threejs-3d-game/references/engine-runtime.md +199 -0
- package/skills/threejs-3d-game/references/file-structure.md +353 -0
- package/skills/threejs-aaa-graphics-builder/SKILL.md +62 -0
- package/skills/threejs-aaa-graphics-builder/agents/openai.yaml +7 -0
- package/skills/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-1.jpg +0 -0
- package/skills/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-2.jpg +0 -0
- package/skills/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
- package/skills/threejs-aaa-graphics-builder/references/checklists/aaa-game-quality-gate.md +23 -0
- package/skills/threejs-aaa-graphics-builder/references/checklists/aaa-visual-scorecard.md +19 -0
- package/skills/threejs-aaa-graphics-builder/references/checklists/material-lighting-quality.md +14 -0
- package/skills/threejs-aaa-graphics-builder/references/checklists/performance-safe-visual-detail.md +14 -0
- package/skills/threejs-aaa-graphics-builder/references/checklists/procedural-model-quality.md +15 -0
- package/skills/threejs-aaa-graphics-builder/references/checklists/technical-art-quality.md +17 -0
- package/skills/threejs-aaa-graphics-builder/references/graphics-prompt-templates.md +236 -0
- package/skills/threejs-aaa-graphics-builder/references/implementation-blueprint.md +161 -0
- package/skills/threejs-aaa-graphics-builder/references/model-recipes.md +146 -0
- package/skills/threejs-aaa-graphics-builder/references/render-recipes.md +90 -0
- package/skills/threejs-aaa-graphics-builder/references/shader-cookbook.md +292 -0
- package/skills/threejs-aaa-graphics-builder/references/technical-art.md +167 -0
- package/skills/threejs-aaa-graphics-builder/references/visual-scorecard.md +147 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# H5 游戏文件结构规范
|
|
2
|
+
|
|
3
|
+
本文档定义手机 H5 游戏的标准文件结构。项目是 Vite + React + Phaser 应用:游戏画面由 Phaser 管理,DOM UI 由 React 管理。**这是本插件所有 2D 代码结构和配置文件的唯一规范来源**,`game-director`、`game-designer`、`game-art`、`game-asset-image-generator` 在涉及 2D 项目的 config 或目录结构时必须遵循本文件。3D 项目见 `../threejs-3d-game/references/file-structure.md`。
|
|
4
|
+
|
|
5
|
+
## `/public/config.json` 规则
|
|
6
|
+
|
|
7
|
+
`/public/config.json` 是游戏运行时外置配置文件,构建后原样输出为 `/dist/config.json`。
|
|
8
|
+
|
|
9
|
+
### 存储规则
|
|
10
|
+
|
|
11
|
+
1. 所有用户可调颜色、玩法参数、平衡数值和资源 URL 必须写入 `/public/config.json`,禁止硬编码在业务代码中。
|
|
12
|
+
2. 游戏代码必须通过 `fetch("./config.json")`(相对路径)读取配置;禁止使用绝对路径 `/config.json`;禁止从 `src` 目录直接 `import config.json`。
|
|
13
|
+
3. 不得在 React、Phaser、CSS 中重复硬编码同一份用户可调值。
|
|
14
|
+
|
|
15
|
+
### 结构要求:必须严格扁平
|
|
16
|
+
|
|
17
|
+
config **必须是扁平顶层对象**,每个参数都是直接顶层 key,**禁止**按 `assets`、`images`、`gameplay`、`colors`、`params` 等分组:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
// 正确 —— 扁平
|
|
21
|
+
{ "image_background": { ... }, "gravity_scale": { ... } }
|
|
22
|
+
|
|
23
|
+
// 错误 —— 禁止嵌套分组
|
|
24
|
+
{ "assets": { "background": { ... } }, "gameplay": { "gravity": { ... } } }
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
每个 key 分两类:
|
|
28
|
+
|
|
29
|
+
- **可见参数**(key 不以 `_` 开头):暴露给用户编辑,必须使用下方标准 schema。
|
|
30
|
+
- **不可见参数**(key 以 `_` 开头):内部字段(如 `_game_name`、`_config_version`),原始值即可,不使用 schema。
|
|
31
|
+
|
|
32
|
+
### 可见参数 schema
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
"key_name": {
|
|
36
|
+
"value": <实际值>,
|
|
37
|
+
"type": "int" | "float" | "color" | "bool" | "string" | "audio" | "image" | "video",
|
|
38
|
+
"label": "<用户语言标签,≤10字>",
|
|
39
|
+
"min": <数字>,
|
|
40
|
+
"max": <数字>
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
规则:
|
|
45
|
+
|
|
46
|
+
- `type` 只能是 `int`、`float`、`color`、`bool`、`string`、`audio`、`image`、`video`。
|
|
47
|
+
- `label` 使用用户语言,长度不超过 10 个字符。
|
|
48
|
+
- `min`/`max` 只在 `int`/`float` 时出现,且必须同时给出。
|
|
49
|
+
- `type: "color"` 使用十六进制颜色字符串。
|
|
50
|
+
- `type: "image"` 必须额外声明 `"image_type": "Asset"` 和 `"size": "宽x高"`(如 `"1440x2560"`),供无法读取真实图片尺寸时判断显示尺寸。
|
|
51
|
+
- `audio`/`image`/`video` 的 `value` 必须是真实可访问的外部 `http(s)` URL;禁止本地相对路径。图片由上游异步生成,URL 短暂 404 不代表素材失效,不得因此改写、替换或删除素材。
|
|
52
|
+
|
|
53
|
+
### 示例
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"_game_name": "示例游戏",
|
|
58
|
+
"_config_version": 1,
|
|
59
|
+
"move_speed": { "value": 220, "type": "int", "label": "移动速度", "min": 50, "max": 400 },
|
|
60
|
+
"gravity_scale": { "value": 1.2, "type": "float", "label": "重力倍率", "min": 0.2, "max": 3 },
|
|
61
|
+
"theme_background_color": { "value": "#10131f", "type": "color", "label": "背景色" },
|
|
62
|
+
"enable_shake": { "value": true, "type": "bool", "label": "震屏开关" },
|
|
63
|
+
"start_button_text": { "value": "开始游戏", "type": "string", "label": "开始文案" },
|
|
64
|
+
"bgm_main": { "value": "https://example.com/bgm.mp3", "type": "audio", "label": "背景音乐" },
|
|
65
|
+
"image_background": {
|
|
66
|
+
"value": "https://example.com/background.png",
|
|
67
|
+
"type": "image",
|
|
68
|
+
"image_type": "Asset",
|
|
69
|
+
"size": "1440x2560",
|
|
70
|
+
"label": "背景图"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## `/user_upload` 目录规则
|
|
76
|
+
|
|
77
|
+
`/user_upload` 是用户上传素材的虚拟目录,其下文件不是真实素材文件,只保存素材链接或元数据。
|
|
78
|
+
|
|
79
|
+
1. 需要使用用户上传素材时,先读取 `/user_upload` 下对应文件,提取真实 URL。
|
|
80
|
+
2. 不要把 `/user_upload/...` 当成本地素材路径;最终代码必须引用提取出的真实 URL。
|
|
81
|
+
|
|
82
|
+
## 部署与路径规则
|
|
83
|
+
|
|
84
|
+
1. 最终部署产物固定为 `/dist`,以静态站点形式部署,运行时资源必须能通过浏览器直接访问。
|
|
85
|
+
2. `/dist` 必须能脱离源码目录独立运行:所有运行时代码、资源、chunk、CSS、音频、图片和配置只能引用 `/dist` 内文件或外部 `http(s)` 链接,必须使用相对路径或构建产物内部路径,严禁指向源码目录的运行时引用。
|
|
86
|
+
3. `vite.config.js` 必须设置 `base: './'`,使构建产物使用相对路径(`./assets/...`),保证在任意子路径部署都能运行。
|
|
87
|
+
4. 所有运行时字符串路径(`fetch`、`Audio`、动态 `import`、CSS `url()`)必须使用 `./` 相对路径,禁止以 `/` 开头的绝对路径。
|
|
88
|
+
|
|
89
|
+
## 项目根目录必需文件
|
|
90
|
+
|
|
91
|
+
- `/project.md`:唯一游戏需求来源(策划案),后续所有开发依据此文件。
|
|
92
|
+
- `/public/config.json`:运行时配置与素材绑定契约。
|
|
93
|
+
- `/src`:Vite + React + Phaser 源码。
|
|
94
|
+
- `/dist`:构建产物,交付物。
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: phaser-2d-graphics-builder
|
|
3
|
+
description: 将 Phaser 2D 游戏从基础/原型视觉升级为高品质画面。涵盖美术方向评审、2D 场景范式、精灵/世界套件、MCP 生图、摄像机/视差/构图打磨、事件特效、性能预算与视觉评分门控。在竖屏或浏览器 Phaser 游戏需要超越占位色块的可度量视觉提质时使用。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Phaser 2D Graphics Builder
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Own the production graphics pass for Phaser games. Convert basic screenshots into authored, layered, performance-aware visual experiences—without treating particles and glow as a substitute for real art.
|
|
11
|
+
|
|
12
|
+
## Use When
|
|
13
|
+
|
|
14
|
+
Screenshots still look basic, heroes/enemies are SVG placeholders or flat shapes, worlds are sparse or single flat backgrounds, UI/world art feels generic, or the user asks for premium, high-fidelity, showcase, 画面精美/高级, or less-basic 2D graphics.
|
|
15
|
+
|
|
16
|
+
## Required References
|
|
17
|
+
|
|
18
|
+
These references are required phase-entry gates, not optional reading:
|
|
19
|
+
|
|
20
|
+
- Load `../game-art/references/scene-profiles.md` and select a `scene_profile_id` before world kit, compose polish, or any claim that World/environment is authored. Read only the **World + 2D · Compose + Entities + Reject** sections for that profile; this skill executes the production pass against it.
|
|
21
|
+
- Load `../game-art/references/advanced-art-styles.md` when the user asked for 画面精美/高级/精品视觉 and a premium style has not yet been locked; otherwise keep the existing `art-styles.md` choice.
|
|
22
|
+
- Load `references/visual-scorecard.md` before scoring, judging completion, or making any premium/showcase claim. **View** `assets/scorecard-anchors/scene-1.jpeg`, `scene-2.jpeg`, and `scene-3.jpg` when scoring World, Hero, Sprite fidelity, Compose, or VFX—or before any premium/showcase claim.
|
|
23
|
+
- Load `references/implementation-blueprint.md` before changing graphics architecture, sprite factories, VFX, compose systems, diagnostics, or broad visual systems.
|
|
24
|
+
- Load `references/sprite-recipes.md` before building or upgrading hero/player, obstacle, enemy, pickup, world-kit, or prop sprites.
|
|
25
|
+
- Load `references/compose-recipes.md` before changing camera, parallax, tint/overlay, depth sorting, vignette, or screen-space compose.
|
|
26
|
+
- Load `references/technical-art.md` before premium/showcase graphics work, atlas/texture strategy, particle/VFX systems, or visual changes that could affect mobile performance.
|
|
27
|
+
- Load `references/vfx-recipes.md` before adding particles, trails, flashes, hitstop-linked FX, or event-driven juice.
|
|
28
|
+
- Load `references/checklists/premium-game-quality-gate.md` and `references/checklists/visual-scorecard.md` before declaring a game premium, showcase, complete, release-ready, or less basic.
|
|
29
|
+
- Load the relevant checklist before focused work: `references/checklists/sprite-quality.md`, `references/checklists/compose-quality.md`, `references/checklists/performance-safe-visual-detail.md`, or `references/checklists/technical-art-quality.md`.
|
|
30
|
+
- Load `references/graphics-prompt-templates.md` only when the user asks for reusable prompts, a graphics-pass prompt, or a task template.
|
|
31
|
+
|
|
32
|
+
For broad "still looks basic", premium, showcase, high-fidelity, or less-basic graphics work, load the scene-profiles paradigm (2D Compose rail) plus all five core references (`visual-scorecard`, `implementation-blueprint`, `sprite-recipes`, `compose-recipes`, `technical-art`) as the first action in the phase. Track them in a reference ledger with yes/no, path, and failure reason. Do not mark the graphics phase complete while any required reference is skipped.
|
|
33
|
+
|
|
34
|
+
External asset sourcing gate:
|
|
35
|
+
|
|
36
|
+
- For premium/showcase/high-fidelity/less-basic graphics with a hero/player, character, creature, boss, vehicle, weapon, signature prop, complex pickup, background, or parallax layer, load `../game-asset-image-generator/SKILL.md` before deciding SVG/CSS placeholders or procedural shapes are enough.
|
|
37
|
+
- Prefer MCP `evomeme_generate_game_image` (and `evomeme_cutout_game_image` when needed) via `game-asset-image-generator`; bind URLs in `public/config.json` per `../phaser-2d-game/references/file-structure.md`.
|
|
38
|
+
- Create an asset sourcing ledger for each high-value surface: mcp-image / hybrid / user-provided / procedural, plus outputs or skip reason.
|
|
39
|
+
- `not-needed` is valid only after the relevant path was considered and the ledger explains why generation would not improve a non-hero support surface, or why an attempted MCP call shows a real blocker.
|
|
40
|
+
- For premium hero surfaces and main backgrounds, procedural/SVG-only is not an allowed final answer unless there is real blocker evidence. At least one high-value surface must show an MCP `asset_url` (or user-provided path) written into `public/config.json`.
|
|
41
|
+
|
|
42
|
+
## Workflow
|
|
43
|
+
|
|
44
|
+
1. Capture or inspect active mobile (and desktop if in scope) screenshots of gameplay—not only the title screen.
|
|
45
|
+
2. Confirm or select a `scene_profile_id` from `../game-art/references/scene-profiles.md` (World / 2D · Compose / Entities). If missing, write it before upgrading surfaces.
|
|
46
|
+
3. Score visuals across art direction, hero/player, obstacles, rewards, world, sprite fidelity, compose, VFX, UI, and performance evidence—**after** comparing the active-play screenshot to `assets/scorecard-anchors/` (`scene-1` / `scene-2` / `scene-3`).
|
|
47
|
+
4. Add missing graphics architecture: sprite factories / world prop kit, depth/layer contract, tint/compose helpers, VFX system, technical-art budget, diagnostics.
|
|
48
|
+
5. Fill the external asset sourcing ledger per surface; generate/bind missing hero, hazard, reward, background, and parallax assets through `game-asset-image-generator`.
|
|
49
|
+
6. Upgrade every weak visible surface, not only one hero sprite. World layers must match the chosen scene-profiles paradigm (Play / Near / Mid / Far / Motion).
|
|
50
|
+
7. Add camera/parallax/tint/compose polish after authored sprites and backgrounds exist, following `references/compose-recipes.md`.
|
|
51
|
+
8. Add event-driven VFX tied to gameplay state per `references/vfx-recipes.md`—after forms and compose are readable. Management/sim genres may use status bubbles, progress rings, and day-night cues as primary readability FX when particle bursts would hurt clarity.
|
|
52
|
+
9. Re-score screenshots against the same anchors. Continue until every premium category is at least 2/3 or report exact blockers.
|
|
53
|
+
10. Run the fresh-eyes review per `references/visual-scorecard.md` before finalizing premium/showcase claims.
|
|
54
|
+
11. Verify Phaser/display budgets against `references/technical-art.md`, mobile screenshots, console/page errors, and playability. Engine constraints: `../phaser-2d-game/references/engine-performance.md` and `../phaser-2d-game/references/engine-spritesheets.md`.
|
|
55
|
+
|
|
56
|
+
## Core Rule
|
|
57
|
+
|
|
58
|
+
Do not make placeholders look premium by adding glow, bloom-like overlays, or ambient particles. First author silhouettes and layered world art, then compose (depth/parallax/tint), then event-driven effects.
|
|
59
|
+
|
|
60
|
+
## Boundaries
|
|
61
|
+
|
|
62
|
+
- Domains owned here: world/sprite visual production pass, compose, in-world VFX readability, graphics budgets, scorecard.
|
|
63
|
+
- Not owned here: core gameplay rules (`game-designer`), DOM HUD/menu design (`game-ui`), audio binding (`game-audio`), Phaser architecture basics (`phaser-2d-game`), art-direction selection alone (`game-art`—this skill consumes its outputs and runs the upgrade pass).
|
|
64
|
+
- Formal HUD remains DOM overlay; do not move dense UI into Canvas to “look fancy”.
|
|
65
|
+
|
|
66
|
+
## Final Response
|
|
67
|
+
|
|
68
|
+
Report the reference ledger, external asset sourcing ledger, technical art brief, score before/after (cite which anchor each weak/strong category resembled), production surfaces upgraded, files changed, screenshots/artifacts, display/texture budget notes, VFX readability tradeoffs, and remaining blockers. For premium/showcase claims, include the filled visual scorecard exactly as defined in `references/visual-scorecard.md`, including average and automatic failures remaining.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Compose Quality Checklist
|
|
2
|
+
|
|
3
|
+
- [ ] Camera model matches `scene_profile_id`
|
|
4
|
+
- [ ] Depth layer table documented and applied
|
|
5
|
+
- [ ] Parallax ratios sensible; Far slower than Play
|
|
6
|
+
- [ ] Tint/vignette does not gray-out state colors
|
|
7
|
+
- [ ] Shake/punch does not hide next decision
|
|
8
|
+
- [ ] No CSS/transform scaling of the game canvas
|
|
9
|
+
- [ ] Near occluders do not block critical telegraphs
|
|
10
|
+
- [ ] Readability tests passed on mobile screenshot
|
package/skills/phaser-2d-graphics-builder/references/checklists/performance-safe-visual-detail.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Performance-Safe Visual Detail Checklist
|
|
2
|
+
|
|
3
|
+
- [ ] Particle/emitter caps set and respected
|
|
4
|
+
- [ ] Bullets/FX/enemies pooled where spammy
|
|
5
|
+
- [ ] Large biome textures unload or reuse across scenes when possible
|
|
6
|
+
- [ ] Parallax layer count justified (≤ strong layers, not many weak)
|
|
7
|
+
- [ ] First-cut order documented (what drops on low FPS)
|
|
8
|
+
- [ ] No per-frame texture generation
|
|
9
|
+
- [ ] Lights Manager avoided unless budgeted
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Premium Game Quality Gate (2D)
|
|
2
|
+
|
|
3
|
+
Before claiming premium / showcase / release-ready visuals:
|
|
4
|
+
|
|
5
|
+
- [ ] `scene_profile_id` recorded from `scene-profiles.md`
|
|
6
|
+
- [ ] Active-play screenshot compared to `assets/scorecard-anchors/` before scoring
|
|
7
|
+
- [ ] Reference ledger complete (no skipped required refs without reason)
|
|
8
|
+
- [ ] Asset sourcing ledger complete for hero + main background (+ primary hazards)
|
|
9
|
+
- [ ] Visual scorecard filled; premium or showcase thresholds met
|
|
10
|
+
- [ ] Automatic Failures = none
|
|
11
|
+
- [ ] Fresh-eyes review done
|
|
12
|
+
- [ ] Mobile active-play screenshot captured
|
|
13
|
+
- [ ] Technical art brief + budgets noted
|
|
14
|
+
- [ ] Formal HUD still DOM (unless project explicitly requires Canvas HUD)
|
|
15
|
+
- [ ] Playability not regressed (controls, hitboxes fair)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Sprite Quality Checklist
|
|
2
|
+
|
|
3
|
+
- [ ] Hero facing matches movement/art brief
|
|
4
|
+
- [ ] Hero readable at mobile play size without glow crutch
|
|
5
|
+
- [ ] Hazards: enough silhouette variants for the genre (or documented single-threat)
|
|
6
|
+
- [ ] Rewards distinct from hazards in shape and color
|
|
7
|
+
- [ ] Backgrounds free of characters/UI baked into plates
|
|
8
|
+
- [ ] Spritesheet frame sizes measured before loader config
|
|
9
|
+
- [ ] `config.json` keys bound for all premium surfaces claimed
|
|
10
|
+
- [ ] Collision proxies fair vs art overhang
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Technical Art Quality Checklist
|
|
2
|
+
|
|
3
|
+
- [ ] Technical art brief written before broad visual changes
|
|
4
|
+
- [ ] Hero vs support surfaces listed
|
|
5
|
+
- [ ] Texture/atlas plan noted
|
|
6
|
+
- [ ] VFX language + caps noted
|
|
7
|
+
- [ ] Asset strategy per high-value surface recorded
|
|
8
|
+
- [ ] Mobile constraints acknowledged
|
|
9
|
+
- [ ] Post-pass diagnostics reported (even if qualitative + caps)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Visual Scorecard Checklist (2D)
|
|
2
|
+
|
|
3
|
+
- [ ] Compared active-play screenshot to `assets/scorecard-anchors/` (scene-1 / scene-2 / scene-3)
|
|
4
|
+
- [ ] Scored from active-play screenshot (not title-only)
|
|
5
|
+
- [ ] All 10 categories scored 0–3 with one-line evidence
|
|
6
|
+
- [ ] Average computed
|
|
7
|
+
- [ ] Automatic Failures checked explicitly
|
|
8
|
+
- [ ] Fresh-eyes weakest-two named
|
|
9
|
+
- [ ] Measured evidence cited for textures/config/screenshots where claiming ≥2 on fidelity/performance
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Compose Recipes (Phaser 2D)
|
|
2
|
+
|
|
3
|
+
Use before changing camera, parallax, global tint, vignette, depth sorting, or screen-space overlays. Compose supports readability; it is not a replacement for authored sprites.
|
|
4
|
+
|
|
5
|
+
## Camera
|
|
6
|
+
|
|
7
|
+
| Model | When | Notes |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| Lock | `portrait_stage`, `board_table`, `fixed_arena` | Punch zoom on big events only |
|
|
10
|
+
| Follow + deadzone | `side_scroll_lane`, `topdown_map`, `runner_lane` | Deadzone avoids jitter |
|
|
11
|
+
| Room snap | Metroidvania-like | Bounds = room; no lerp fight |
|
|
12
|
+
|
|
13
|
+
Rules:
|
|
14
|
+
|
|
15
|
+
- Camera logic stays out of gameplay Systems when possible.
|
|
16
|
+
- Shake intensity scales with event severity; never obscure the next hazard.
|
|
17
|
+
- Prefer Phaser camera effects over CSS transforms on the canvas.
|
|
18
|
+
- World bounds and physics bounds stay aligned (`phaser-2d-game`).
|
|
19
|
+
|
|
20
|
+
## Parallax
|
|
21
|
+
|
|
22
|
+
1. Place Far → Mid → Play → Near per `DepthLayers`.
|
|
23
|
+
2. Set `scrollFactorX/Y` (or parent container motion) so Far moves slowest.
|
|
24
|
+
3. Near may move slightly faster than Play for depth, but must not cover telegraphs.
|
|
25
|
+
4. Disable strong parallax on `topdown_map` / `board_table` unless subtle.
|
|
26
|
+
|
|
27
|
+
Reject: background scrolling faster than player decision reading; mismatched tile seams while scrolling.
|
|
28
|
+
|
|
29
|
+
## Tint / Overlay / Vignette
|
|
30
|
+
|
|
31
|
+
Use a single full-screen Image/Graphics or Camera fade for:
|
|
32
|
+
|
|
33
|
+
- Biome mood (cool night, warm dusk).
|
|
34
|
+
- Pressure (arena wave)—keep center Play clearer than edges.
|
|
35
|
+
- Damage flash (≤100–150ms).
|
|
36
|
+
|
|
37
|
+
Do **not**:
|
|
38
|
+
|
|
39
|
+
- Stack multiple multiply overlays until art is gray mush.
|
|
40
|
+
- Use permanent heavy vignette to hide empty Far layers.
|
|
41
|
+
- Recolor every sprite differently so the palette collapses.
|
|
42
|
+
|
|
43
|
+
Signal colors (hazard / reward / safe) stay consistent with HUD tokens.
|
|
44
|
+
|
|
45
|
+
## Depth Sorting
|
|
46
|
+
|
|
47
|
+
- Static world: fixed depths from the layer table.
|
|
48
|
+
- Mobile actors: Y-sort within Play band, or explicit depth = `base + y`.
|
|
49
|
+
- VFX above the actor that owns them, below Near occluders unless the FX is screen-space.
|
|
50
|
+
|
|
51
|
+
## Screen FX vs World FX
|
|
52
|
+
|
|
53
|
+
| Kind | Placement | Examples |
|
|
54
|
+
| --- | --- | --- |
|
|
55
|
+
| World FX | At entity position, Play/Motion depth | Impact burst, dash dust |
|
|
56
|
+
| Screen FX | Camera-fixed container | Hit flash, edge warning |
|
|
57
|
+
|
|
58
|
+
Prefer world FX for spatial clarity; screen FX for global state only.
|
|
59
|
+
|
|
60
|
+
## Readability Tests
|
|
61
|
+
|
|
62
|
+
After compose changes, verify on mobile:
|
|
63
|
+
|
|
64
|
+
1. Hero silhouette still finds the eye in <1s.
|
|
65
|
+
2. Next hazard/reward in the decision window is unobscured.
|
|
66
|
+
3. Parallax does not cause mis-taps on touch targets (DOM HUD separate).
|
|
67
|
+
4. No CSS scaling of the game canvas.
|
|
68
|
+
|
|
69
|
+
## Checklist Hook
|
|
70
|
+
|
|
71
|
+
Run `checklists/compose-quality.md` before scoring the Compose category.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Graphics Pass Prompt Templates (Phaser 2D)
|
|
2
|
+
|
|
3
|
+
Use only when the user asks for reusable prompts or a templated graphics pass.
|
|
4
|
+
|
|
5
|
+
## Full premium pass
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
Load phaser-2d-graphics-builder. Select or confirm scene_profile_id from game-art/references/scene-profiles.md (2D Compose rail only).
|
|
9
|
+
Fill reference ledger (visual-scorecard, implementation-blueprint, sprite-recipes, compose-recipes, technical-art).
|
|
10
|
+
Score current mobile active-play screenshot. Build asset sourcing ledger; generate missing hero/bg/parallax via game-asset-image-generator.
|
|
11
|
+
Upgrade all weak surfaces; then compose; then event VFX. Re-score to premium thresholds or list blockers.
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Hero + background only
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
Graphics pass scoped to hero silhouette and Far/Mid backgrounds for profile <id>.
|
|
18
|
+
MCP-generate and bind config keys; do not redesign HUD. Report scorecard categories 2, 5, 6 only plus blockers.
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Compose-only
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
Do not regenerate art. Fix camera/parallax/depth/tint per compose-recipes for profile <id>.
|
|
25
|
+
Verify readability tests; update technical-art notes if layer count changed.
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## VFX-only
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
Sprites/world already premium. Add event-driven FX from vfx-recipes for: <events>.
|
|
32
|
+
Pool emitters; respect technical-art caps; no ambient filler.
|
|
33
|
+
```
|
|
@@ -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.
|