I've been using Phaser 3 for a couple of months now, and I'm really enjoying it, but sometimes it makes shake my head 'why?' , only not in a 'bad way', making games is weird, js itself is weird, so it's only logical that Phaser, a game engine js-based... is weird. That's why I opted for the following way to address this review, I'm gonna be giving you something that I liked, next to why/how it was weird, in what's gonna be my attempt to look impartial. But first...
Disclaimer: This is just an opinion, it's my personal experience with the product in what hasn't even been that much time, Phaser is a product that is not only free and works, it has an active community and if you're looking to build a game using js only, this is a solid choice.
I might not need the disclaimer, but I've been in 'The internets' before, and I'm not risking it, so, let's begin.
I've always been a visual learner, and I'm used to googling for examples online of what I'm doing, what I'm not used to is the 1800+ examples in the main site, paired with the docs, the only thing you need to do is read the docs, try it out on my local sandbox and if something is not working just jump into the examples and compare what I'm trying to do with the code online, and debug (not to mention life itself) just became easy again.
The best case I remember is me trying to use collision filters from matterjs, but failing and not really knowing why. It wasn't until I saw an example where they were using '0x0001' and '0x0008' as ids for the filters, while I was using '0x0001' and '0x0002', looks like (for some reason) if the ids are too close they just don't work.
I mean, I know they are examples, and their entire propose is to show how a specific thing is implemented, but some examples are just wild.
Let's say you want to show how to loop a background, maybe you can use a space tiled background sprite or a Hanna-barbera-like background, but someone... somewhere... said: 'no chief, that's not what games are about, let's make an Albert Einstein looping in the background, with Mario's life mushrooms looping on the foreground, that'll teach them'.
And others just look like from a bygone era, like they were ripped from my memories playing flash games in the computer labs from high school back in 2006.
Phaser has 10 trillion ways to do each individual thing, and I love it, you can use es6+webpack, you can use a CDN, you can write in typescript, you can export it as an android game, you can export it as a Facebook instant game (whatever that is). Internally you can choose between 3 physic systems, you can create an element and later add the physics to it, you can create the items from a factory, or directly from the matter world, you can even create DOM elements, if you're feeling frisky 😉, and then use it in your game. Options are always welcome, and phaser has a lot.
Let's take the physics system as an example, Phaser has 3 physics engines, Arcade, Impact, and Matter, but is not too clear, to me at least, when and why to use each, I found and explanation of what they do and excel at:
Still kinda blurry, but It's a good guideline to what I may want to consider before choosing, the only caveat, It's wasn't on the facer docs or main site, it was in an external forum, which leads me to the next point.
In the end this might also have more to do with the nature of js, or even programming itself, than Phaser, I just noted it a lot in Phaser.
Through my adventure trying to learn Phaser, as with every other framework I'm sure, there's a point where asking someone who had the same issue as you is the best option, and the phaser community came through every time, there are video tutorials, discords, people commenting about it, people making plugins, you name it. The last framework I learn was Rails, and there were some 'most recent answers' from 2009, so It feels great to have contemporary coders dealing with the same problems as I do.
Again, I feel the need to clarify this is not a complain, but most of the community I saw was from youtube and the html5gamedevs forums, I know a lot of the time most communities are on 3rd party sites like stack overflow, but something just doesn't ring right to me when the official forums from the main site look empty, It gives me the feeling that the project is less successful than it actually might be.
Imagine you have a new redesign of the combustion engine (bare with me, I'm going somewhere), It looks awesome, It might be able to change how we see cars in the future, but for some reason, no one is talking about it in your inhouse reveal of the product, they do it in the house of Mike, the town's cool guy. I mean, awesome, they are talking about it, that's good, but why are they over there and not in your own event?. It just feels weird, that's all I'm saying.
Before Phaser, I was using P5 to make my games with js, and I know there's also a plugin on Unity to export games as a web version, Is just that Phaser was fully created to specifically make web games and It shows, just recently was announced the 4th version of phaser and looks like Facebook Gamming is involved somehow.
That's some really interesting information, they're involvement make Phaser, at least in my opinion, more reliable long-term, I know if I put in the time to learn how to make games on this framework is not gonna be abandoned anytime soon.
There's nothing bad or weird about this one. I hope to see more games on phaser while I keep learning about it.
Just to finish, and because I didn't find where to place these ones:
Thank you for your time, and have a nice coding :D. Also, I'm not being paid by anyone to say any of this, I liked Phaser and that's it, I think it's pretty obvious, but I better make it completely clear.