Hacker News new | past | comments | ask | show | jobs | submit login
Free and open source 2D and 3D game engine (godotengine.org)
231 points by modinfo on March 10, 2022 | hide | past | favorite | 52 comments



I really like Godot and I've been working on a small 3D game project using it. I'm not biased towards any game engine but whenever I attempted to learn Unity I'd find something that put me off which demotivated me. The UI, for example, is a huge turn off, I think it's straight up ugly and a poor user experience. The engine also doesn't get the best support on Linux (at least it didn't when I tried it last).

So while I find Godot a little more constrained than Unity I much prefer it. The UI is better (although I wouldn't call it perfect by any means) and it's very easy to work with on a small project with it. Once I got familiar with the key concepts of the engine like Scenes I didn't find myself reaching for documentation or tutorials as much compared to Unity.

That said, the community for Unity is massive in comparison. If you have a very specific problem or want to implement something niche into your game you'll find a Unity example for it much more often than in Godot.


First class Linux support is what initially drew me to Godot. I still use Windows, but I'm trying to cut away as much as I can that ties me to it, and Unity was the biggest of the lot.


I find the Unity UI very convenient and simple (compared to Unreal), and I develop on Linux, for Linux without a hitch.


What is your setup? Because I'm using Fedora and installed Unity because I was curious and deleted it after having problems (I don't remember the error though).


Used it on Ubuntu and Mint, 18 & 19.

Installed via Unity Hub downloaded as an appimage.

I can't find the download link apart for this one - https://forum.unity.com/threads/unity-hub-v-1-0-0-is-now-ava...


> (compared to Unreal)

Well, I don't think a lot of people is going to dispute that ;]


I didn't mind the result when I would actually build things but getting to that result in Godot was utterly obtuse.


Currently working in Godot for the first time for this year's 7DRL [1]. Compared to previous years in which we rolled our own everything in PureScript, it's crazy productive and a mostly pleasant experience. First class Linux support is magical. My teammate and I are developing cross-platform on Linux and Mac, and I have had zero problems on PopOS. (My teammate on Mac, however, has had to restart the Godot editor a bunch, as it does not seem to play as nicely with Git on that platform.)

