Phaser 3.60 Beta 14 is Released
I'm happy to announce that Phaser 3.60 Beta 14 is now available and is ready for testing.
You can grab it from GitHub:
https://github.com/photonstorm/phaser/releases/tag/v3.60.0-beta.14
and npm:
https://www.npmjs.com/package/phaser/v/3.60.0-beta.14
New TypeScript Defs are also included. I have also updated the Phaser Labs so that Beta 14 is the default testing version there.
A word about Phaser Versions
I've discussed this in the past, but I feel it's worth bringing up again. Phaser does not use traditional semver versioning, and it never has. Usually, in the npm world, jumping from v3.55 to v3.60 would be a minor release that doesn't contain any breaking changes. However, Phaser has always used the major number (the 3 in 3.60) as part of its name, not as part of its version. For us, a 'minor' release, such as from 3.55 to 3.60, is regarded as a major release, including breaking changes. Only when we do releases such as 3.55.1 to 3.55.2 are they non-breaking point releases.
There's nothing we can do about this for Phaser 3. In reality, 3.60 really ought to be 4.0, but that would just confuse the hell out of everybody, so we'll stick with our non-semantic versioning for now and revisit how we handle this with Phaser 4.
Some of the Beta 14 Changes
I'm not going to list them all because it would take too long but I have been focusing on fixing bugs and closing GitHub issues with Beta 14. I also redid the shaders slightly and optimized the renderer a little more.
Part of this work included bundling Spector.gl in with the Phaser dev release. To be clear, Spector does not find its way into a production build but it's super-useful to have around during development, so I've integrated it directly into the WebGL Renderer. The main reason for this, rather than just using the browser extension, is that we can now debug WebGL on mobile at the click of a button (or the call of a function).
You can see this on the Phaser Labs site. View a demo, such as this one, and click the 'WebGL Debug' button. This will call a function directly in the Phaser WebGL Renderer that tells Spector to profile the next frame and display the results.
As mentioned, this works on mobile devices allowing you to see debug reports on an iPad or Android. There are functions built into the renderer you can call so that you can invoke the debugger directly from your own site / UI:
Spector works by profiling a frame and producing a json file from that data. Its web-based front-end then displays this json in an easy-to-read way. I'm going to look at providing a function that will transmit this json across the network rather than display it immediately. This means you could capture a profile on a mobile device and have the json sent to a viewer running on your PC, which is much easier to navigate and deal with than viewing on mobile.
Even so, this is a really handy feature to have at your fingertips and essential for renderer related debugging!
I've also been creating new examples as I work. Part of this work last week included updating the Tween system to allow for a much more fine-grained Tween seeking ability. In previous versions of Phaser, you couldn't seek infinitely (i.e., looping or repeating) tweens. It would actually crash the browser tab if you tried it. I've since recoded how this works entirely, and you can seek freely through a Tween. I've also added two new methods to 'fast forward' and 'rewind' the active part of a Tween, giving you even more control over playback.
As part of this, I built a bunch of new Tween demos, including this quite nice Ease Mixer, which allows you to visually graph the impact changing the ease equation has on the x and y of a tween. Plus, some fun visual demos showcasing the differing ease types on offer.
All in all, I'm very happy with the progress on 3.60, especially given all that's going on in my life right now.
Next Steps
I'd just like to add two final notes.
First, thank you to everyone who contacted me about helping out with the Phaser Examples. I've decided to hire two devs to help me, and I'll be contacting them within the next couple of weeks. If I didn't pick you, I'm sorry. I had a huge number of responses, and it wasn't easy deciding!
Also, thank you to everyone who sent messages of support after my announcement of the passing of my Mum. Her funeral is next week, and I've got a lot to prepare for it, so I'm not going to be around much during this time (which is partly why I wanted to get Beta 14 out today).
As much as it has been an incredibly painful month, I'm also looking forward to "sending her off in style" and celebrating her life. After which I fully intend to drown myself in Phaser code until 3.60 is shoved kicking and screaming into the world :) Until then, please do help test Beta 14 and post your findings on GitHub and Discord.
I'm happy to announce that Phaser 3.60 Beta 14 is now available and is ready for testing.
You can grab it from GitHub:
https://github.com/photonstorm/phaser/releases/tag/v3.60.0-beta.14
and npm:
https://www.npmjs.com/package/phaser/v/3.60.0-beta.14
New TypeScript Defs are also included. I have also updated the Phaser Labs so that Beta 14 is the default testing version there.
A word about Phaser Versions
I've discussed this in the past, but I feel it's worth bringing up again. Phaser does not use traditional semver versioning, and it never has. Usually, in the npm world, jumping from v3.55 to v3.60 would be a minor release that doesn't contain any breaking changes. However, Phaser has always used the major number (the 3 in 3.60) as part of its name, not as part of its version. For us, a 'minor' release, such as from 3.55 to 3.60, is regarded as a major release, including breaking changes. Only when we do releases such as 3.55.1 to 3.55.2 are they non-breaking point releases.
There's nothing we can do about this for Phaser 3. In reality, 3.60 really ought to be 4.0, but that would just confuse the hell out of everybody, so we'll stick with our non-semantic versioning for now and revisit how we handle this with Phaser 4.
Some of the Beta 14 Changes
I'm not going to list them all because it would take too long but I have been focusing on fixing bugs and closing GitHub issues with Beta 14. I also redid the shaders slightly and optimized the renderer a little more.
Part of this work included bundling Spector.gl in with the Phaser dev release. To be clear, Spector does not find its way into a production build but it's super-useful to have around during development, so I've integrated it directly into the WebGL Renderer. The main reason for this, rather than just using the browser extension, is that we can now debug WebGL on mobile at the click of a button (or the call of a function).
You can see this on the Phaser Labs site. View a demo, such as this one, and click the 'WebGL Debug' button. This will call a function directly in the Phaser WebGL Renderer that tells Spector to profile the next frame and display the results.
As mentioned, this works on mobile devices allowing you to see debug reports on an iPad or Android. There are functions built into the renderer you can call so that you can invoke the debugger directly from your own site / UI:
Spector works by profiling a frame and producing a json file from that data. Its web-based front-end then displays this json in an easy-to-read way. I'm going to look at providing a function that will transmit this json across the network rather than display it immediately. This means you could capture a profile on a mobile device and have the json sent to a viewer running on your PC, which is much easier to navigate and deal with than viewing on mobile.
Even so, this is a really handy feature to have at your fingertips and essential for renderer related debugging!
I've also been creating new examples as I work. Part of this work last week included updating the Tween system to allow for a much more fine-grained Tween seeking ability. In previous versions of Phaser, you couldn't seek infinitely (i.e., looping or repeating) tweens. It would actually crash the browser tab if you tried it. I've since recoded how this works entirely, and you can seek freely through a Tween. I've also added two new methods to 'fast forward' and 'rewind' the active part of a Tween, giving you even more control over playback.
As part of this, I built a bunch of new Tween demos, including this quite nice Ease Mixer, which allows you to visually graph the impact changing the ease equation has on the x and y of a tween. Plus, some fun visual demos showcasing the differing ease types on offer.
All in all, I'm very happy with the progress on 3.60, especially given all that's going on in my life right now.
Next Steps
I'd just like to add two final notes.
First, thank you to everyone who contacted me about helping out with the Phaser Examples. I've decided to hire two devs to help me, and I'll be contacting them within the next couple of weeks. If I didn't pick you, I'm sorry. I had a huge number of responses, and it wasn't easy deciding!
Also, thank you to everyone who sent messages of support after my announcement of the passing of my Mum. Her funeral is next week, and I've got a lot to prepare for it, so I'm not going to be around much during this time (which is partly why I wanted to get Beta 14 out today).
As much as it has been an incredibly painful month, I'm also looking forward to "sending her off in style" and celebrating her life. After which I fully intend to drown myself in Phaser code until 3.60 is shoved kicking and screaming into the world :) Until then, please do help test Beta 14 and post your findings on GitHub and Discord.