The Phaser 3 release date and part two of the Tilemap Physics updates.

Published on 5th February 2018

A relatively short Dev Log this issue I'm afraid, because we're flat out preparing for launch. And on that note I'm going to copy the post I made to Patreon here, in case you missed it:

image

If you follow our Dev Logs you'll know how insanely busy we've been recently preparing Phaser 3 for release. If you read Dev Log 114 you'll also know we were meant to release v3 today, but that we weren't quite ready. I had a talk with Mozilla, who awarded us the money to be able to work on v3, to see if there was any flexibility in the release date. They agreed there was. As it actually turns out, as long as we release within 1 year of the contract date, it's all good with them!

Thankfully, we don't need a year. We just need a couple of weeks. The API is solid, the new WebGL Pipeline code is in, all the internal systems have moved over to plugins and I have been working on the documentation like a man possessed. This week I hit a significant milestone in that regard, in that the docs are now building properly and really coming together! It took some serious jsdoc wrangling, believe me, but it works. It was quite something to see the first build of them in a browser. They feel tangible at long last.

I've still a lot of documentation left to write, but it feels achievable. So much so, that barring any acts of God, we're setting the 3.0.0 release date to be February 12th. A proper fully documented release. Yes, we removed a few features from the API and will add those back in the coming months, but there is so much to get your teeth in to! With the docs in place, you'll be able to use them alongside the examples and really go to town learning what cool new things v3 can do.

Thank you all for bearing with us this past year, and indeed longer. V3 has been such a massive amount of work, so long in the making. I'll be honest, it has been hard to stay positive across all that time and even I doubted myself more than once. It felt like it could have become a bit of a Duke Nukem Forever at some points.

There are elements we have done, re-done, then done again as the gears shifted in to place and we revisited old code. In hindsight, I feel that these are all signs that what you're working on is a true labor of love. That couldn't be truer.

To celebrate the fact we're close to release here is a lovely 3D animated Phaser bot created by our pixel-master, Ilkke:

image

Tilemap and Physics

In the last issue Michael wrote part 1 of what was new with the Tilemaps API in Beta 20. Here's part 2:

Last issue I showed you how to modify a map in real-time using invisible triggers. I said at the time that the demos were meant to show what is possible, but that isn't necessarily what's best.

Along with all that, you’ll likely run into “fun” ghost collisions when working with Matter + Tilemaps. Check out the example below to see what I’m talking, and then check out the comments in the code for some suggestions on how to deal with them:

image

Next up, improvements on flagging tiles as colliding. Using indices can be a bit tedious. Two new Tilemap methods will help ease that: setCollidingByProperty(…) & setCollidingFromCollisionGroup(…). Those links will take you to examples. They make use of Tiled’s tileset editor. This is where you can define different pieces of information per tile in a tileset: custom properties, collision shapes, animations, etc.

image

A few Impact updates:

Last week, I demoed how you could use the Impact engine with Tiled maps, which you might want to do if you need slopes or Arcade physics isn’t cutting it. To load a tilemap in Impact, you need to specify a mapping from tile indices to slope IDs (see the slope reference tileset), and there are a couple new ways to do that:

image

image

This update also makes it really easy to load maps without slopes using Impact: see this example.

The last set of updates is around the general Tilemap API. A few things have been added to make working with physics a bit easier. Tiles now have tileset, tilemapLayer and tilemap (getter) properties. If you need to access the Tiled data for a tile, there are getCollisionGroup(…) and getTileData(…) helper methods. There are also a few methods to get the world position of a Tile, like getBounds(…). They all make it a bit easier to get at whatever data you need directly from a Tile.

Since you may find yourself mapping out triggers & colliding shapes within Tiled’s object layers (which allow you to draw out shapes on top of your level), the Tiled object parser got a few upgrades. Along with under the hood upgrades, there are a few new helpers for finding objects:

image

And that's all for this week. Fingers crossed, next week should be quite a special issue :)

Phaser 3 Labs

Phaser 3 Beta 20 is out and ready for testing.

Visit the Phaser 3 Labs to view the API structure in depth, read the FAQ, previous Developer Logs and contribution guides.

You can also join the Phaser 3 Google Group or post to the Phaser 3 Forum - we'd love to hear from you!

