Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Moving from Phaser 2 to 3

Moving from Phaser 2 → 3: an incomplete guide


  • I found that the best thing was to ask myself what this or that line was meant to accomplish, and then to search for a Phaser 3 example of that task.
  • Usually the issue is just that a function has moved, or some property now requires a setter.
  • There's a real migration guide here: part 1, part 2

Scenes have replaced states (and the game object… mostly)

  • the default camera is now scene.cameras.main, not
  • factories are part of the scene: game.add(x)scene.add(x)

Animations now belong to a global animation manager

  • they must be created (using .create) before they're added
  • changing the frame for a sprite requires sprite.setFrame(x)
    • in fact, sprite.frame = x will break rendering for that sprite

No more sprite.exists

  • sprite.exists = xsprite.setActive(x)
    • or sprite.setVisible(x), depending on what you're trying to accomplish

Turn retrofonts into bitmapfonts

  • retrofonts are gone as a first-class thing
  • instead use RetroFont.Parse on a config object to create a bitmapfont and add that.

Changes to load.tilemap

  • game.load.tilemap(key, url, null, Phaser.Tilemap.TILED_JSON)scene.load.tilemapTiledJSON(key, url)
  • AFAICT, the ability to pass an already-loaded json tilemap (i.e. the third argument to load.tilemap) is gone. I had to let Phaser fetch my tilemaps, which in turn meant having Webpack treat them as "data" files and not JS. The procedure for that is annoyingly nonobvious.

New top-level namespaces

  • e.g. Phaser.RectanglePhaser.Geom.Rectangle

This comment has been minimized.

Copy link

llin96 commented Jul 5, 2019

Thank you so much for this, we are planning to upgrade our projects to v3 in two months. It would be appreciated if you could keep this updated.


This comment has been minimized.

Copy link
Owner Author

johncip commented Jul 12, 2019

Hope it helps!

I took a break from my (small amount of) Phaser stuff, but I don't imagine much will change in that time.

And be sure to look at the linked migration guide as it mentions some big things that I've left out (center-alignment is the default in v3, nested groups are gone, and more).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.