В библиотеке Phaser объект Game является
центральным ядром игрового приложения. Он инкапсулирует
все ключевые компоненты игры: рендеринг, сцены, обработку ввода и
управление временем. Создание экземпляра Phaser.Game
происходит один раз и обеспечивает глобальный доступ к основным
возможностям движка.
const config = {
type: Phaser.AUTO,
width: 800,
height: 600,
scene: {
preload: preload,
create: create,
update: update
}
};
const game = new Phaser.Game(config);
Ключевой момент: объект Game создается один
раз и далее служит точкой входа для работы со сценами,
системами физики, аудио и графикой. Любые глобальные данные, требующие
доступа из разных частей игры, можно хранить через его свойства.
GameКонфигурационный объект config позволяет задать основные
параметры игры:
Phaser.AUTO,
Phaser.CANVAS, Phaser.WEBGL).
Phaser.AUTO автоматически выбирает оптимальный
вариант.#000000 по умолчанию).preload, create,
update и кастомные методы.arcade, matter или кастомные плагины.Пример добавления системы физики:
const config = {
type: Phaser.AUTO,
width: 1024,
height: 768,
physics: {
default: 'arcade',
arcade: {
gravity: { y: 300 },
debug: true
}
},
scene: [MainScene]
};
GameПосле создания game становится глобальным
объектом, через который можно получать доступ к различным
системам Phaser. Например:
game.scene позволяет управлять
запуском, паузой и переключением сцен.game.time
предоставляет доступ к глобальному таймеру и планированию событий.game.physics
содержит все настроенные движки физики и их группы.game.cameras
управляет камерами сцены, эффектами и зумом.Пример переключения сцен:
game.scene.start('MenuScene');
game.scene.pause('GameScene');
game.scene.resume('GameScene');
Объект Game позволяет сохранять глобальные
состояния и данные, например очки, параметры игрока или
настройки уровня. Для этого часто используют собственные свойства:
game.global = {
score: 0,
playerLives: 3
};
Gamegame.scene — управление всеми сценами
игры. Методы: add, start, stop,
pause, resume.game.input — доступ к событиям ввода
(keyboard, pointer). Позволяет отслеживать
нажатия и движения мыши.game.events — глобальная система
событий. Позволяет слушать события, например hidden,
visible, resize.game.loop — объект основного игрового
цикла. Можно изменять частоту кадров или приостанавливать цикл.game.renderer — управление
низкоуровневым рендерингом, WebGL или Canvas.Пример глобального события:
game.events.on('hidden', () => {
console.log('Игра свернута');
});
Game для межсценного взаимодействияОбъект Game обеспечивает обмен данными между
сценами без использования внешних глобальных переменных.
Например:
class SceneA extends Phaser.Scene {
create() {
game.global.playerName = 'Alice';
this.scene.start('SceneB');
}
}
class SceneB extends Phaser.Scene {
create() {
console.log(game.global.playerName); // 'Alice'
}
}
Такой подход позволяет поддерживать структурированное хранение глобальных данных, избегая загрязнения глобального пространства имен браузера.
Game на
страницу. Несколько объектов Game могут
конфликтовать между собой.game для глобальных
игровых параметров, а не внешние переменные.game.scene, чтобы централизованно
контролировать жизненный цикл игры.game упрощает масштабирование проекта и добавление
новых модулей.Объект Game в Phaser выступает сердцем
игры, обеспечивая интеграцию всех компонентов, централизованное
управление сценами и глобальный доступ к данным и системам. Понимание
структуры и возможностей этого объекта является ключом к созданию
масштабируемых и удобных для поддержки игровых приложений.