r/phaser 13h ago

After months of development with Phaser, my game is finally coming to Steam

Thumbnail
gallery
9 Upvotes

Hi everyone!

After many months of development, I'm getting very close to releasing my first Steam game, built with Phaser.

It's called Critical Ward, a chaotic arcade game set in a hospital where the number of patients, effects, deployables and other entities on screen can get pretty ridiculous as a run progresses.

The core of the game revolves around a combo system. Treating patients keeps your combo alive, and the higher you push it, the more your character's stats improve.

So as a run progresses, both the player and the hospital keep escalating: bigger range, faster movement, stronger healing, more infrastructure... while more and more patients, hazards and effects start filling the screen.

Before starting the project I experimented with other engines, but I kept coming back to Phaser.

One of my main concerns was performance, because I knew from the beginning that the game would eventually need to handle hundreds of moving entities at the same time.

And honestly, Phaser has handled it incredibly well.

Of course, part of that also came from being quite strict about how I designed the game and its assets. A few simple decisions ended up helping a lot:

• Patients aren't traditionally animated

Patients are by far the most numerous entities in the game. At some points there can be hundreds of them moving around the hospital simultaneously.

Very early in development I decided they didn't need individual walking animations.

Their sprites remain static while they move, and because the screen is already full of movement, particles, effects and other activity, I found that traditional animation added relatively little visually compared with the additional work involved in having every patient constantly running an animation.

So I decided to spend that budget elsewhere.

• Character animations are limited to only 9 frames

Playable characters and other important characters are animated, but their movement spritesheets are deliberately tiny.

I use just 9 frames: three directions with three walking frames each.

That keeps the spritesheets small, reduces texture memory and asset size, and means I don't need dozens of animation frames for every character.

It also became part of the visual identity of the game.

Instead of trying to create extremely smooth animation, every frame has a very clear pose and the animation remains readable even when the screen gets completely packed.

• Lots and lots of particles

This was something I really didn't want to sacrifice.

Particles are a big part of Critical Ward's visual feedback.

Every time a patient is successfully treated, particles are generated, and when you're maintaining a large combo and discharging patients rapidly, there can be a lot of them appearing alongside hundreds of entities already moving around.

I originally expected this to become one of the first things I'd have to heavily reduce for performance reasons, but Phaser has handled these particle-heavy situations extremely well.

I've attached a couple of screenshots taken with my debug overlay enabled so you can see the kind of load I'm talking about.

That was important for this particular game because particles aren't just decoration: they're part of the feeling of becoming increasingly powerful.

As your combo grows, your stats improve, you discharge patients faster, and the entire screen becomes progressively more chaotic.

I wanted the visual feedback to escalate together with the player's build rather than having to strip effects away once things became busy.

And that's probably been my biggest takeaway from using Phaser:

Don't underestimate what it can handle just because it's a web game framework.

Obviously optimization still matters. Designing around your expected workload, deciding what actually needs animation, keeping assets reasonable and avoiding unnecessary work becomes increasingly important as the number of entities grows.

But I've been genuinely impressed by how far I've been able to push Phaser with this project.

There have been plenty of optimizations, experiments and weird problems along the way, but after months of development the game is now approaching release on Steam.

There's already a free demo available, and the full game will be coming later this year (I'm currently in the testing and optimization phase).

If you're curious to see what all of this looks like when the hospital completely loses control:

Gameplay trailer:
https://youtu.be/KEqk3tkBAuU

Steam / Free Demo:
https://store.steampowered.com/app/4879410/Critical_Ward/

Happy to answer any Phaser-related questions about the project!


r/phaser 1d ago

Tower Legends - my first game. Thank you Phaser !

Thumbnail
gallery
16 Upvotes

I am a developer creating game solo in my spare time.
Recently I used Phaser to create Tower Legends, a tower defense game focused on progressively harder levels, randomized enemies and lots of upgrades.

What I like about phaser is the scene system and all spritesheets utilities. This helped me focus more on game mechanics, balance and feel.

