The whole games development has been a wild ride so far, we spent 9 months learning it without bringing out any game. We threw away a lot of prototypes though. Our background is in open source and server side stuff, so we needed to let go of a lot of concepts to be efficient.
Research-wise we did a whole lot of reading and a bunch of work building games we threw away. Here's what we found and I can share publicly:
- Unreal Engine: pain and suffering for awesome results. You must love debugging. You get source code access to help with that. Have a Rider subscription to lessen the pain of C++. (I'm not joking.) Loves to crash a LOT, but at least you get a stack trace. C++ has garbage collection here, which is neat. Did I mention to get Rider? Not web friendly though.
- Unity: works, relatively easy to get good results, lots of tutorials, but no source code access unless you fork out a lot of cash up front. Didn't crash on us.
- Godot: Free, open source, easy to start, stupidly hard to master. Needs a lot of fine tuning to make look good. Random weird bugs pop up with no stack trace. Has a custom DSL called GDScript which has some weiiiiird design decisions. (E.g. a Vector2 is not an object, but a data type.) GDExtension takes some experience to set up. I like C++ with UE a lot more.
- Phaser: It's a toy, lacks too much to do anything serious with. Love it though. Might be wrong on this one, only built one small game.
- BabylonJS: Built our website with it (see my bio), sturdy workhorse but you need to optimize your stuff a lot beforehand. Love it. Forums/community are awesome.
The ones we didn't test:
- Three.js: didn't try, but the API is apparently not very stable.
- Bevy: The community is very small, lots of parts seem to be still missing to build larger stuff. Didn't try it out in the end.
- OGRE3D: Couldn't get it to build, but it looks very robust. Would love to try again some day.
- PyGame: Good to learn the basics, but like Phaser, it seems to lack a lot to build more serious projects with it.
Keep in mind, opinions can be very subjective, it can be very hit and miss. We had fans of either comment on our YouTube videos and we have a feeling that getting into game engine discussions is similar to JS framework discussions.
One thing we learned for ourselves though, since we are trying to make money: stop wasting time. There are 20 year olds out there who release on Steam for a chance to become successful while we spent lots of months learning stuff. Technical prowess does not a good game make. It's all about the gameplay and the vibes.
Regarding Steam being a sit-down thing: both my wife and son love the Steam Deck and they often jump into a few short rounds of something. (Brotato is pretty good for that.) It is what you make of it, but the audience does seem to expect a gameplay loop that works over longer periods of time indeed
Research-wise we did a whole lot of reading and a bunch of work building games we threw away. Here's what we found and I can share publicly:
- Unreal Engine: pain and suffering for awesome results. You must love debugging. You get source code access to help with that. Have a Rider subscription to lessen the pain of C++. (I'm not joking.) Loves to crash a LOT, but at least you get a stack trace. C++ has garbage collection here, which is neat. Did I mention to get Rider? Not web friendly though.
- Unity: works, relatively easy to get good results, lots of tutorials, but no source code access unless you fork out a lot of cash up front. Didn't crash on us.
- Godot: Free, open source, easy to start, stupidly hard to master. Needs a lot of fine tuning to make look good. Random weird bugs pop up with no stack trace. Has a custom DSL called GDScript which has some weiiiiird design decisions. (E.g. a Vector2 is not an object, but a data type.) GDExtension takes some experience to set up. I like C++ with UE a lot more.
- Phaser: It's a toy, lacks too much to do anything serious with. Love it though. Might be wrong on this one, only built one small game.
- BabylonJS: Built our website with it (see my bio), sturdy workhorse but you need to optimize your stuff a lot beforehand. Love it. Forums/community are awesome.
The ones we didn't test:
- Three.js: didn't try, but the API is apparently not very stable.
- Bevy: The community is very small, lots of parts seem to be still missing to build larger stuff. Didn't try it out in the end.
- OGRE3D: Couldn't get it to build, but it looks very robust. Would love to try again some day.
- PyGame: Good to learn the basics, but like Phaser, it seems to lack a lot to build more serious projects with it.
Keep in mind, opinions can be very subjective, it can be very hit and miss. We had fans of either comment on our YouTube videos and we have a feeling that getting into game engine discussions is similar to JS framework discussions.
One thing we learned for ourselves though, since we are trying to make money: stop wasting time. There are 20 year olds out there who release on Steam for a chance to become successful while we spent lots of months learning stuff. Technical prowess does not a good game make. It's all about the gameplay and the vibes.
Regarding Steam being a sit-down thing: both my wife and son love the Steam Deck and they often jump into a few short rounds of something. (Brotato is pretty good for that.) It is what you make of it, but the audience does seem to expect a gameplay loop that works over longer periods of time indeed
I hope this helps. ;)