Using The Late Command in Puzzle Script

There is a very useful command within PuzzleScript called ‘late’. The order in which events occur within your game matter, and sometimes to get the results you want, you need code that will run fashionably late. This tutorial will teach you the uses of the late command. It assumes no prior programming knowledge except the previous Puzzle Script tutorials I have written.

Why You Need It

Open this sample project. Now put the following code in your game and run it:

[ player | target ] -> [ player  |  ]

You might expect that as soon as the player stands next to a target, the target would be destroyed, however, this is not the case. The target instead disappears on the turn after you were standing next to it. Instead, try the following code:

late [ player | target ] -> [ player  |  ]

As soon as you move next to a target, it disappears. This is because anything designated as late will occur after all other code is run. There are times when you need this to happen.

Order Of Events

This is how code is run in Puzzle Script every time you move.

  1. Puzzle Script recognises that the player wants to move
  2. The rules are read and executed, if possible, from top to bottom
  3. The player moves, if possible
  4. Late rules are applied

Computers start at the top line of code and read down, line by line, checking every condition. So when you try to move, Puzzle Script reads all of your rules and checks to see if the conditions are true, and if they are, it does something. For example, the first line might be:

[ player | spikeTrap ] -> [   |  spikeTrap ]

If the player isn’t standing next to a spike trap, the code continues on. This means that the order you write your lines of code matters. Some things you will need to use the late command for, and a lot of that will come with practice.

Practical Ways To Use Late

The best cases I have found to use the late command is when you want to check if objects are either on top of each other or next to each other, but there are other cases. If you check if one object is on another, it won’t be registered until the next turn, unless you use the late command:

[ player spikeTrap ] -> [ spikeTrap ]

In the above case, the player wouldn’t be killed by the spike trap until the turn after the player moved on to the spike trap. To have the player die instantly, just add the late command,

late [ player spikeTrap ] -> [ spikeTrap ]

To make the entire level restart when the player dies, you can do this:

late [ player spikeTrap ] -> restart

And the level would restart when the player walked on to a spike trap.


You can see the completed sample project here. The next tutorial is on using Sound Effects in your game.

Follow this blog for more tutorials on Puzzle Script, games development and updates on my projects.

Next Tutorial >


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s