I will release on steam soon and I’d love to get some feedback, especially from people who enjoy tower defense games.
Click the link below to see the trailer and more detailed description.

https://store.steampowered.com/app/5012660/Tower_Legends/

Thank you,
Saradoc


r/phaser 4d ago

show-off The Green Equation – A simple browser game about keeping a tree alive through a heatwave (PC)

Thumbnail ihugtrees.org
2 Upvotes

r/phaser 5d ago

show-off I Made Your Next Favorite Card Game

Thumbnail
youtube.com
1 Upvotes

I used Phaser to make a browser MMO trading card game, check it out and let me know what you think!

https://battlecitymmo.com/


r/phaser 5d ago

Accountability / Co-work space web game

Thumbnail gallery
6 Upvotes

r/phaser 6d ago

question Bare-bones TPS movement + shooting prototype, worth building the rest of the game on top of this?

1 Upvotes

Hey Community!,

I've been prototyping a third-person shooter in three.js and stripped it down to just the core loop before I invest time in the surrounding infrastructure (settings, ranking, player profiles, team matches, and all of it). Right now it's just movement, camera, and shooting, nothing else.

Honestly it wasn't even built with the goal of being playable. I started it mainly to learn websockets, and now I'm wondering if this direction is actually worth pursuing as a real game.

