AI Workshop: learn to build apps with AI →
Phaser.js: Phaser: The game loop

Join the AI Workshop and learn to build real-world apps with AI. A hands-on, practical program to level up your skills.


This post is part of a Phaser series. Click here to see the first post of the series.

In Phaser in addition to the preload() and create() scenes, we also have a third method, called update().

Here is where everything happens.

preload() and create() are run just once.

update() is going to be called forever. It’s a never ending loop, that is repeatedly called until our game ends.

In this example, we create a text that slowly moves to the bottom right of the canvas:

let text

function create() {
  text = this.add.text(100, 100, 'test')
}

function update() {
  text.x += 1
  text.y += 1
}

const game = new Phaser.Game({
  width: 400,
  height: 400,
  scene: {
    create,
    update
  }
})

Note how I added let text at the top, so we can reference it inside both create() and update().

In update() I modified the x and y properties. You can modify other properties, for example you can modify angle to rotate an object:

function update() {
  text.angle += 2
}

You can make an object start with a specific velocity.

Call setVelocity() and pass a number for the X axis, and another optional for the Y axis:

text.setVelocity(20, 20)

Or use setVelocityX() and setVelocityY() to set only one of the two axes.

Lessons in this unit:

0: Introduction
1: Setting up a project to build a JavaScript game with Phaser
2: Phaser: The Canvas
3: Phaser: Scenes
4: Phaser: Multiple scenes
5: ▶︎ Phaser: The game loop
6: Phaser: Adding images
7: Phaser: Sprites
8: Phaser: GameObjects
9: Phaser: Animations
10: Phaser: Keyboard events
11: Phaser: Mouse input
12: Phaser: Physics
13: Phaser: collisions and screen boundaries
14: Phaser: Playing sounds
15: How to create a platformer game with Phaser.js