Я много раз слышал этот вопрос.

Как мне сделать так, чтобы моя игра Phaser хорошо смотрелась на всех устройствах?

Есть много разных подходов. На первый взгляд Phaser.ScaleManager.SHOW_ALL Phaser кажется серебряной пулей. На самом деле у меня это никогда не работало. Фактически, единственный тип шкалы, который я когда-либо использовал, - это Phaser.ScaleManager.USER_SCALE, что означает Я сделаю это сам.

Мой самый распространенный метод - зафиксировать ориентацию на портретную или альбомную ориентацию, а затем кадрировать по горизонтали или вертикали. Выберите то, что больше всего подходит для вашей игры.

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

Вот код!

setupStage() {
    this.scale.scaleMode = Phaser.ScaleManager.USER_SCALE;
    if (!isMobile) this.scale.setResizeCallback(this.scaleGame);
    this.scaleGame();
  }
scaleGame = () => {
    const padding = isMobile ? 0 : 80; // include padding around the canvas frame for desktop
    const yScale = (window.innerHeight - padding) / this.game.height;
    const scale = Math.min(yScale, 1);
    this.scale.setUserScale(scale, scale);
  };

Ясно как грязь? Не стесняйтесь задавать вопросы в разделе комментариев.