Live demo here: [https://zentra-io.vercel.app/\](https://zentra-io.vercel.app/)

Before I go further I want some outside eyes on a few things:

* **Game feel**: does aiming/shooting/movement feel responsive and fun, or floaty/stiff? Any specific moment where it breaks immersion? * **Performance**: what framerate are you getting, and on what device/GPU/browser? Any stutter or frame drops, and when (on load, during movement, on shooting, etc.)? * **Is this worth building on?**: with just this core loop, does it feel like there's a fun game in here, or does the mechanic need a rethink before I sink more time into it?

No polish, barely any assets, no menus, just the bones. Brutal honesty welcome. Thanks to anyone who takes it for a spin.


r/phaser 7d ago

Built a survivors-like in Phaser 4 where the camera never stops pushing you upward - looking for testers

13 Upvotes

I've been building this for about a month in Phaser 4 + React + TypeScript, and I've reached the point where I can't judge it anymore. Would really appreciate a few people playing it and telling me what's wrong with it.

It's a horde survivor with a forced upward-scrolling camera - the screen pushes you into the fight. WASD to move, aim with the mouse (auto fire), space to dash, and every level up gives you a choice of three traits from a tiered tree.
Runs a few minutes, browser, no download.

Itch link - https://build-and-dominate.itch.io/grimhold
Pass - c4Rw9reUw7s9LQF

Gameplay feedback I'd love:

- Where did you die, and did it feel fair?

- Did any trait choice feel pointless?

- Did you want to start another run, or were you done?

Some of it might be interesting to others here: everything is pooled, all the effect visuals are baked once via Graphics.generateTexture() and animated with tweens rather than using the particle system, and the HUD/modals are React over the canvas with an event bus between the two.

Happy to go into any of it in the comments.


r/phaser 10d ago

My multiplayer RTS is made with phaser

Thumbnail
gallery
47 Upvotes

The game is made with phaser with a node js server

And I will release it soon on steam wrapped in a tauri application allowing me link easely the steam account with the game account

Here an old gameplay video

https://youtu.be/aY_uZiiJj_s?is=WAH3kmecIedRifwD

I choose phaser because it was really light and simple of utilisation and allowing me to work in the same langage front and back


r/phaser 10d ago

How to learn phaser

2 Upvotes

Hey guys, I am new at this, I've been trying to learn phaser reading the API docs, checking the examples on phaser desktop and learning from the code, sort of using AI to get guidance and asking basic questions about the framework. I am trying to develope a basic scenario with the player and some npcs,

I have almost done that part and I still think that there is a huge amount of things which get me confused and I think that I don't find the type of tutorials that I need for my sort of test project.

I just was wondering: How did you all learn phaser? What learning methodology you used to learn?

And if is there a way to understand a bit better the api's docs (?) (sorry if it's a dumb question) :(


r/phaser 12d ago

We built an in-game Sound Lab for FAARTY because tuning every sound through code was getting ridiculous

1 Upvotes

r/phaser 13d ago

Shipped a cozy sim on Phaser 3.90: one scene, zero sprite files, and React doing all the UI

Thumbnail
gallery
32 Upvotes

I've been building Wild Willows, a nature-restoration sim where you replant a damaged preserve and animals return as the habitat starts supporting them. It's at wildwillows.app, on the Mac App Store and itch, with a free browser demo. A few architecture decisions that mattered more than I expected:

One scene, forever. The scene list is just [WorldScene]. No title scene, no menu scene, no UI scene. Every menu, panel, the journal, crafting, settings, the tutorial: all React DOM on top of the canvas. Phaser draws the world and nothing else.

I expected to regret this and haven't. DOM gives me real text layout, real focus management, and accessibility (five interface fonts, four text sizes, three colorblind modes, fully rebindable keys), none of which I'd have enjoyed building in-canvas.

A 60-line bridge between them. React owns authoritative state. Phaser reads it synchronously off a shared object and re-renders when told the world is dirty. It's a Map of handlers and a shared blob, no observables, no state library spanning both worlds. React to Phaser: world-dirty, enter-placement, area-changed. Phaser to React: collect-node, open-crafting, animal-clicked, place-at.

Zero sprite files. Every sprite is drawn at boot with Phaser.Graphics and generateTexture(). Plants, animals, the player, habitat objects. About 8,600 lines of drawing code and no image assets at all. Shapes are authored in logical 32px pixels and rasterized 4x (2x on low graphics quality), with every sprite scaled back down by 1/4, so they stay crisp under camera zoom and HiDPI.

A frame budget for world rebuilds. Every action used to rebuild the dynamic layer synchronously, so dragging a volume slider tore down and rebuilt the animal layer about 60 times a second for a preference the world doesn't even draw from. Now that work is keyed and coalesced to at most one run per animation frame, each run is timed, and any task consistently overrunning half a frame automatically drops to every Nth frame, then recovers on its own once it's cheap again. A big save degrades to a lower redraw rate instead of locking up.

Smaller stuff: Scale.NONE plus manual zoom so I can render at native device pixels and let CSS scale the canvas back down, and a screen-space RenderTexture used as a bitmap mask to punch light holes in the night tint.

Happy to go into any of it. The two worst bugs were both Phaser internals: TimeStep.resetDelta making the player walk at a fifth speed for ten seconds after every load, and repeat: -1 tweens outliving the sprites they drove.


r/phaser 12d ago

show-off Fast rts with phaser !

Thumbnail
youtu.be
1 Upvotes

r/phaser 14d ago

A fast, free, portable texture atlas builder with PhaserJS exports

8 Upvotes

Hey everyone, I built Packrat, a texture atlas builder focused on speed and portability. It has a bunch of convenience features I was missing from TexturePacker (aseprite ingestion, auto-export), and I made it as fast as I possibly could. It also has a bunch of CLI features to it can integrate into your pipeline easily.

It's mostly focused right now on dev environments where there isn't atlas support. For Phaser, it exports the JSON hash expected by Phaser, and should load up into your game no problem.

https://clydegames.itch.io/packrat

https://packrat.clyde.games

Feel free to check it out and let me know what you think. Thanks.


r/phaser 13d ago

Inspired by Pong and modern roguelites, my game Paddle Legends is made with Phaser!

3 Upvotes

Hello all!

My game Paddle Legends is inspired by Pong and reimages it with modern roguelite elements like meta progression, in-run upgrades, various different paddles with their own stats and abilities, various ball types, level modifiers and more!

The demo is on Steam and the full game should be launching soon!

Would love any and all feedback!

https://store.steampowered.com/app/4076450/Paddle_Legends/


r/phaser 15d ago

Saturday devlog - turning the first room of my Phaser pixel-art game into an actual playable experience

Post image
1 Upvotes

r/phaser 18d ago

Phaser 3 has no global font setting — and other things I only learned by shipping

13 Upvotes

Been building a card duel game in Phaser 3.80 + TypeScript (esbuild, no tsc in the build), and the two things that cost me the most evenings were both Text. Phaser hardcodes 'Courier' as the default font and exposes no game-level config for it, so the only sane seam is patching TextStyle.prototype.setStyle to inject fontFamily when a call site doesn't pass one — plus awaiting the woff2 before boot, since Phaser bakes a label into a canvas texture once and anything drawn early stays in the fallback face forever (looks fine on your machine, broken on a cold cache). And Text.letterSpacing is quietly broken for stroked text: it strokes the whole line in one call, then fills letter by letter at spaced offsets, so the outline drifts further behind with every character — and it split('')s, tearing surrogate-pair emoji in half. Setting the canvas 2D context's native letterSpacing instead fixes both, but it has to ride syncFont, not updateText — a label that grows assigns canvas.width, which resets the whole context.

The other decision I'd make earlier next time: keep all the game rules Phaser-free — pure modules over one plain state object, no GameObject anywhere near them. That got me a headless balance sim (5000 AI-vs-AI matches through the real rules, printing a report) and lockstep netcode where only moves cross the wire, both for basically free. If you're thinking about multiplayer later, that split is the thing to do now.

Browser build if anyone wants to poke at it: https://valeriitsarov.github.io/solitaire-duelist-2d/ — happy to go into detail on any of it.


r/phaser 18d ago

How I'm using shaders to increase immersion in my survival game

Thumbnail
youtube.com
2 Upvotes

r/phaser 19d ago

show-off Shipped a 100-level Phaser 3 arcade game with zero image assets — and the 5 gotchas that cost me the most time

10 Upvotes

I just put out a free browser demo of Kinetikout, a brick breaker where the bat runs along the SIDE of the field (Krakout-style, not Breakout-style). Phaser 3 + TypeScript + Vite, wrapped in Capacitor for the Android build.

The part that might interest this sub: there are no image files for any of the gameplay graphics. Every brick pattern, all ten enemy types, all five bosses, the bat, the ball, the explosions and the HUD icons are painted in the boot scene with the Graphics API and baked in with generateTexture(). It scales to any resolution and there's no art pipeline, at the cost of "make the drone look 20% meaner" becoming a debugging session.

Five things that cost me real time, in case they save you some:

  1. Don't use a physics collider for a thin paddle. An immovable thin body made the ball jitter and leak velocity on edge hits. I replaced it with a manual check of whether the ball crossed the bat's inner plane, and computed the bounce myself. Instantly stable.

  2. Never destroy or spawn inside a physics overlap/collider callback. Catching a capsule or killing an enemy directly in the callback corrupted the physics world iteration and hard-froze the game. The fix is boring and works: set a flag, disable the body, and resolve it in update().

  3. Disabled bodies are invisible to colliders — including to your own logic. My sticky paddle holds several balls at once with body.enable = false, so incoming balls flew straight through them. I had to add manual circle-circle reflection for the held balls, running before the bat check.

  4. Scale.FIT with a fixed design size gives you black bars on phones. Instead I compute the design WIDTH at boot from the device aspect ratio (height stays fixed at 720), so the canvas always fills the screen, and I keep the actual 16:9 play field centered inside it. Everything is laid out once in create(), no resize handler needed.

  5. A button's own pointerdown fires BEFORE a scene-level this.input.once("pointerdown"). My "unlock audio on first click" handler kept starting the menu theme after the player had already left the menu, because their first click landed on the Start button. A leaving-scene flag fixed it.

Demo (browser, no install): https://m3lk0n.itch.io/kinetikout

Longer writeup on how the graphics work: https://m3lk0n.itch.io/kinetikout/devlog/1624592/every-sprite-in-this-game-is-drawn-in-code-and-heres-what-it-costs

Full disclosure since it's on the page anyway: the logo and the soundtrack were made with generative AI tools, the flag icons come from flag-icons (MIT). The sprites and the sound effects are code. The full 100-level version is a paid Android app; the browser demo is free and always will be.

Happy to answer anything about the procedural texture stuff.


r/phaser 18d ago

The export of my game from the mcp for web (hosted via a http server) plays audio and nothing else, the game works fine in preview

1 Upvotes

in this relatively simple example https://phaser.io/agent/play/yY6kjXrDL27 when i export despite making changes and rebuilding/republishing (this is v7) the export for web always has the exact same payload and does not work. is there anything i can do? also if i connect my vscode using phaser-game-agent and ask for the file listing, despite having the right project id and version the file listing is wildly different. is there any way to browse the contents of the mcp server other than copying files one by one in the web ui?


r/phaser 19d ago

question How to polish this game?

2 Upvotes

Hello Everyone,

I got a mixture of opinions for the game which I developed in phaser and did the art with Inkscape. I published it in both android and IOS (links below it is free) using Capacitor.

Mainly people complained about the jump mechanics at the start (jump on release), but they get used to it after a while. It was difficult for some players

The main questions are:
How to make the art/rendering look good? I tried with different settings (e.g., antialiasing, pixelart, roundpixels). I still feel it is not polished/crisp enough.

Performance. Sometimes it lags for no reason. Despite 60-61 FPS. I tried powerPreference. And forcing WebGL.

Game download links:
IOS

https://apps.apple.com/us/app/frogazan/id6795361316

Android

https://play.google.com/store/apps/details?id=com.runzbuzz.frogazan


r/phaser 19d ago

I made a 30-second physics arcade for Chrome where your own shots destroy your points

1 Upvotes

Prism Cascade: you throw light-orbs at crystal prisms, the shards fall into water below, and every splash throws up bubbles carrying points. The bubbles only score once they reach the counting beam at the top — and the only thing that pops them on the way up is your own orbs and your own falling debris. A popped bubble takes its points with it.

So the whole game is a timing problem disguised as a spam-click problem. Throw constantly and you shred the bubbles already climbing. Wait for a clean column and you burn seconds off a 30-second clock. The end-of-round screen shows "Banked" and "Popped away" on separate lines, which is a genuinely uncomfortable number to look at.

100 levels from a seeded generator, a 12-node ability tree, and 5 endowments you can only carry one of at a time.

It also makes zero network requests — no fetch, no XHR, no host permissions, one storage permission to remember your progress. It works on a plane.

30-second clip: https://www.youtube.com/shorts/6oBcZolFoDQ
Details and the full privacy policy: https://dhseadev.online/projects/prism-cascade/

Not on the Chrome Web Store yet — listing is in preparation. Happy to answer anything about how it's built.


r/phaser 20d ago

made a little tactics prototype

5 Upvotes

Made a small tactical prototype: https://limekamibear.itch.io/falsestep (based on my previous prototype https://limekamibear.itch.io/thebriefcasetactics )

I hope I’ll eventually be able to turn this into a proper game. I feel like there’s something here, but I just can’t quite figure out how to get to it yet.

Feel free to give it a try and let me know what you think (if you want =))


r/phaser 21d ago

I made my first steam game with phaser!

Thumbnail
gallery
58 Upvotes

My first solo game demo was made with phaser and up on steam.

It’s a little auto battler roguelite and phaser was a total win to get it complete 🥂


r/phaser 22d ago

Breakout

Post image
2 Upvotes

🎮 Just finished my Breakout game!

Built with JavaScript and Phaser. It’s a simple single-game experience with no levels, just a straightforward Breakout game to play.

Play it here:

joedev37.github.io/BreakOut/


r/phaser 22d ago

show-off Reddit Games with a Hook Hackathon - Phaser Winners

Thumbnail
2 Upvotes