Newsletter
Published on 17th June 2024
Welcome to Phaser World Issue 184
Are you a Phaser dev who likes to hang out on Reddit? Then, you may wish to check out /r/phaser. We've recently gained moderation rights to this subreddit and are now posting to it - so it's no longer the wilderness it used to be. Feel free to join us there.
Game of the Week
PokéRogue
Check out the game that is currently trending on YouTube: A massively popular Pokémon fangame heavily inspired by the roguelite genre. Battle endlessly while gathering stacking items, exploring many different biomes, and reaching Pokémon stats you never thought possible.
Invader
Destroy all enemies.
Arena Survivors
Destroy horde of enemies, use secrets, survive all arenas in this rogue like RPG.
Funny Business
The show must go on.
SunnyLand demo
Your goal is to bring Shin the cat home by guiding him through the levels.
Firestarter
Blast Fireworks Live on Stream in this rocket launching Twitch extension created with Phaser.
CodeVenture
Explore a Coding Adventure with Playful Coding Games.
@vpmedia/phaser
A modern ECMAScript port of the popular Phaser game engine v2.6.2.
Monster Tamer - RPG Tutorial with Phaser 3 - Ep. 105 - Leveling & Experience Part 1
In this video, we start working on the next feature for our game, gaining experience and allowing our monsters to level up.
Introducción a Phaser Editor - ACM - Universidad Nacional de San Agustín de Arequipa
Introduction to Phaser Editor. In Spanish.
The Mobile Game Control Problem
Let’s cut to the chase. Mobile touch controls suck. Games created in the 1980’s are more satisfying to play than most things available today on the App Store.
Francisco: This week I have been working on the base templates for Phaser Editor.
Additionally, I am developing a tool that we will use to keep the Phaser version updated in all templates and at the same time generate new templates for Phaser Editor using the base templates I am working on.
Currently, we have 4 bases that differ from each other, these are:
- JS Template
- TS Template
- JS Template with some framework (React, Vue, etc...)
- TS Template with some framework
To accomplish this task, I have had to adapt each scene of the templates with the Editor and generate new bases and test them with the templates we already have. Here is a sample of the progress with React:
Arian: Greetings friends. Once again we are faced with a blank page, keyboard in hand, to write broadly what we have done this week. It's a challenge for me, but it doesn't compare to... writing documentation!
Writing documentation is a painful process for me, it gives me a headache, but I understand that it is necessary and very useful for us and you. And that's what I've been doing this week, writing the documentation for the new particle emitter tool. This is good news because that means we have already finished the first version of this tool. It is now ready to travel the world.
But before making a release, we want to finish another task: an installer for Phaser Editor. We already have the installer for macOS ready, although it is possible that we will update the graphic design. Today, on the last day of the week, I am getting ready to work on the installer for Windows. I've already been reviewing some tools and have decided on Inno Setup. There are many tools for Windows, but I think that with Inno Setup we will be fine.
If you have any recommendations, if you have experience programming installers, please let us know on our #phaser-editor channel.
Have a good weekend. Oh, congratulations to the fathers! We rock!
Can: Hello there,
This week, my work on Input system continues with the Phaser Nexus.
I’ve restructured the code structure to have more modular, easy to add new features, and keep it minimal while having enough set of features.
Current structure basically looks like:
Input(proxy) -> InputManager -> Gestures -> TapGesture, PressGesture, PinchGesture, RotateGesture. It accepts Game Objects, SVG Elements (image, shapes, text) and any type of HTML element you have. It uses pointer events behind the scenes to control all the platforms - which is handy way of keeping it minimal too!
More examples coming soon to demonstrate how it works!
Stay tuned, and happy coding all!
Robert: ¡Feliz Día del Padre!
Another week, another dev log. The examples migrations needed some restructuring, had to verify imports of existing lab examples ensuring compatibility and clean up any bugs that crept up. I added a few optimizations and cleaned up any of the issues I saw with the UI. Hopefully this will be rolling out soon and we can see our users taking advantage of all new features. With module support would you like to be able to load other scripts with just the script tags, instead of needing to import everything? Otherwise have a great week and look for some awesome new things coming.
Ben: 2024-06-14
Last week I worked on Zeus, the physics engine with a destiny in Phaser's future. This week, I spent a little time finishing up Zeus' handling of time steps. This is a deterministic engine, which means it runs the physics simulation in fixed steps. Given the same inputs, it should always produce the same outputs.
After that, I returned to Beam, the new rendering system. First on the agenda was a "generic vertex buffer". This is just a shared memory buffer where WebGL data can be uploaded to be consumed. As it's intended to be used immediately and then forgotten, there's no point making an individual buffer for each separate shader! We just prepare a different VAO (vertex array object: a binding that tells a shader where to look for attribute data), and point it at the same buffer. This prevents a game with many shaders from blowing out of memory, although there may still be some individual buffers with persistent data for special purposes.
The generic vertex buffer is a bit bigger than the buffers we previously used. About 10 times bigger, in fact. But it can't get any bigger unless we switch to 32-bit vertex indexes. This 16.7MB buffer can address all 4 bytes of all 4 floats of all 16 vectors of all 65536 possible vertex indices. Anything can fit in there.
Then I changed the RenderNodes. Again. But this time I'm happy with what we've got! I upgraded game objects to track an entire population of RenderNodes, each in a specific role. So now we can swap out the texture behavior, or the transform calculations, or the node which chooses how to batch data, without interrupting the others. I think this provides much improved flexibility in tailoring rendering behavior on individual game objects.
This would be useful for things like adding lighting to objects. But you don't have to worry about interfacing with the rendering system any more, because I added a Lighting component. Now, instead of calling gameObject.setPipeline('Light2D'), or the new gameObject.setRenderNodeRole('Submitter', 'SubmitterQuadLight'), you can call gameObject.setLighting(true). That's much more discoverable and easy to reason about, especially if I change the names of the nodes again again!
Finally, I started adapting more game objects to the new renderer. I already had Image, Sprite, Text, and Video working. Now we can add PathFollowerSprite and Zone (they were already working and I hadn't checked), as well as DOMElement, Extern, and NineSlice. You don't need to throw twenty thousand NineSlice objects at the screen, but if you do, I've greatly improved their performance. They used to be composed out of 54 vertices defining 18 triangles to make up 9 quads. Now, we use just 18 vertices to compute 9 quads. Spending all this time in the pixel mines, we pick up a thing or two.
Next week, I'll be preparing a big pile of other GameObjects. Who knows? We might find some more optimizations. Beam is shooting out faster and faster.
Phaser Releases
Phaser 3.90.0 Technical Preview 2 released 31st May 2024.
Phaser Editor 4.0.2 released 30th May 2024.
Phaser CE 2.20.0 released 13th December 2022.
Have some news you'd like published? Email support@phaser.io or tweet us.
Missed an issue? Check out the Back Issues page.
©2024 Phaser Studio Inc | 548 Market St PMB 90114, San Francisco CA 94104