Объект конфигурации Phaser.Game

Объект конфигурации Phaser.Game является центральным элементом при создании любой игры на Phaser. Он определяет параметры и поведение игрового движка, устанавливая размеры канвы, режим рендеринга, сцены и ключевые настройки производительности. Важнейшей особенностью является то, что он передается в конструктор Phaser.Game и используется для инициализации всех компонентов игры.

const config = {
    type: Phaser.AUTO,
    width: 800,
    height: 600,
    scene: {
        preload: preload,
        create: create,
        update: update
    }
};

const game = new Phaser.Game(config);

Тип рендеринга (type)

Параметр type определяет, каким образом Phaser будет выводить графику. Основные значения:

  • Phaser.AUTO — Phaser автоматически выбирает WebGL, если он поддерживается браузером, иначе Canvas.
  • Phaser.WEBGL — принудительное использование WebGL.
  • Phaser.CANVAS — использование 2D Canvas API.

Выбор типа рендеринга влияет на производительность и доступность некоторых эффектов. WebGL обеспечивает аппаратное ускорение и более сложную графику, Canvas проще и совместим со старыми браузерами.

Размеры игры (width, height)

width и height задают размеры игрового холста в пикселях. Эти параметры важны для масштабирования и позиционирования объектов. Если необходимо, можно использовать динамическое изменение размеров через менеджер масштабирования (scale).

scale: {
    mode: Phaser.Scale.FIT,
    autoCenter: Phaser.Scale.CENTER_BOTH
}
  • mode — стратегия масштабирования (FIT, ENVELOP, NONE).
  • autoCenter — автоматическое центрирование канвы по горизонтали и вертикали.

Сцены (scene)

scene — один из ключевых элементов конфигурации. Он определяет, какие сцены будут использоваться и в каком порядке. Можно передавать:

  1. Одиночную сцену как объект с методами preload, create, update.
  2. Массив сцен для последовательного или динамического запуска.
  3. Классы сцен, наследующиеся от Phaser.Scene.
const config = {
    type: Phaser.AUTO,
    width: 1024,
    height: 768,
    scene: [BootScene, MenuScene, GameScene]
};

Каждая сцена управляет своими ресурсами, логикой и событиями, обеспечивая модульность проекта.

Настройки физики (physics)

Phaser поддерживает несколько движков физики. Настройки конфигурации включают:

physics: {
    default: 'arcade',
    arcade: {
        gravity: { y: 300 },
        debug: false
    }
}
  • default — указывает движок по умолчанию (arcade, matter, impact).
  • Параметры конкретного движка настраивают гравитацию, коллизии, отладочные визуализации.

Использование физических движков позволяет создавать реалистичные движения объектов, столкновения и эффекты силы.

Настройки рендеринга и производительности

Конфигурация включает дополнительные параметры для оптимизации:

  • backgroundColor — цвет фона канвы.
  • pixelArt — включение режима пиксельной графики, предотвращает сглаживание.
  • antialias — включение или отключение сглаживания линий.
  • fps — управление частотой обновления кадров, может использоваться для синхронизации с анимациями.
fps: {
    target: 60,
    forceSetTimeOut: false
}

Встроенные плагины (plugins)

Phaser позволяет подключать глобальные и сценовые плагины через конфигурацию:

plugins: {
    global: [
        { key: 'MyPlugin', plugin: MyPluginClass, start: true }
    ],
    scene: [
        { key: 'MyScenePlugin', plugin: MyScenePluginClass, mapping: 'plugin' }
    ]
}
  • Глобальные плагины доступны во всех сценах.
  • Сценовые плагины доступны только внутри конкретной сцены и подключаются через this.plugin.

Масштабирование и адаптивность (scale)

Поддержка различных размеров экранов достигается через объект scale:

scale: {
    mode: Phaser.Scale.RESIZE,
    parent: 'game-container',
    width: window.innerWidth,
    height: window.innerHeight,
    autoCenter: Phaser.Scale.CENTER_BOTH
}
  • mode: RESIZE — динамически изменяет размер канвы при изменении окна.
  • parent — контейнер DOM, в котором создается игра.
  • autoCenter — центрирование канвы независимо от размеров окна.

Другие полезные параметры

  • transparent — позволяет сделать фон канвы прозрачным.
  • input — настройка ввода (мышь, сенсорный экран, клавиатура).
  • callbacks — функции обратного вызова на события запуска и остановки игры.
callbacks: {
    postBoot: function () {
        console.log('Game initialized');
    }
}

Объект конфигурации Phaser.Game предоставляет полный контроль над поведением движка, сценами, физикой, рендерингом и масштабированием. Правильная настройка конфигурации обеспечивает стабильность, производительность и гибкость проекта на Phaser.