Phaser World Issue 212

Happy New Year! It’s not too late to say that, right? This is our first issue of 2025, and we’ve got some great games and tutorials lined up for you, as well as a chunky Dev Log. Dig in …
🤯 Unity-like coroutines in Phaser
SBC Games has published a great new tutorial that will be of special interest to those who straddle the Unity / Phaser developer line: "If you are familiar with Unity, you may be used to work with coroutines. These are special methods whose execution can be suspended at specific points and resumed after a condition is met. They are handy for executing a sequence of steps.
🎮 2048 Match Balls
Imagine a world where numbered balls collide and merge, each combination bringing you closer to the magical 2048. This isn't just another matching game – it's a strategic puzzle that tests your aim and planning skills.
⛓️ Onchain Game Jam
The Onchain Game Jam by Bario Entertainment System umbrella is designed to bring talented indie game developers into the onchain gaming economy.
This jam bridges the gap between traditional game developers and decentralized gaming, encouraging creators to explore onchain possibilities while staying true to the creativity and freedom that indie games embody.
📺 Infinite Jumper Tutorial
Scott Westover is back with a brand new YouTube series: "Today, we’re diving into Phaser Editor v4 to create something really exciting: a retro-inspired infinite jumper game! Think of the classic pixel-art vibes of games like Metroid and Super Metroid—but now, you're building it yourself.
🎮 Bubble Town Quest
It was another idyllic day in Borb Bay. Birds chirped, Borbs laughed and played. Suddenly, a shadow fell over the town. It was a spaceship from outerspace. The Lumps had arrived! And Borb Bay would never be the same again. But who was behind the insidious invasion? It is up to you to find out. Only YOU can banish the Lumps and save Borb Bay from catastrophe!
Phaser Studio Developer Logs
The whole team is back working again, which means we have a nice big Dev Log for this issue!
🧑💻 Rich - CTO & Founder
This week has been its usual mixed bag of contents! Mostly, I’ve been working on Phaser v3.88, which has been a nice change of pace for me. An interesting side-effect of v3 being so well established is that the issues that come in now are quite esoteric in nature. Some require intense debugging to emulate, others only trip under particular conditions. It makes each one of them more of a challenge but equally more rewarding to close. Hopefully we should only need another week or two of dev before releasing. As with most v3 updates, these primarily address issues rather than dropping big feature bombs.
I also updated the Phaser API docs, so they contain all the current versions, which are available via a drop-down list. This makes navigating specific versions possible.
I’ve also been working on updating Phaser Box2D. There has been one new release, which fixes a minor issue but mostly continues the path of merging upstream changes into the core. This is an interesting process because the official box2d repo is a live, breathing, experimental bed of work. Ideas are tested, sometimes kept, sometimes dropped, and often mixed into the same commit as bug fixes and benchmark tweaks. Atomic, box2d commits are most certainly not, and unpicking those commits is often a real challenge. Still, that’s the price you pay when you hook onto an existing library of any kind. You have to match their style and processes, or you just cause a world of pain for yourself later on if you deviate too far.
Once v3.88 is out, the next objective is the release of Phaser v4.0.0 and Phaser Launcher, as well as building out the future roadmap. 2024 was a massive year for us. We shipped an incredible amount of products. We know what we want to achieve this year, and right now, all tasks revolve around making that happen.
🧑💻 Francisco - Phaser Launcher
Happy New Year, everyone!
This week, a bunch of stuff happened in Phaser Studio and Phaser Launcher.
In Phaser Launcher, I’ve been focused on improving the editor workflow, making sure everything works as smoothly as possible to get ready for the V1 release. I fixed a few annoying issues with folder creation—one of those "small but important" kind of fixes.
I also made a game! I followed the awesome guide by Emanuele Feronato: "Quick HTML5 prototype of ‘Vampire Survivors’ built with Phaser (like the original game).” The process was super fun, and it really highlighted how smooth creating a game feels now with the editor. The results look great too, which is always a nice bonus.
We’ve also been talking about adding new channels to the launcher, such as the channel for the tool Richard created to generate images using artificial intelligence and the Phaser Explorer to make browsing Phaser’s documentation much easier.
(don’t worry, it won’t look a thing like this when released! Simon is busy crafting the UI right now)
On top of that, I’ve been dealing with some Tauri V2 permission issues. During internal testing, Richard noticed that it wasn’t possible to create files or folders on a different drive from the system drive. To solve this, Can, Richard, and I discussed the issue, and the solution turned out to be simpler than it seemed.
Tauri V2 provides fs:scope, which helps us grant access to specific folders. So, the configuration now allows reading and writing on different drives. This means everything should work smoothly for V1.
Possible Future for the Tool
This week, I’ve also been exploring new Rust tools for creating builds. I’d like to incorporate this into the launcher so that when users hit "Play," a new build can be generated automatically. We might even be able to use TypeScript in the tool.
Additionally, I’d like to add more helpful features to the tool. For example, when you right-click on a .png file, it could automatically generate and copy the import code for that file, or even handle the import process automatically. Another idea is to make the scene generator fully automated as well, so when you create a scene, it’s imported right away. These features could save users a lot of time and streamline the workflow even further.
That’s it for this week! Catch you all next time with more updates on Phaser Launcher.
🧑💻 Zeke - Phaser v3.88
A very happy new year =)
After some good time off at the end of 2024 of rest, relaxation and refreshing, I’m back on board to tackle a string of GitHub issues.
Two things I’m thankful for as I begin my year:
Being part of an amazing team
You: being part of an amazing community
Why #2? Because a passionate community helps everyone grow and improve (our team included). Here’s how you help us become better:
Reporting issues on GitHub whenever you discover bugs or problems that don’t seem to have a solution. This helps us dig in further into our codebase to see where things can be improved.
Reporting issues on GitHub AND suggesting solutions. This saves a tonne of time for the team and benefits the entire community. Our resource stays focused on testing your solutions then quickly pushing it to our master branch repository.
Here is a list of GitHub issues I was looking at last week:
#6996: Wrong math variables used in the crop component for trimmed frames. Thanks @CrispMind for reporting this and suggesting a solution that we could immediately publish to fix this issue.
#6992: The calculation for
widthInPixels
andheightInPixels
causes incorrect layout and rendering in hexagonal tile maps. Thanks @ptantiku for the heads up and providing a solution that can be published quickly after some testing.#6979:
Interpolate.ColorWithColor
always returns a ColorObject with an undefinedcolor
value. After some digging, it was discovered that not only thecolor
value was undefined, but the alpha value was missing too. Thanks @XWILKINX for bringing this to our attention.#6972: Setting
ignoreDestroy
totrue
on game objects causes the game to freeze when leaving a scene. Thanks @samme for quickly pointing out the cause of this issue that happens in theDisplayList#shutdown()
function. I made a minor code change in the while loop to ensure theDisplaylist
is cleared even if the game object is not destroyed. If you are thinking of moving a complex game object between scenes, this could be a possible solution. Thanks @Stever1388 for bringing this to our attention.#6967: The
ArcadeColliderType
is missing theStaticBody
type. Strangely enough, all other occurrences where the Arcade PhysicsBody
orStaticBody
type is required, this is the only place whereStaticBody
is missing. Thanks @yongzheng7 for bringing this to our attention.#6893: NodeJS: scene ready before plugins loaded. There are cases where our community members run Phaser on NodeJS. Phaser typically runs on the browser and uses the HTML Canvas APIs. The challenge with NodeJS being server-side is it lacks native rendering context and this can cause some things to break. In this case, plugins aren’t booted up because it depends on completing a scene’s boot sequence in the browser. After discovering where the plugin boot happens, it was a simple fix to automatically boot the plugin whenever
headless
mode (server-side or non browser-based) is set in the game config file. Thanks @hubertgrzeskowiak for reporting this issue.
So what’s next?
- Tackling more GitHub issues (keep them coming so we can continue improving Phaser and making it a better)
That’s it for the week. Hope you have a good week ahead.
🧑💻 Can - Discord Activities
Happy New Year/Mutlu Yıllar, everyone!🌟
After having a blast year with the team & community, 2025 is here - refreshed the body and soul with bigger plans! I'm very excited to see where the journey goes.
Discord Monetization Guide
Last week, I kicked off the year by diving into the Discord monetization guide. If you haven't yet explored how to create Discord Games with Phaser, check out our tutorial.
This guide is one of the few resources out there focused on monetization within Discord games. We aim to show how to use the SDK effectively and implement monetization strategies(technical one!) in your projects.
You’ll find:
An overview of Discord monetization options and how they work.
Practical code examples for different scenarios.
A step-by-step guide to implementing a one-time purchase feature that grants a badge reward on your Discord server.
We believe this guide will be handy for developers looking to make the most of their games on Discord.
As usual, keep your pixels sharp everyone!
🧑💻 Arian - Phaser Editor
Hello friends!
This past week I've been working mainly on Box2D. To be precise, most of the time looking at examples, reading the documentation, and doing little experiments.
One of these experiments is a "Box2D editor" inside Phaser Editor. Take a look at how it looks:
Well... the truth is that this is not a new tool of the editor, but regular shapes which I then convert into Box2D bodies in the game code itself. Although this is a "trick", it has allowed us to get an idea of how we can implement our final tool. For example, so far we know that we will have to make a project template for Box2D and a new option to create a scene with Box2D support.
In this past year, we have seen many advances in the editor. Without a doubt it has been one of the most prolific years of the editor, which has been in development for 9 years now. This was to be expected, since we are now a team that has valuable experience in the field of video game development. Starting with the creator of Phaser himself... who better to contribute ideas and lead the development of the editor?
These are some of the features we added to the editor in 2024:
A massive improvement of the script nodes presentation and installation workflow.
Improved numerical input fields, that you can change with the arrow keys and the mouse wheel.
A welcome page.
Game object shader effects support.
An in-scene particle emitter tool, with in-line preview.
A new -amazing- logo.
An improved "new project" workflow, that includes installing dependencies and starting the development HTTP server.
Integration with the Phaser website authentication.
A certified installer of the editor for macOS and Windows.
A new Video game object.
A Chat window integrated into the editor to contact the Phaser Studio support team.
Improve assets workflow: from dropping files and folders to importing the assets.
Adopt Monaco editor as the built-in code editor.
Migrate to JavaScript ES modules in all project templates.
In-scene preview of sprite animations.
New Settings UI: including Keyboard shortcuts, external editor and external browser configuration.
A complete built-in tilemap editor.
Compressed textures.
If 2024 was a wonderful year for the editor, wait until 2025! For this year we plan to incorporate such important tools as:
Tween-based animation editor.
Layout manager for responsive games.
Assets and template marketplace.
Box2D physics editor.
Publishing outputs.
Support for many other game objects: Mesh, Plane, Geom, Shapes, Masks, Path.
Game UI.
Will we be able to implement all this this year? I think so, to a large extent!
Happy new 2025!
Tales from the Pixel Mines
13th January 2024, Ben Richards
Happy New Year! We've got plenty of awesome things in the works for 2025. Here's just a sampling.
Phaser 4
We're polishing up Phaser 4 for release as we speak. The public beta has found a few bugs in the advanced filter padding logic, which I'm in the process of fixing. This is honestly great news; everything else seems to be working, and working better than ever. The new Beam renderer is a big improvement for speed, reliability, and flexibility of WebGL rendering.
Don't Stop Shading
Shaders are a vital part of game development. We understand that, and we're coming up with multiple ways to get awesome shaders into the hands of developers.
Rendering Guide
I've been discussing the internals of the renderer on Discord for much of the past week. It's clear we need a guide, not just to writing shaders for Phaser, but for the whole Phaser Beam rendering pipeline. So my next task is to write that guide, covering all the key parts of Beam:
RenderNodes
DrawingContext
Batch Rendering
WebGL State Management
Basic Sprites
Nested Rendering
Filters
Shaders
Shader Library
There are infinitely many possible shaders. We can't fit them all into Phaser. So we're planning the next best thing: a shader library for sharing shader and filter plugins.
We removed a lot of filters from Phaser 4, as they were too specialized to be useful to most developers. I've always planned to bring them back as plugins. This keeps the Phaser library small, but preserves the ability for developers to use shaders and filters freely.
New Frontiers
Right now, we're focused on making Phaser 4 the best 2D compositing system we can. But development doesn't stop there.
Rich has said that 3D is on the cards. We don't know what shape this is going to take yet, but we want to do it seriously. This is why we removed the Mesh and Plane objects that were in Phaser 3. They're useful, but they would be more useful as part of a true 3D system. Games in the 21st century rely on a lot of technologies, from lighting to animation, and I'd like to take the time to get it right.
Before that happens, though, we've been discussing smaller projects to push us in the right direction. See how I called Phaser 4 a "2D compositing system"? That's a very specific approach to rendering. Phaser's core strength is putting sprites on the screen, building up a scene layer by layer. That's very flexible, but it has tradeoffs in CPU time computing transforms, and bandwidth sending buffers to the GPU.
What if you didn't have to do that? Well, then you'd be able to render 100 times faster, handling literally millions of sprites. The cost is, you're no longer able to control the sprites you're rendering. Can you keep a secret? Listen: You don't need to control backgrounds. They stay in one place. Can you keep another secret? That's not true - backgrounds can move.
But hush - it's a secret. We think you'll be happy when you see what we've been cooking.
Into the Future
We've got big plans, and it all starts with Phaser 4. The beta is ongoing, so check it out if you haven't already. It's both a huge change, and a tiny change. Unless you work with masks, FX, shaders, or other parts of the render system directly, it should just work. We worked hard to make it as compatible as possible - and where we couldn't, we made it better instead.
From there, the wild ride continues. We hope you'll be there with us in 2025.
Share your content with 18,000+ readers
Created a game, tutorial, code snippet, video, or anything you feel Phaser World readers would like? Then please send it to us!
Until the next issue, happy coding!
Subscribe to my newsletter
Read articles from Richard Davey directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
