Skip to main content

game-setup-and-config

Use this skill when creating a new Phaser 4 game instance or configuring GameConfig options. Covers renderer selection, canvas setup, scaling, pixel art, FPS settings, boot sequence, and all config sub-objects. Triggers on: new Phaser.Game, GameConfig, game setup, renderer, pixel art, FPS.

ソース情報

リポジトリ
phaserjs/phaser
ソースの最終更新活動
2026年4月10日 12:38
検出された SKILL.md の言語
英語
スター
40,490
フォーク
7,173

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
game-setup-and-config
description
Use this skill when creating a new Phaser 4 game instance or configuring GameConfig options. Covers renderer selection, canvas setup, scaling, pixel art, FPS settings, boot sequence, and all config sub-objects. Triggers on: new Phaser.Game, GameConfig, game setup, renderer, pixel art, FPS.
# Game Setup and Config > How to create a Phaser.Game instance with the right GameConfig options for renderer, scaling, pixel art, FPS, and canvas placement. **Key source paths:** `src/core/Game.js`, `src/core/Config.js`, `src/core/typedefs/GameConfig.js`, `src/const.js`, `src/scale/const/` **Related skills:** ../scenes/SKILL.md, ../loading-assets/SKILL.md, ../scale-and-responsive/SKILL.md ## Quick Start The simplest possible Phaser 4 game -- a single scene with the default 1024×768 canvas: ```js class MyScene extends Phaser.Scene { preload() { this.load.image('logo', 'assets/logo.png'); } create() { this.add.image(400, 300, 'logo'); } } const config = { type: Phaser.AUTO, scene: MyScene }; const game = new Phaser.Game(config); ``` `new Phaser.Game(config)` triggers the entire boot sequence: config parsing (`Config`), renderer creation, DOM insertion, and the game loop (`TimeStep`). The game waits for `DOMContentLoaded` before booting. ## Core Concepts ### Boot Sequence (src/core/Game.js) 1. `new Phaser.Game(config)` -- parses config into a `Phaser.Core.Config` instance. 2. Creates global managers: `AnimationManager`, `TextureManager`, `CacheManager`, `InputManager`, `SceneManager`, `ScaleManager`, `SoundManager`, `TimeStep`, `PluginManager`. 3. Waits for `DOMContentLoaded`, then calls `boot()`. 4. `boot()` creates the renderer (`CreateRenderer`), adds the canvas to the DOM (`AddToDOM`), prints the debug header, emits `BOOT`. 5. Once textures are ready (`TextureManager` emits `READY`), emits `READY` then calls `start()`. 6. `start()` begins the `TimeStep` loop, sets up the `VisibilityHandler`, calls `config.postBoot`. ### Config Parsing (src/core/Config.js) The `Config` constructor reads a flat `GameConfig` object and resolves defaults. Some properties can be specified at top level OR nested inside sub-objects (e.g., `width` can be top-level or under `scale.width`). The `scale` sub-object takes priority when both are present. Render properties can likewise be top-level shortcuts (e.g., `pixelArt: true`) or nested under `render`. ### Renderer Constants (src/const.js) | Constant | Value | Behavior | |---|---|---| | `Phaser.AUTO` | `0` | WebGL if supported, else falls back to Canvas | | `Phaser.CANVAS` | `1` | Force Canvas renderer | | `Phaser.WEBGL` | `2` | Force WebGL -- no fallback if unsupported | | `Phaser.HEADLESS` | `3` | No renderer -- DOM still required. For unit testing only | Set via `config.type`. Default is `Phaser.AUTO`. ## Common Patterns ### Pixel Art Game When `pixelArt` is `true`, Config automatically sets `antialias: false`, `antialiasGL: false`, and `roundPixels: true`. ```js const config = { type: Phaser.AUTO, width: 320, height: 240, pixelArt: true, scale: { mode: Phaser.Scale.FIT, autoCenter: Phaser.Scale.CENTER_BOTH, zoom: Phaser.Scale.ZOOM_2X }, scene: MyScene }; ``` ### Smooth Pixel Art (WebGL only) Preserves blocky pixels but smooths edges between them when scaled up: ```js const config = { type: Phaser.WEBGL, width: 320, height: 240, smoothPixelArt: true, scene: MyScene }; ``` When `smoothPixelArt` is `true`, Config sets `antialias: true`, `antialiasGL: true`, and `pixelArt: false`. ### Full-Window Responsive Game ```js const config = { type: Phaser.AUTO, scale: { mode: Phaser.Scale.RESIZE, parent: 'game-container', width: '100%', height: '100%' }, scene: MyScene }; ``` ### Fixed Aspect Ratio with FIT ```js const config = { type: Phaser.AUTO, scale: { mode: Phaser.Scale.FIT, parent: 'game-container', autoCenter: Phaser.Scale.CENTER_BOTH, width: 1280, height: 720, min: { width: 640, height: 360 }, max: { width: 1920, height: 1080 } }, backgroundColor: '#2d2d2d', scene: MyScene }; ``` ### Custom FPS Limit ```js const config = { type: Phaser.AUTO, width: 800, height: 600, fps: { target: 60, limit: 30, forceSetTimeOut: false, smoothStep: true }, scene: MyScene }; ``` ### Transparent Canvas Over HTML ```js const config = { type: Phaser.AUTO, width: 800, height: 600, transparent: true, parent: 'game-container', scene: MyScene }; ``` When `transparent` is `true`, `backgroundColor` is forced to `0x000000` with alpha `0`. ### Pre-existing Canvas Element ```js const canvas = document.getElementById('my-canvas'); const config = { type: Phaser.WEBGL, canvas: canvas, width: 800, height: 600, scene: MyScene }; ``` ### Multiple Scenes ```js const config = { type: Phaser.AUTO, width: 800, height: 600, scene: [BootScene, PreloadScene, MenuScene, GameScene], physics: { default: 'arcade', arcade: { gravity: { y: 300 } } } }; ``` Only the first scene starts automatically. Others start only if they have `{ active: true }` in their scene config. See ../scenes/SKILL.md. ### Boot Callbacks ```js const config = { type: Phaser.AUTO, width: 800, height: 600, callbacks: { preBoot: function (game) { // Runs before Phaser boots. Game systems not yet available. }, postBoot: function (game) { // Runs after boot. All systems ready, game loop starting. } }, scene: MyScene }; ``` ### Disabling Input Subsystems ```js const config = { type: Phaser.AUTO, width: 800, height: 600, input: { keyboard: true, mouse: true, touch: false, gamepad: false, activePointers: 1, windowEvents: true }, disableContextMenu: true, scene: MyScene }; ``` ## Configuration Reference ### Top-Level GameConfig Properties | Property | Type | Default | Description | |---|---|---|---| | `type` | `number` | `Phaser.AUTO` (0) | Renderer: `AUTO`, `CANVAS`, `WEBGL`, or `HEADLESS` | | `width` | `number\|string` | `1024` | Game width in pixels (or `'100%'`). Overridden by `scale.width` | | `height` | `number\|string` | `768` | Game height in pixels (or `'100%'`). Overridden by `scale.height` | | `zoom` | `number` | `1` | Canvas zoom multiplier. Overridden by `scale.zoom` | | `parent` | `HTMLElement\|string\|null` | `undefined` | DOM element or `id` for canvas. `undefined` = document body. `null` = no parent | | `canvas` | `HTMLCanvasElement` | `null` | Provide your own canvas element | | `context` | `CanvasRenderingContext2D\|WebGLRenderingContext` | `null` | Provide your own rendering context | | `canvasStyle` | `string` | `null` | CSS styles applied to the canvas element | | `customEnvironment` | `boolean` | `false` | Skip feature detection for non-browser environments. `renderType` cannot be `AUTO` if `true` | | `scene` | `SceneType\|SceneType[]` | `null` | Scene class (extends Phaser.Scene) or array of scene classes | | `seed` | `string[]` | `[random]` | Seed for `Phaser.Math.RND` | | `title` | `string` | `''` | Game title shown in console banner | | `url` | `string` | `'https://phaser.io/...'` | Game URL shown in console banner | | `version` | `string` | `''` | Game version shown in console banner | | `autoFocus` | `boolean` | `true` | Auto-focus window on boot and mousedown | | `stableSort` | `number\|boolean` | `-1` | `-1` = auto-detect, `0`/`false` = built-in stable sort, `1`/`true` = rely on native ES2019 sort | | `disableContextMenu` | `boolean` | `false` | Disable right-click context menu | | `backgroundColor` | `string\|number` | `0x000000` | Canvas background color. Accepts hex number, CSS string, or color object | | `banner` | `boolean\|BannerConfig` | (shown) | `false` to hide console banner entirely | ### scale (Phaser.Types.Core.ScaleConfig) | Property | Type | Default | Description | |---|---|---|---| | `width` | `number\|string` | `1024` | Base game width | | `height` | `number\|string` | `768` | Base game height | | `zoom` | `number` | `1` | Zoom multiplier. Use constants: `NO_ZOOM` (1), `ZOOM_2X` (2), `ZOOM_4X` (4), `MAX_ZOOM` (-1) | | `parent` | `HTMLElement\|string` | `undefined` | DOM parent for the canvas | | `mode` | `number` | `Phaser.Scale.NONE` (0) | Scale mode (see table below) | | `expandParent` | `boolean` | `true` | Allow adjusting parent CSS height to 100% | | `autoRound` | `boolean` | `false` | Round display/style sizes for performance | | `autoCenter` | `number` | `NO_CENTER` (0) | Canvas centering mode (see table below) | | `resizeInterval` | `number` | `500` | Milliseconds between browser size checks | | `fullscreenTarget` | `HTMLElement\|string` | `null` | Element for fullscreen mode | | `min` | `{width, height}` | `{0, 0}` | Minimum canvas dimensions | | `max` | `{width, height}` | `{0, 0}` | Maximum canvas dimensions (0 = no limit) | | `snap` | `{width, height}` | `{0, 0}` | Snap canvas size to multiples | ### Scale Modes (src/scale/const/SCALE_MODE_CONST.js) | Constant | Value | Behavior | |---|---|---| | `Phaser.Scale.NONE` | `0` | No scaling. Canvas stays at config size | | `Phaser.Scale.WIDTH_CONTROLS_HEIGHT` | `1` | Height adjusts based on width | | `Phaser.Scale.HEIGHT_CONTROLS_WIDTH` | `2` | Width adjusts based on height | | `Phaser.Scale.FIT` | `3` | Fit inside parent keeping aspect ratio (letterboxing) | | `Phaser.Scale.ENVELOP` | `4` | Cover parent keeping aspect ratio (may overflow) | | `Phaser.Scale.RESIZE` | `5` | Canvas resizes to fill parent, ignoring aspect ratio | | `Phaser.Scale.EXPAND` | `6` | Like RESIZE for visible area + FIT for canvas scale | ### Center Modes (src/scale/const/CENTER_CONST.js) | Constant | Value | |---|---| | `Phaser.Scale.NO_CENTER` | `0` | | `Phaser.Scale.CENTER_BOTH` | `1` | | `Phaser.Scale.CENTER_HORIZONTALLY` | `2` | | `Phaser.Scale.CENTER_VERTICALLY` | `3` | ### Zoom Constants (src/scale/const/ZOOM_CONST.js) | Constant | Value | Behavior | |---|---|---| | `Phaser.Scale.NO_ZOOM` | `1` | No zoom | | `Phaser.Scale.ZOOM_2X` | `2` | 2x zoom | | `Phaser.Scale.ZOOM_4X` | `4` | 4x zoom | | `Phaser.Scale.MAX_ZOOM` | `-1` | Max integer zoom that fits in parent | ### render (Phaser.Types.Core.RenderConfig) These can be set at the top level OR nested under `render`. The `render` sub-object takes priority. | Property | Type | Default | Description |
GitHubで見る
この SKILL.md は非常に大きいため、SkillsMP では最初のセクションだけを表示しています。 GitHubで見る