TileSprite Game Objects, DDoS Attacks and Trello
At 4 pm GMT on Thursday 4th May the HTML5 Game Devs Forum was the victim of a well coordinated and sustained DDoS attack. It was a properly distributed attack meant specifically to disable the website, which it did, by opening thousands and thousands of connections, causing our httpd process to exhaust itself. The incoming bandwidth flood at the peak of the attack was in the order of 20GB per second (that's bytes, not bits.) We have a powerful server, hosted at a world class data center, but even it couldn't cope with that. The problem is that the forum and the Phaser website share the same physical server, so taking out one caused the other to fail as well, along with a handful of less important sites.
I worked diligently all night with my host to resolve the issue, and thanks to their support we managed to mitigate the effect of the attack by early Friday morning. Repercussions could still be felt, however, and due to a complete lack of sleep, and being worried about the stability of the site and forum, I chose not to publish the newsletter on Friday like usual. After all, it's basically a big long list of links - and I couldn't guarantee they'd actually work, plus directing thousands more people towards the sites wouldn't have helped the problem either.
So here we are on Monday instead. A couple of days late, but at least stable. It's been a frustrating past few days. This time of the month is when the Phaser site does the most amount of sales (of books and plugins), so that 'pay day' weekend has been lost. I also know that loads of you look forward to the newsletter every Friday, so it was annoying not being able to send it. What's more, it has cost me a significant amount of time and money to resolve the attack, neither of which I wanted to be spending on anything by Phaser 3. I'm understandably a little grumpy about it all! Going forward we are moving the forum to its own dedicated server and adding industry level DDoS protection to the Phaser site. It's not something I had budgeted for, or ever dreamed I'd need. And although the attack was against the forum, and not Phaser specifically, being a casualty of war was expensive all the same.
Phaser 3 Updates
It's not all doom and gloom though. Although I personally lost 2 days development, Felipe was able to solider on and cracked out the brand new TileSprite Game Object, with Canvas and WebGL renderers now stable.
TileSprites are a special type of Game Object in which their texture repeats and can be scrolled independently of the sprite itself:
The texture repeats horizontally and vertically, and if the original source image is seamless, the TileSprite will appear seamless as well. As the texture can be scrolled it makes them perfect for things like scrolling backdrops, or just interesting graphical effects:
The images used to texture the TileSprite can be loaded, generated at runtime, or come from a texture atlas frame. It's great to have these in Phaser 3 and is another thing ticked off our Beta 1 todo list.
Hello Trello
As we move towards Beta 1 it has become important for us to start organizing tasks more efficiently. Every day I will sit down at breakfast with a notebook and jot down ideas and plans for Phaser 3. Some of these turn into Examples, some turn to features, and others are dropped after discussion.
As well as these ideas we've also got a work log to get through of all the features that Phaser 3 needs in order to be Beta ready. Progress has been steady, as you've seen this year, but the time came to switch to a different form of managing it all. So we bit the bullet and signed up with Trello. Lots of you are likely familiar with Trello already, so I'm not going to discuss it in depth. What I will share is how we're using it.
We've one Board per part of Phaser. For example in the screenshot below you can see boards for the Animation Manager or the Loader, and there are lots more. The blue boards are internal systems, like Physics and Input. The orange ones are Game Objects, like Text or Sprites. The green boards are components or utilities, like Math, Geometry, and Actions. And finally, we have a few boards for 'off the wall' ideas, where we can discuss them before either archiving them or moving them into a more suitable area.
Within each Board we have cards. These vary dramatically, but on the whole, they equate to single isolated tasks. For example, there is a card for us to discuss how input picking is handled in WebGL. Or a card for creating a specific example combining a mixture of Game Objects with known complex batch requirements.
Cards are then assigned to each of us, given a due date, and acted upon. Our Boards are linked into both Slack and GitHub, so we can make a card as completed by hooking it to the specific GitHub commit that contains the work it involved. By linking to Slack, which is where we always discuss what is going on as we work, we can update the cards from there, or create new ones. It's a bit noisy (the volume of notifications coming in can be quite high sometimes) but it's powerful and well worth having.
As we move deeper into Beta 1 territory this process is becoming more and more useful by the day. Ultimately it will be replaced with GitHub once v3 is released. For now, though it helps bring sanity to what is an immense task.
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. The group is for anyone who wishes to discuss what the Phaser 3 API will contain.
The Phaser 3 Developers Guide is available. Essential reading for anyone who'd like to help build Phaser 3.
At 4 pm GMT on Thursday 4th May the HTML5 Game Devs Forum was the victim of a well coordinated and sustained DDoS attack. It was a properly distributed attack meant specifically to disable the website, which it did, by opening thousands and thousands of connections, causing our httpd process to exhaust itself. The incoming bandwidth flood at the peak of the attack was in the order of 20GB per second (that's bytes, not bits.) We have a powerful server, hosted at a world class data center, but even it couldn't cope with that. The problem is that the forum and the Phaser website share the same physical server, so taking out one caused the other to fail as well, along with a handful of less important sites.
I worked diligently all night with my host to resolve the issue, and thanks to their support we managed to mitigate the effect of the attack by early Friday morning. Repercussions could still be felt, however, and due to a complete lack of sleep, and being worried about the stability of the site and forum, I chose not to publish the newsletter on Friday like usual. After all, it's basically a big long list of links - and I couldn't guarantee they'd actually work, plus directing thousands more people towards the sites wouldn't have helped the problem either.
So here we are on Monday instead. A couple of days late, but at least stable. It's been a frustrating past few days. This time of the month is when the Phaser site does the most amount of sales (of books and plugins), so that 'pay day' weekend has been lost. I also know that loads of you look forward to the newsletter every Friday, so it was annoying not being able to send it. What's more, it has cost me a significant amount of time and money to resolve the attack, neither of which I wanted to be spending on anything by Phaser 3. I'm understandably a little grumpy about it all! Going forward we are moving the forum to its own dedicated server and adding industry level DDoS protection to the Phaser site. It's not something I had budgeted for, or ever dreamed I'd need. And although the attack was against the forum, and not Phaser specifically, being a casualty of war was expensive all the same.
Phaser 3 Updates
It's not all doom and gloom though. Although I personally lost 2 days development, Felipe was able to solider on and cracked out the brand new TileSprite Game Object, with Canvas and WebGL renderers now stable.
TileSprites are a special type of Game Object in which their texture repeats and can be scrolled independently of the sprite itself:
The texture repeats horizontally and vertically, and if the original source image is seamless, the TileSprite will appear seamless as well. As the texture can be scrolled it makes them perfect for things like scrolling backdrops, or just interesting graphical effects:
The images used to texture the TileSprite can be loaded, generated at runtime, or come from a texture atlas frame. It's great to have these in Phaser 3 and is another thing ticked off our Beta 1 todo list.
Hello Trello
As we move towards Beta 1 it has become important for us to start organizing tasks more efficiently. Every day I will sit down at breakfast with a notebook and jot down ideas and plans for Phaser 3. Some of these turn into Examples, some turn to features, and others are dropped after discussion.
As well as these ideas we've also got a work log to get through of all the features that Phaser 3 needs in order to be Beta ready. Progress has been steady, as you've seen this year, but the time came to switch to a different form of managing it all. So we bit the bullet and signed up with Trello. Lots of you are likely familiar with Trello already, so I'm not going to discuss it in depth. What I will share is how we're using it.
We've one Board per part of Phaser. For example in the screenshot below you can see boards for the Animation Manager or the Loader, and there are lots more. The blue boards are internal systems, like Physics and Input. The orange ones are Game Objects, like Text or Sprites. The green boards are components or utilities, like Math, Geometry, and Actions. And finally, we have a few boards for 'off the wall' ideas, where we can discuss them before either archiving them or moving them into a more suitable area.
Within each Board we have cards. These vary dramatically, but on the whole, they equate to single isolated tasks. For example, there is a card for us to discuss how input picking is handled in WebGL. Or a card for creating a specific example combining a mixture of Game Objects with known complex batch requirements.
Cards are then assigned to each of us, given a due date, and acted upon. Our Boards are linked into both Slack and GitHub, so we can make a card as completed by hooking it to the specific GitHub commit that contains the work it involved. By linking to Slack, which is where we always discuss what is going on as we work, we can update the cards from there, or create new ones. It's a bit noisy (the volume of notifications coming in can be quite high sometimes) but it's powerful and well worth having.
As we move deeper into Beta 1 territory this process is becoming more and more useful by the day. Ultimately it will be replaced with GitHub once v3 is released. For now, though it helps bring sanity to what is an immense task.
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. The group is for anyone who wishes to discuss what the Phaser 3 API will contain.
The Phaser 3 Developers Guide is available. Essential reading for anyone who'd like to help build Phaser 3.