A relatively short Dev Log this issue I'm afraid, because we're flat out preparing for launch. And on that note I'm going to copy the post I made to Patreon here, in case you missed it:

image

If you follow our Dev Logs you'll know how insanely busy we've been recently preparing Phaser 3 for release. If you read Dev Log 114 you'll also know we were meant to release v3 today, but that we weren't quite ready. I had a talk with Mozilla, who awarded us the money to be able to work on v3, to see if there was any flexibility in the release date. They agreed there was. As it actually turns out, as long as we release within 1 year of the contract date, it's all good with them!

Thankfully, we don't need a year. We just need a couple of weeks. The API is solid, the new WebGL Pipeline code is in, all the internal systems have moved over to plugins and I have been working on the documentation like a man possessed. This week I hit a significant milestone in that regard, in that the docs are now building properly and really coming together! It took some serious jsdoc wrangling, believe me, but it works. It was quite something to see the first build of them in a browser. They feel tangible at long last.

I've still a lot of documentation left to write, but it feels achievable. So much so, that barring any acts of God, we're setting the 3.0.0 release date to be February 12th. A proper fully documented release. Yes, we removed a few features from the API and will add those back in the coming months, but there is so much to get your teeth in to! With the docs in place, you'll be able to use them alongside the examples and really go to town learning what cool new things v3 can do.

Thank you all for bearing with us this past year, and indeed longer. V3 has been such a massive amount of work, so long in the making. I'll be honest, it has been hard to stay positive across all that time and even I doubted myself more than once. It felt like it could have become a bit of a Duke Nukem Forever at some points.

There are elements we have done, re-done, then done again as the gears shifted in to place and we revisited old code. In hindsight, I feel that these are all signs that what you're working on is a true labor of love. That couldn't be truer.

To celebrate the fact we're close to release here is a lovely 3D animated Phaser bot created by our pixel-master, Ilkke:

image

Tilemap and Physics

In the last issue Michael wrote part 1 of what was new with the Tilemaps API in Beta 20. Here's part 2:

Last issue I showed you how to modify a map in real-time using invisible triggers. I said at the time that the demos were meant to show what is possible, but that isn't necessarily what's best.

Along with all that, you’ll likely run into “fun” ghost collisions when working with Matter + Tilemaps. Check out the example below to see what I’m talking, and then check out the comments in the code for some suggestions on how to deal with them:

image

Next up, improvements on flagging tiles as colliding. Using indices can be a bit tedious. Two new Tilemap methods will help ease that: setCollidingByProperty(…) & setCollidingFromCollisionGroup(…). Those links will take you to examples. They make use of Tiled’s tileset editor. This is where you can define different pieces of information per tile in a tileset: custom properties, collision shapes, animations, etc.

image

A few Impact updates:

Last week, I demoed how you could use the Impact engine with Tiled maps, which you might want to do if you need slopes or Arcade physics isn’t cutting it. To load a tilemap in Impact, you need to specify a mapping from tile indices to slope IDs (see the slope reference tileset), and there are a couple new ways to do that:

image

image

This update also makes it really easy to load maps without slopes using Impact: see this example.

The last set of updates is around the general Tilemap API. A few things have been added to make working with physics a bit easier. Tiles now have tileset, tilemapLayer and tilemap (getter) properties. If you need to access the Tiled data for a tile, there are getCollisionGroup(…) and getTileData(…) helper methods. There are also a few methods to get the world position of a Tile, like getBounds(…). They all make it a bit easier to get at whatever data you need directly from a Tile.

Since you may find yourself mapping out triggers & colliding shapes within Tiled’s object layers (which allow you to draw out shapes on top of your level), the Tiled object parser got a few upgrades. Along with under the hood upgrades, there are a few new helpers for finding objects:

image

And that's all for this week. Fingers crossed, next week should be quite a special issue :)

Phaser 3 Labs

Phaser 3 Beta 20 is out and ready for testing.

Visit the Phaser 3 Labs to view the API structure in depth, read the FAQ, previous Developer Logs and contribution guides.

You can also join the Phaser 3 Google Group or post to the Phaser 3 Forum - we'd love to hear from you!