Keep in mind that for some of these projects having a visual editor might be outside of their scope - these are often "engine frameworks" (or as i like to call them "engine engines" :-P) for making your own engine and tools rather than complete turnkey solutions by themselves like Unreal or Unity. This approach gives more freedom to the developers but at the cost of having to make their own tools (though they still take care of the low level plumbing bits). The idea with those isn't to make a generic catch-all toolset like Unreal/Unity, but something that is specific to the project at hand. Note that sometimes they do offer some tools but they tend to be separate projects that use the framework like "your" tools would do rather than being part of the engine itself like in Unreal/Unity.
There are a bunch of those, though they are not as high profile as Unreal and Unity - two commercial ones you'll most likely have heard of would be Gamebryo[0] and RenderWare, though the former is nowadays mostly limping along and the latter was been shut down years ago after EA acquired them.
I think Sony's PhyreEngine is/was something like that but i'm not 100% certain as that is only via hearsay and not something i've seen myself.
That's a fair point! Though jMonkeyEngine actually uses LWJGL so i guess at this point we're talking about "engine engine engines". Of course, there is certainly merit to a layered and modular approach like that!
> This approach gives more freedom to the developers but at the cost of having to make their own tools (though they still take care of the low level plumbing bits).
This is excellent for when you have the time and resources (and the desire/motivation/discipline) to make your own tooling and end up with something bespoke, that fits your needs/project well.
But it's a non-starter for those who just want a usable package with batteries included, which i'd argue is the majority of the users and therefore will impact the popularity of the project negatively.
That said, for an interesting set of videos on someone who's developing their own engine, have a look at Randy's channel: https://www.youtube.com/c/RandallThomas/videos
It's interesting to behold and is probably quite the learning experience, though i'm not sure whether Randy's game will come out first, or whether GNU Hurd will beat him to it.
Well, yeah, i think the popularity of Unity even at its earlier versions over -say- Irrlicht is a testament to that despite the latter containing pretty much everything one might need for a 3D game :-P.
But my point is that popularity here can be a red herring because frameworks like that never set out to provide the same solutions as Unreal/Unity and for someone who is looking for a framework to build on or use as opposed to an all-in-one solution like Unreal/Unity, the latter's popularity wont matter much (and there are such people - it is not uncommon to see developers who say that, e.g., they'd like Unity if they could use it as a library).
Component system is terrible. You only use it to reference Unity built-in components(text, animation, position etc).
> - the support for C# is top notch, IDEs also have nice plugins, e.g. JetBrains Rider tells me which methods are likely to be slow and gives me other hints which is really great
Rider thinks that every method is slow. The hints are useless.
> - all of that said, it feels like the engine has made a steep nose dive in the last 5 years, DOTS (their new ECS) is being implemented gradually and oftentimes still isn't as stable as it could be
As someone who works with Unity every day for the last 11 years now - No! During the last 5 years a lot of new stuff got added. I was seriously not expecting so much to be done given how slow the development was all the way from version 3. I agree that currently it is a bit of a mess with the new UI framework still being in preview and the old one being terrible. I agree that it sucks that there is no networking solution out of the box(there are several good ones out there tho). But I absolutely don't agree that Unity is in a slow decline. I see it getting better with every release and accelerating while doing so.
I kind of feel this is a feature. Itβs one of those few projects that actually got somewhere as a labor of love.
However, at the same time a lack of earning opportunities will prevent a lot of people from participating and creating content for it: be it content creators who'd provide turnkey solutions for non-trivial mechanics and engine extensions, asset creators who'd allow the less artistically inclined developers to plug their skill gaps with those or even ad solutions for monetization of freemium games or ad supported games.
(i don't necessarily support the latter, but that probably matters to some)
Try running Java Minecraft on a Raspberry 4 and you understand how.
The why is complicated but the solution is to run Java on the server and C+ on the client... I'm still debating internally if I should port J2ME for scripting my 3D action MMO system but so far it is hot-deployed C with .dll/.so!
You can certainly have Singletons in Godot using GDScript [1].
[1] https://docs.godotengine.org/en/stable/tutorials/scripting/s...
That is somewhat true in that you can get most of the way there with some pitfalls, from the documentation:
> Act like a singleton, since GDScript does not support global variables by design.
(of course, it's their language so they can design it however they wish)The note sheds more light on how it works:
> Godot won't make an AutoLoad a "true" singleton as per the singleton design pattern. It may still be instanced more than once by the user if desired.
It's still nice that they added the AutoLoad section with the ability to use the checkbox to enable referencing your variables with the class name qualifier vs having to get the singleton node first. Truthfully, it should cover most use cases out there with no issues.Also, Godot's docs are actually improving at a pretty nice rate!
Would Godot engine help me publish games in all the platforms? Or would Unity / Unreal are more suitable for that?
Thanks for this comparison, it helped with some perspective.
Unity platform support: https://unity.com/solutions/multiplatform
About PlayStation in particular (you will need a license): https://support.unity.com/hc/en-us/articles/212064606-How-do...
About Xbox in particular (you will need a license): https://support.unity.com/hc/en-us/articles/115005327866-How...
Other consoles are actually a lot like that too, though you should have no problems on mobile/desktop/web platforms with Unity.
Godot platform support: https://docs.godotengine.org/en/stable/tutorials/export/inde...
Should be similarly easy for mobile/desktop/web platforms.
For consoles you'll probably want to get in touch with the companies that could help you with exporting to consoles: https://docs.godotengine.org/en/stable/tutorials/platform/co...
Unreal platform support: https://docs.unrealengine.com/4.27/en-US/SharingAndReleasing...
Similar story to the above (that one link should be enough).
In summary, i'd suggest that you don't bother with consoles, because those take a lot of time and effort to export anything to. Other platforms should be easier to work with in all of the engines, desktop/web probably being the best bet.
For me, if i wanted to learn game development and do so in a pretty easy fashion, i'd most likely go with: Godot + GDScript, since those two are integrated rather well and are easy to pick up and learn. I'd suggest that you stick with the Godot 3.X.Y stable releases for the time being, though, since Godot 4 is still in development and is subject to changes.
It can definitely also lead to shippable products with not too many issues along the way (apart from the asset store being small), though currently Godot is definitely more capable for 2D games than it is for 3D games (if you ever want advanced graphics, you might have to wait for Godot 4).
Of course, if you're learning game development in hopes of getting a job in the industry, then you should most certainly go with Unity due to its popularity.
Godot:
Suggestion of some Godot videos - GDQuest channel: https://www.youtube.com/c/Gdquest/videos (they have a site as well: https://www.gdquest.com/)Unity:
Suggestion of some Unity videos - Sebastian Lague: https://www.youtube.com/c/SebastianLague/videos (more about getting things done with the engine)jMonkeyEngine:
Link to their OpenCollective, to illustrate my point of why you might need a following: https://opencollective.com/jmonkeyengine (contrast that to Godot's budget, which is shown on their site)In summary, i think that Godot has gained the critical following that it needs to be viable for game development and other pursuits (e.g. tool creation) long term.
Unity will keep to being in slow decline until they'll hopefully get their stuff together down the road yet will also be a dependable workhorse for the industry in a professional capacity. I guess you could also mention Unreal in this niche, albeit it's a tad different (better suited for a particular type of game, a bit harder to code in but also capable of really good graphics).
jMonkey engines and other projects like it (e.g. Xenko/Stride) will pop up occasionally but without Godot's following they might survive at best while having one or two nice innovations or features that set them apart and make them decent for some use cases.
Overall, one has to admire that they can get started with game development at almost no expense, since lots of other tools like Blender and GIMP are also free!