用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/CodySwannGT/lisa --skill phaser-project-structure命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | phaser-project-structure |
| description | creating, restructuring, or… |
This stack targets Phaser 4 (v4.2+, npm package phaser@^4.2.0), built
with Vite + TypeScript — the layout the official phaserjs/template-vite-ts
template and npm create @phaserjs/game@latest scaffold. Phaser 4 ships its own
type definitions (types/phaser.d.ts); do not add @types/phaser.
| Path | Role |
|---|---|
index.html | Single page that loads src/main.ts; owns the game container div |
src/main.ts | Game config + new Phaser.Game(config) — the only bootstrap file |
src/scenes/ | One scene class per file (Boot.ts, Preloader.ts, MainMenu.ts, Game.ts, …) |
src/logic/ | Pure TypeScript game logic — no phaser imports (testable) |
src/assets.ts | Typed asset-key constants (texture, audio, anim, scene keys) |
public/assets/ | Static assets served by Vite (atlases, audio, packs) — never imported |
tests/ | Vitest unit tests for src/logic/** and pure helpers |
dist/ | Vite build output — generated, never edited or committed |
One config object in src/main.ts. The opinionated baseline:
const config: Phaser.Types.Core.GameConfig = {
type: Phaser.AUTO, // WebGL; Canvas renderer is deprecated in v4
width: 1280,
height: 720,
parent: "game-container",
backgroundColor: "#028af8",
scale: {
mode: Phaser.Scale.FIT,
autoCenter: Phaser.Scale.CENTER_BOTH,
},
physics: {
default: "arcade",
arcade: { gravity: { x: 0, y: 0 }, debug: false }, // fixedStep defaults to true in v4 — keep it
},
scene: [Boot, Preloader, MainMenu, Game],
};
v4-specific config facts:
roundPixels now defaults to false (v3 defaulted true). Leave it — the
new default prevents flicker on rotated/scaled objects.pixelArt: true (nearest-neighbor + roundPixels), or the new
render.smoothPixelArt: true (WebGL-only) for pixel art that rotates or
scales smoothly. Pick one per project and record the choice.render.renderNodes — see the official filters-and-postfx skill.Phaser.HEADLESS exists for logic-only boots (tests) — see [[phaser-testing]].Four-stage boot, in order (see the official scenes skill for lifecycle detail):
loading-assets skill), then starts MainMenu.HUD, Pause run in parallel) — gameplay.src/; bun run dev (vite), bun run build
(vite build), bun run preview serve and package it.src/logic/ as pure functions/classes so Vitest can run them without
a browser.src/assets.ts constants — a typo in an inline string
key fails at runtime only; a typo in a constant fails at compile time.Phaser.Math.RND (or a local RandomDataGenerator) from a
single place; never Math.random() in game code.A structural change is verified when bun run typecheck, bun run test, and
bun run build pass AND the game boots: bun run dev, open the page, confirm
the canvas renders past the Preloader with no console errors.