Коротко

Phaser 3 остаётся рабочей лошадкой большинства туториалов и примеров. Phaser 4 (Community Edition) чистит API, сильнее опирается на TypeScript и иначе собирает пайплайн рендера. Если игра уже в проде на 3.60+ и стабильна — срочно мигрировать не нужно. Если стартуете новый проект и хотите типы из коробки — смотрите 4.

Ниже — практическая развилка, а не обзор маркетинговых слайдов.

Что обычно ломается при переносе

Первыми падают места, где код завязан на внутренности, а не на публичный API. Частые точки: кастомные пайплайны, ручная работа с Texture Manager, устаревшие плагины Arcade Physics и обёртки вокруг this.load.

Сцены как идея остаются. Жизненный цикл initpreloadcreateupdate узнаваем. Меняются детали регистрации и то, как сцена получает зависимости.

Физика и ввод

Arcade Physics в типичной 2D-игре переносится почти линейно: спрайт, тело, collider, overlap. Matter.js и экзотические плагины проверяйте отдельно — версии и сборки расходятся.

Input в целом тот же: pointer, клавиатура, gamepad. Ломается код, который лезет в приватные массисы указателей вместо this.input.

Как мигрировать без героизма

Сначала зафиксируйте версию Phaser 3, на которой игра зелёная. Затем вынесите игровые системы из сцен: спавн, инвентарь, сейвы. После этого поднимайте тонкий каркас на Phaser 4 и переносите по одной сцене.

Не переписывайте твины и анимации «заодно». tweens.add и anims.create лучше тащить как есть, пока не заработает кадр.

Практический совет

Держите два bootstrap-файла: main-v3.ts и main-v4.ts с общим src/game. Так видно, какой слой действительно зависит от движка, а какой — просто ваша игра.