My complaints would be that gdscript can be unintuitive and just plain janky. There's a lot of wrestling with internode communications. Signals are super clunky to use. We've been using this ad hoc mish mash of signals, inheritance, and preloads (think #include). I wouldn't take our approach for any real project, but it's good enough for a hackathon.

[1] 7 Day Roguelike https://7drl.com/


Right, it's signals and the whole communication process between nodes that's the issue, and the only thing in Godot that causes me to pull my hair out.

So much in Godot falls magically into place when you try, and then you have to send a piece of info from one object to another, and the official standard methods to do so look like an outrageous clunky hack.


Fun fact: Godot is used by Tesla for their car visualization (including autopilot) in both the mobile apps and the in-car displays.


Does Tesla contribute everything back?

I see that Godot is MIT license, which unfortunately means that while it's great to see major companies using it, they're not legally compelled to upstream any changes they might be making in the engine for their uses.


Does it need to? Also what would Tesla contribute back, considering they're not actually in the gaming business?


No, it doesn't need to, that's part of my lament about using a permissive MIT license rather than a GPL one.

> Also what would Tesla contribute back, considering they're not actually in the gaming business?

If they use Godot completely out-of-the-box with no customization, then nothing. But the parent commented noted that they use it for their car visualization. If they made an internal fork to add in some performance tweaks, that would be the kind of thing that would benefit the community as a whole if it's upstreamed.

And maybe Godot decides those changes actually aren't useful to anyone else and disregards them. But they might be, and that's the key.


It was rhetorical. Anyhow I'm happy it's MIT it makes selling proprietary apps more straightforward. And the Godot foundation has plenty of sponsors to keep the main devs happy anyway.

I also heard the main "tweak" in Tesla's code is they basically just use the renderer on its own versus all the game engine features.


Funding donations


This really is a fun fact, haha! I love hearing practical use cases for game engines.


The Godot editor itself is made with Godot, which is cool. Everything you see in the UI there is available for use in your own projects.


Another fun fact, wow.

That makes expanding its capabilities much more accessible I suppose. If someone goes to the trouble of adding some new functionality, they can use that same knowledge/stack to add a handy UI to the functionality so it's more usable by everyone.


Still very much looking forward to Godot 4, and unless I find a framework I really like will probably stick with it, but I've been a bit down on Godot recently (been using it for just over 2 years now I think), largely in its handling of custom resources and the fact that they aren't really first class citizens and have some odd limitations. That and Godots limitations with 3D, though at least I was well aware of them beforehand.

Though if you're new to Godot or haven't used it, I'd still highly recommend it as a game engine. I tried going back to Unity a few months ago and didn't last a week (despite the fact I prefer c# to GDscript). As for Unreal, if you're an artist its probably great, but as a programmer the several times I've tried it, it didn't feel like its for me.


You've used c# in Godot, yes? It has full support now and a (slight) performance boost over GDScript.


I have in the past but didn't find it supported as well as GDScript. Maybe things are better now.

Also there was something about Mono needing to be installed on the end users machine which didnt sound ideal, but probably worth looking into again


Mono does still need to be installed, which may be a deal breaker. That hasn't changed =/


Here are some thoughts in regards to Godot vs Unity vs jMonkeyEngine (another project i like).

Godot:

  - completely free and open source, it actually seems viable long term because it has a pretty active community and lots of contributors, which is honestly pretty important
  - the best aspect in my eyes is the fact that it can be installed as a single binary and runs really quickly, none of the bloat of needing complex installers and dozens of packages like Unity does
  - the language choice is also pretty interesting, their GDScript language being a bit like Python and being integrated pretty well with the engine, as well as other builds support C# and thus switching from Unity is easier (and C# is just a really nice language); there are community bindings or the ability to use C++, but i find those to be less viable, given the lack of ease of use and documentation
  - that said, in most cases i'd opt for C#, not just because of its performance being better, but GDScript lacking certain functionality to be able to use design patterns, for example singletons or service patterns or anything else that attempts to centralize bits of game logic into manager classes versus having everything be some distributed mess of interdependent game objects/scripts
  - the tools and functionality that is included is pretty good, however there are some things that are lacking, like a terrain system or dynamic render resolution, though thankfully there are community plugins which address the most severe of these shortcomings
  - that said, there is not even 1% of the assets that you'd get in other game engines like Unity or packages, because Godot hasn't really figured out the financial incentives and having a marketplace yet - it's great that you can get a variety of free assets, but as a content creator you might not want to expect Godot to be a viable financial venture yet
  - currently version 4 is in development, which adds Vulkan support and numerous other quality of life improvements (like automatic LODs), however 3 is also actively supported and functionality is occasionally backported
  - also, the asset formats and other imported files (apart from binary data) can be easily versioned with regular Git installs, maybe with LFS for assets if you want
  - overall, it's a pretty nice project and one of the few ones that i'd call "production ready"
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:

  - wins in regards to job positions available, hands down
  - 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
  - the documentation is pretty good, there is an absolutely staggering amount of quality tutorials and even written guides out there as well
  - the amount of both free and paid assets is absolutely amazing, you can solve most programmatic and other problems quickly (need splines? pathing solutions? dynamic LOD? billboarding for objects far away? or maybe models? what about shaders? all of those and more are covered)
  - personally, i also think that the GameObject system with components is really nice - you can attach numerous different behaviors to any object that you want (composition) vs needing to either work with inheritance in Godot by extending scripts or having child nodes affect the behavior of parent nodes (which feels odd, maybe i'm just used to how Unity works)
  - the performance for exported games is really good, all of the built in rendering solutions are performant and have been tested really widely in the industry
  - speaking of tested, it's also been used for a really wide variety of platforms and has support for lots of input devices etc.
  - 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
  - the build in rendering solutions are problematic (built in render pipeline, Universal Render Pipeline (URP) and High Definition Render Pipeline (HDRP)), since many of the assets clash, projects need to be converted if you ever switch, external assets might not be compatible, shaders break etc.; a demo scene from 2019 had most materials be pink and became invisible after reimport
  - the editor has gotten way worse performance wise, a scene with about 1000 assets takes a minute to load and display (wanted a scene with every asset i have displayed side by side for scale comparison), editing scripts and switching to editor lags noticeably, moving stuff around is slow, just horrible performance on a vaguely modern hardware setup
  - the situation of the engine and its parts is an utter mess altogether: they have multiple UI solutions, multiple input solutions, no workable multiplayer solutions (they deprecated what they had, replacements are not ready yet)
  - because of all of the above i've since moved from Unity to Godot, the engine feels like some mess of trying to add new flashy features without properly testing them before release while at the same time having most of the legacy stuff stick around except for when they pull the rug out from under your feet and break something
  - also, its integration with Git isn't too good
Suggestion of some Unity videos - Sebastian Lague: https://www.youtube.com/c/SebastianLague/videos (more about getting things done with the engine)

jMonkeyEngine:

  - just suggesting this because i like the project but it's also an example of what not to do
  - being able to write games in Java is actually a pretty good idea and works decently in practice, regardless of what others say
  - being able to export a cross platform .jar file and run it almost anywhere with a JDK/JRE is also really nice in regards to portability
  - the engine being free and having vaguely passable docs and some extensions (similarly lacking like Godot's though) is also okay
  - it does fail in regards to UI/UX, though, since not having a user friendly visual editor is one of the larger mistakes that you can make
  - also, while code-heavy engines definitely have their place, some of the integrated solutions, e.g. the UI ones are a bit of a mess and the docs were incomplete last i checked
  - the graphics capabilities are also a bit limited and it seems that the engine never really got off the ground that well
  - that said, i wish the engine would become more popular and would find its niche with passionate supporters, though thankfully it's at least more stable than both Godot and Unity are, so there's that
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!


> it does fail in regards to UI/UX, though, since not having a user friendly visual editor is one of the larger mistakes that you can make

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.

[0] http://www.gamebryo.com/screenshots.php


> 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.

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.


> 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.

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).


> personally, i also think that the GameObject system with components is really nice - you can attach numerous different behaviors to any object that you want (composition) vs needing to either work with inheritance in Godot by extending scripts or having child nodes affect the behavior of parent nodes (which feels odd, maybe i'm just used to how Unity works)

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.


> because Godot hasn't really figured out the financial incentives and having a marketplace yet

I kind of feel this is a feature. It’s one of those few projects that actually got somewhere as a labor of love.


One has to admire that!

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)


While I agree that Java is much better than most people think, it's not an alternative on low power systems for clientside work.

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!


Great summary.

You can certainly have Singletons in Godot using GDScript [1].

[1] https://docs.godotengine.org/en/stable/tutorials/scripting/s...


> You can certainly have Singletons in Godot using GDScript [1].

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!


Hi KronisLV, I am thinking of learning game programming and teaching some kids the same. I realize that publishing the game on consoles like PS4 or making it available on Mac, or Android, Iphone is the _end_ that we will like to see with this adventure.

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.


> Would Godot engine help me publish games in all the platforms? Or would Unity / Unreal are more suitable for that?

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.


There's a company run by one of the Godot devs that offers console porting services. Keep in mind console specific code is protected by NDAs plus you need to have a devkit. Godot definitely CAN be ported to consoles, that code just can't be open source nor freely distributed.


With your summary in mind, would you say in 2022 one should start with Godot instead of Unity to learn the basics of game dev? Godot to me seems "tidier"


Personally, i'd suggest that you try out a variety of engines and use whatever is the most comfortable for you, given your background (for example, C++ devs might go with Unreal instead of the other options).

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.


Comparing jMonkeyEngine to Godot and Unity is really comparing an apple with two oranges...


Shameless plug. If someone interested in seeing actual commercial game using Godot you can check out the demo and add Dwarven Skykeep to wishlist:

https://store.steampowered.com/app/1076120/Dwarven_Skykeep/

It's pixel art chaos management game with extremely complex gameplay. We're several years in development by small team of 10. Even funded by a publisher now.


I wish it was written in simple C89 with benign bits of c99/c11 (high level languages would call the engine API using their ABI generic interface, for instance ctype with python).

That said, builds of game binaries is challenging for linux based OSes to maximize compatibility among distros and in time (pure ELF64, all distributed binaries are "libdl-ized", pthread TLS and not ELF symbol tls, etc). It is probably very similar to what must be done on other OSes.


> I wish it was written in simple C89 with benign bits of c99/c11

Seems like an awful lot of work for no real gain.


Seems cool, but I never learned it because from what I've read it was always overshadowed by Unity. Is this the case anymore?


We are building a VR fitness game [1] with Godot and are working towards a store release in the Meta store. Also Meta is funding part of the VR development of the Engine. The problem is that Unity is so prevalent at the moment that it's hard to convince people to work with you if you are not using it, but traction of Godot is growing and the things that are coming will make it even more attractive for developers to break out of the Unity monopoly.

[1] https://xrworkout.io


Probably. I never learned unity either, when I was younger I used to build games in C with allegro and the transition to gui based development always just seemed so much harder to learn (or at least harder for me to get interested in, with allegro it was all code and I could iterate from drawing a window, adding a square, move around with keys, etc.)


The upcoming version Godot 4.0 is on par with Unity, with several 2D and 3D subsystems (physics engine, lighting, 2d grid...) being rebuilt in full. It's getting traction in terms of tutorials and courses [1], and several publishers paying attention (e.g. Valve making sure that the Steam Deck will be supported).

[1] For example https://www.kickstarter.com/projects/gdquest/learn-to-code-f..., an already financed Kickstarter to build an open source course and companion app.


Unity has many more features, a much wider community to look for answers to issues you come across, supports consoles out of the box, and has an enormous asset store which can save time.

That said, I prefer Godot.

Firstly because it's free and open source. That's a big deal to me, though I get it's not a priority for most people. I've contributed to the Godot source, and frequently compile my own custom builds with new C++ modules or experimental edits to the code (which is relatively straightforward, even for someone like me who hasn't touched C++ in about 15 years).

It's also a lot quicker and more self contained than Unity, which takes forever to open a project, forever to compile your scripts. Godot is lightning quick by comparison, even when using C#.

Unity has more mature and polished features, but it also has a lot of redundancy, for every feature you have 2 or 3 options of "legacy" or "experimental" versions of that feature, and it's often unclear which is the best choice, having to navigate through a huge list of packages, and googling for blog posts and documentation about things but being unsure which "version" of a feature is being referring to.

The asset store in Unity might be huge, but not all of it is high quality, and often expensive. You might pay a chunk (not huge, but not pocket change) for some system or framework that looks ideal on the marketing page, only to find that whoever wrote the scripts weren't really thinking about flexibility for your use case, and wastes time that you were supposed to be saving by paying for it. Godot's asset library is much smaller and mostly confined to scripts and tools, rather than models and textures, though there is some of that.

Godot has the same issues any MIT, volunteer-led open source project has: incomplete features with weird UX, features that get bumped back months or years because the dev who was working on it in their free time no longer has that free time, lack of real b2b level support for a commercial project. But for me as a solo, indie game dev, it's kind of freeing to be a part of that and to get involved in the community and the engine internals in a way that Unity gives you no access to. Ok, I can't ring up a case manager for my account and get an answer about this or that Godot feature, I can go on Discord or Github and maybe get an answer if the right person is looking, but more importantly I can just go straight into the source code and understand it for myself, and even tweak and fix it in a way that is truly free.

I've also found that once you get used to some of the UI/UX jank in Godot, the design philosophy of how things are structured conceptually is insanely productive. Unity is a hot mess of menus and panes, loading bars and modals, prefabs and components. Godot just gets out of your way - in part because it has fewer features, but I've yet to find something I wanted to do where I couldn't do it - just sometimes it takes a bit of creativity with the tools and API.


In terms of features, for me it feels like a lot of core features in Godot are assets that you have to add to Unity.

My best example are Tweens. I would expect this to be a very core feature of a game engine and yet in Unity you have to rely on something like dotween.

Also the Animation system in Godot is super awesome. If you are coming from Blender it's basically no learning curve at all. Again a feature that I would exepect to be a core of a game engine.


Oh yeah, AnimationPlayer/AnimationTree is definitely a killer feature for Godot, though the UX can be a bit clunky. The ability to call arbitrary functions on things in the scene tree on an animation track is just, chefs kiss


Looks like the new demo to be revealed at GDC 2022 Mar 21-25 ;)

GDC is back this year. I was checking out the sessions, and it's pretty much everything state of the art: google on language model games, ms flight sim terrain proc gen, cyberpunk 2077 lighting night city, space station 13, and the diablo 2 resurrection!


[deleted]


Learning game engines is a rather broad subject. Godot is as good a starting point as any. They have good tutorials on the website and you can find tutorials for pretty much any type of game on youtube.


When I was trying to dabble in game development, by far the hardest part of getting started for me was deciding on an engine to use. Godot was one of the top contenders for sure


I am only worried about one thing, that is, if I now learn Godot, then one day, Unity or Unreal open sourced their engines, will this be destructive for us?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: