Welcome to Issue 69 of Phaser World Last issue we had Phaser games used to propose marriage, and this week we've got it used in a Japanese TV show fe

issue-69-header

Welcome to Issue 69 of Phaser World

Last issue we had Phaser games used to propose marriage, and this week we've got it used in a Japanese TV show featuring giant burgers. You really couldn't make this stuff up :)

On the games front there are some great titles to sink your teeth in to, Gladiators of the Underworld being a favourite of mine. Plus lots of new tutorials and a huge chunk of Phaser 3 news! It's getting so close I can almost taste Beta 1, which is equally exciting and terrifying!

Until the next issue, keep on coding. Drop me a line if you've got any news you'd like featured (you can just reply to this email) or grab me on the Phaser Slack or Discord channels.

Games made with Phaser

lhomme-a-venir

L'Homme à venir

Game of the Week
Escape the monsters while keeping your style in this great climbing game of risk and reward created for Le Bon Marché.

gladiators-of-the-underworld

Gladiators of the Underworld

Staff Pick
For ages, gladiators have been competing in the underworld arena. As a Necromancer you need to prove yourself in battle using melee and ranged weapons, and spells.

harrier-carrier

Harrier Carrier

Take control of an aircraft carrier as you defend against waves of fighters in this isometric puzzle strategy game.

drawing-letters

Drawing Letters

A very well presented educational game that teach children how to draw and pronounce letters.

chill-pool

Chill Pool

A nice mixture of arcade pool with the freedom to take a shot whenever you like.

Phaser News & Tutorials

anatomy-of-a-phaser-project

Anatomy of a Phaser Project

Josh Morony is back with a new 15 minute tutorial video on the anatomy of a Phaser project.

drawing-graphics-tutorials

Drawing Graphics Tutorials

A 3 part tutorial on using the Graphics features to draw all kinds of interesting shapes.

fenix-web-server-tutorial

Fenix Web Server Tutorial

How to install and set-up the Fenix web server for local Phaser game dev.

string-avoider-update-part-4

String Avoider Update Part 4

In part 4 of the String Avoider series the game gets a graphical overhaul.

kaman-rider-ex-aid

Kaman Rider Ex-Aid

Phaser source code get its first outing in a TV show featuring a monster burger. Yes, really.

rpg-game-development-course

RPG Game Development Course

This brand new video course will teach you everything you need to know about creating an RPG game, now includes the Phaser 101 modules.

Patreon Updates

Patreon-Banner

Thank you and welcome to the following awesome people who joined the Phaser Patron this week: Jason Land. Also thank you to Yannick Deubel for increasing their pledge.

Patreon is a way to donate money towards the Phaser project on a monthly basis. This money is used entirely to fund development costs. You can also make one-off donations via PayPal. Donations receive discounts, forum badges, private technical support, and the eternal gratitude of the Phaser team :)

Development Progress

wabbits

Have you seen Indie Game: the Movie? If you haven't then I'd recommend it. Not because it's accurate about how indie games are made these days, far from it, but because it's a great piece of film making. If you have seen it there's a part where Jonathan Blow is describing the creation of his game Braid, he likens it to 'digging for gold' and no matter where he strikes, he hits gold.

What he's describing is the way in which during a project you have good points, and bad points, but when you manage to string together a whole bunch of good points together in a flow, it really does feel like you've hit gold. It's fair to say that this week it felt like that with Phaser 3 development. Most days this week I've been on such a roll that I'll literally code all through the night, crawl in to bed at 5am, sleep for a bit and then carry on. Not because I have to, or am being forced to, but just because things are flowing so well I literally cannot stop myself from doing just a little bit more. It's not a sustainable habit of course, and I wouldn't recommend it long term, but now and again if you're on a coding high, it feels great to keep that going as long as you can. So what have we been up to this week?

BitmapText Merged In

Some months ago I talked about how Felipe had written a brand new Bitmap Text renderer, and we showed animated gifs of it in action. The feature was built in isolation (as v3 was in a state of flux at the time) but this week he merge it with the latest build and new renderers. Both the WebGL and Canvas implementations are done, and he created this example showing it rendering 56,000 characters (WebGL only naturally).

bitmaptext

As it stands today we have got Images, Sprites, Blitter Objects, Containers and BitmapText all built and included. The next Game Objects to be added are Graphics and Text, which will be started next week. There are others of course, such as TileSprite, Video and the new PixelField object, but it feels to me like we can easily have a Beta 1 release without those included.

Keyboard Manager

At the start of this week I finished off implementing the Keyboard Manager. It has changed a lot since v2. It's significantly more powerful now, but has a lot less code overall, something we're trying to do everywhere in v3.

The biggest change, which will be continued as we add mouse and touch input, is that all DOM events, such as 'keydown', are now added to an internal Event Queue. In v2 when the event occurred we would deal with it instantly. I.e. if you had a callback bound to a specific key press, it would be fired as soon as the DOM event landed on the doorstep. This is no longer the case in v3. All events are placed into an Event Queue, which is then dealt with at a precise moment in the game loop. This means if a callback is going to happen as a result of a key press, Phaser 3 now knows exactly when it will fire (and more importantly, so do you!). In v2 there is a lot of conditional code in place to try and trap issues that arose as a result of DOM events dispatching in less than desirable parts of the game loop. We can finally ditch all of that, keeping it cleaner and predictable as a result.

Keyboard Events

In v3 the Keyboard Manager will dispatch lots of new events you can listen to. As well as the obvious, KEY_DOWN and KEY_UP, it also dispatches events for standard key presses. Which means you can now do:

key-once

Want to only get the key event once? Just change 'events.on' to 'events.once'. You can also create Key objects, as you did in v2, which are useful when you need high intensity polling, such as keyboard controls for a player.

Key Combos

Another new feature in v3 is the ability to set-up Key Combinations. These combos allow you to define a sequence of key codes and map them to a combo. If the user then enters the combo in the correct sequence it will dispatch an event. This is easier to explain with a bit of code:

key-combo

In the above if the user enters 'ABCD' the combo event will dispatch. There are all kinds of configuration options available. For example you can set a time limit between each key in the combo (if they take too long entering it, you can reset the combo). You can make the combo reset if they get a key press wrong, or let it carry on going. Konami code anyone? :)

konami-code

As well as working on the keyboard manager I also spent the tail end of the week working on a new Phaser class system. This offers a way for you to extend base Phaser classes in a nice and clean manner, defining which components you want and having them merged in automatically. We're actually using the class system internally ourselves now for all the Game Objects. It's quite a major new feature and I'll cover it in more detail soon.

The next steps

We've been working really hard on Phaser 3 for months now. Yes, we definitely had a few missteps along the way, but the path we're on is solid, and there honestly feels like light at the end of the tunnel. As I mentioned earlier I would like to see the new Graphics renderer we built merged into v3, and also to sort out the life cycle of a Game Object, but once those things are done the next real task is to create some small games with it. Nothing too complex, but enough to know that we can push v3 beyond the simple examples we've been making so far, and use it 'properly'.

I also intend to start making new videos again. It was quite fun doing them before, and I think combined with the labs site it'll be good to visually show off what is possible. Realistically it feels like we've another couple weeks of tidying up and getting the final Beta 1 Game Objects in, and then we'll make some games and videos in advance of a Beta 1 release.

Thank you to everyone who has supported us during this period of development, especially those of you who are part of Patreon. I hope you'll be pleased with the end result!

Phaser 3 Mailing List and Developers Guide

If you're interested in helping evolve the shape of Phaser 3, then please join the Phaser 3 Google Group. Discussions this week have included varying render loops. The group is for anyone who wishes to help shape what the Phaser 3 API and feature-set will contain.

The Phaser 3 Developers Guide is available. Essential reading for anyone who'd like to help build Phaser 3.

Geek Links

ted

In this Classic Tools Retrospective John Romero talks about creating TEd, the tile editor that shipped over 30 games, including Commander Keen, Wolfenstein and Rise of the Triad.

The V8 team is currently working on a new compiler pipeline that will help us bring future speedups to real-world JavaScript. Replacing the current compiler architecture with the combination of an interpreter (Ignition) and a new optimizing compiler (TurboFan).

This video shows you how to mod your Porsche 911 so it can run Doom (the part at the end when he's driving around is great fun). Now, all I need in order to try this is a copy of Doom ...

A Dedication

I debated if I should include this part of the newsletter or not, but ultimately felt it was the right thing to do. Consider it a one off, because of the importance of today for me personally.

Today, February 24th 2017, is the 20th anniversary of the day my Dad was killed in a road traffic accident. It happened so long ago, yet at times feels like just yesterday. I was lucky enough to have a good relationship with my Dad, and I know that was a privilege a lot of others don't get.

He had worked hard all his life to support his family, but with his children finally growing up and leaving home, he was able to quit his job and do the one thing he'd always wanted: to return to education. He enrolled at college and was having the time of his life, studying hard, making friends, free from the pressure of his previous high-stress job. Yet it was all taken away from him. We're still not clear, and will never know the exact circumstances that lead to the accident, but it doesn't really matter. His life was cut short far too soon, leaving a wife and 3 children behind. And we all miss him terribly.

I'm aware that this sort of tragedy, and sadly much worse, happens every day. I don't write this to seek sympathy. I write it because I owe everything I am to the path my family set me on. Yes my achievements are the result of my hard work, but it's all built upon what they shaped in me.

Phaser itself contains so much of my personality and expression. You could argue it shouldn't, that it should just adhere to computer science best practises, and that personal feelings shouldn't enter it. But that isn't how it works, and honestly I don't believe it's how any software is built. I think if you look carefully you'll find a piece of the developer/s involved, leaving their personal stamp everywhere. Creating software is a human endeavour, done by ordinary people leading ordinary lives.

And on this day of reflection for me, I say a quiet thank you to my Dad, and everyone else in my life that have lead me to where I am today.

Phaser Releases

The current version of Phaser CE is 2.7.3 released on January 9th 2017.

Phaser 3.0.0 is in active development in the GitHub v3 folder.

Please help support Phaser development

Have some news you'd like published? Email support@phaser.io or tweet us.

Missed an issue? Check out the Back Issues page.

1px