3 ms·
I didn't try to build anything with Phaser, but I evaluated it a bit when trying to pick a game engine for a 2D web game. The tech didn't impress me that much,
by SeanAnderson 3y ago
I didn't try to build anything with Phaser, but I evaluated it a bit when trying to pick a game engine for a 2D web game.
The tech didn't impress me that much, but it also seemed like the most mature 2D game engine available in JS.
Notably, Phaser 4 was announced ~four years ago and was an attempt to get the project written natively in TypeScript. It looks pretty dead in the water - https://github.com/phaserjs/phaser https://github.com/phaserjs/phaser and having a "best effort" TypeScript experience layered onto Phaser 3 via DefinitelyTyped didn't excite me.
Additionally, with browsers gaining support for WebGPU, I expect any game engine worth their snuff to begin rapidly adopting support for WebGPU. As best I can tell, any hope of Phaser supporting WebGPU is lumped into Phaser 4, so... not much to say there.
Overall, it was a little tough for me to tell if I was being overly critical and viewing a mature product as a ghost town, but that's the impression I took away from it.
As far as I can tell, BabylonJS is king in town for a TypeScript game engine, but its focus is 3D experiences. I didn't find an especially compelling 2D game engine. I ended up making a prototype using React + PixiJS + React-Pixi, but that was hardly an engine and had significant performance issues due to React's reconciler and GC.
Now I am building in Rust -> WASM with Bevy (https://github.com/MeoMix/symbiants https://github.com/MeoMix/symbiants). It's slow going, creating UI elements sucks right now, but the underlying tech is super solid and I feel good about what I write and what I learn even if I'm dismayed at the pace in which I am creating.
Realistically, if I started over, I would likely take my prototype as far as I could with PixiJS or Phaser. I'd write non-idiomatic TypeScript to appease GC and would avoid asking too much of React when working with <canvas />. Once I had a functioning game I'd consider rewriting it in a more performant language. It's been challenging to be 100% supportive of writing in Rust due to how much slower iterations are compared to JS/TS.