Builds and refactors Phaser 3 browser games. Use for creating a new Phaser project, adding scenes, entities, physics, UI, tilemaps, animations, input, audio, camera, or for fixing Phaser-specific bugs and performance problems.
When a repository already exists, inspect before proposing structure changes:
package.json, bundler config, tsconfig/jsconfig
Phaser version and whether the codebase is JS or TS
game bootstrap, scene list, physics config, scale config
asset folders and naming conventions
current state-sharing approach (scene data, registry, services, globals)
whether the project is pixel art, HD art, desktop-first, mobile-first, or mixed input
Prefer adapting to the existing codebase over replacing it with boilerplate.
3. Default technical choices
Use these defaults unless the task clearly calls for something else:
Prefer the official Vite + TypeScript style setup for new projects
Prefer Arcade Physics for platformers, shooters, top-down action, simple pickups, and lightweight collision logic
Use Matter Physics only when the game needs rotation-driven collisions, compound bodies, constraints, stacking stability, or more realistic simulation
Organize code around Scenes first, then entities / systems inside scenes
Keep input scene-owned; entities should consume input state, not attach their own listeners
Use global animations when multiple sprites share the same animation data
Preload startup-critical assets up front; load level-specific assets later when it improves startup time
Use built-in NineSlice / ThreeSlice for scalable UI art when the texture layout supports it; only fall back to custom compositing when transparent padding or discontinuous art breaks built-in slicing
Use FIT scaling for most games, RESIZE for editor-like or UI-heavy layouts, and NONE only when manually controlling canvas sizing
For pixel art, enable pixelArt mode, favor integer scaling where possible, and avoid sub-pixel camera movement
4. Output expectations
For new games, provide:
the recommended folder structure
a game config
scene list and responsibilities
starter code that runs
notes on why each architectural choice fits the requested genre
For feature work or bug fixes, provide:
minimal targeted edits
root cause explanation
the patch
validation steps the user can run immediately
For architecture advice, provide:
the smallest structure that solves the current problem
one recommended path, not a menu of equally-weighted options
explicit tradeoffs when the choice is important (for example Arcade vs Matter)
Non-negotiable implementation rules
Respect the project's existing JS vs TS choice unless the user asks to migrate
Centralize scene keys, asset keys, collision categories, and balance constants
Keep update() orchestration-focused; push detailed logic into entities or systems
Register cleanup for scene shutdown / destroy when you attach listeners, timers, tweens, or long-lived references
Avoid creating new objects inside hot update() loops unless profiling proves it is harmless
Do not make every object interactive or physics-enabled by default
Do not assume spritesheet frame dimensions; inspect and verify them
Do not tell the user to use Matter when Arcade already solves the problem cleanly
Do not preload the entire game into one Boot scene just because it is convenient
Recommended delivery workflow
New Phaser project
Pick the architecture size:
Small / jam game: 2-4 scenes, lightweight service modules
Mid-size game: scenes + entities + systems + constants
Large content-heavy game: data-driven content, scene services, dedicated state layer
Define the base config: renderer, scale mode, physics, pixel-art settings
Create startup scenes first: Boot, Menu, Game, UI; add Pause / GameOver only if required
Add one vertical slice that proves the core loop works