+21 votes

Hey guys, so I'm thinking of making my 1st game, a very small project of course.
And I'm getting the stuffs (programs needed) ready for it
However, I'm at a fork rn, between Godot and Unity

Unity is of course this big and famous engine n that's cool, tho I got a soft spot for hidden gems aka, Godot.
I know, what a weeb right?

I see a lot pointing towards Unity and kinda want to hear more about Godot
Something pulling me towards Godot is that of the very minimal amount of code I know, it is Python. Apparently its quite close to GDscript

I'm planning on using:
FL Studios
Audacity
G.I.M.P
for making this little project
As far as I know, they go great with Unity, how about Godot?

My project is going to be something small, as recommended for it being my 1st game.
Probably a left to right 2D game, collecting "coins" to go to the next lvl/stage.
Then if I get the hang of it, add some enemies who on contact either kill you or dmg you.
And well, just continue improving the game (attacks, "coins" for enemy deaths, projectiles, etc).
But its definitely going to start with just movement and "coins" as my goal.

And of course, as the title entails. What are some things that Godot offers as advantages over Unity (and vise versa)?
I'm on the fence about 3D since from the research, it's not exactly Godots strong point, then again, said resource is from 2018. It's probably something I won't play with until I become more familiar with making games in general.
Even so, I would still like to hear about it as well.
Thanks.

in Engine by (31 points)

Went onto Godot's discord server and was told something along the lines of Godot being the better option when wanting to start small and then improve on the project later as opposed to Unity
Idk if this means that it's just easier on Godot vs Unity because of how the game is made on the engine
But more insight on this would be much appreciated.

Godot's got open source licensing an of said

13 Answers

+2 votes

Just to begin, a small thing that I miss when not in Godot-land is that you can access parts of a vector directly (position.x += 10) you do not need to create a temporary vector that you update and then at the end sync to the vector you actually wanted to change. (Might just be a c# thing but still)

by (911 points)

Depends how you look at it. It's an important code design choice of reference vs. value types. Unity (and other engines) consciously chose not to make Vectors a reference type because you want the engine to be able to know when your i.e. position or velocity is being updated. If you can access the member variables directly the engine can't directly respond to those changes. This can altogether yield a (slight) performance benefit.

It's entirely to do with value vs reference type. If said property is a Vector, which is a value type, you can only change it in two ways:
1. By assigning a new instance to it
2. By calling its methods that will change values - yes, structs can have methods too.
You can't change Value type's property via property though, because when you're accessing it, you're actually dealing with a copy of it (by value).
Of course this has nothing to do with C#, but any language which distinguishes value and reference types, e.g. C/C++ will work like that too.

+3 votes

You can actually just draw a pixel on the screen if you want to. No sprites, shaders or addons required.

by (911 points)

Someone added a new answer so here I am lol
So what's this about making pixel art inside of Godot Engine??

My new project needs art n I'm not sure what style to go with Pixel or Sprites

+6 votes

Try making small games in both. I've used Unity for a few years and quite new to Godot but they're not dissimilar from a user's point of view. Unity is the easier one to start off with and once you're familiar with components, Godot's node system is a no-brainer.

For scripting, Godot has it's own in built script editor and visual script. Unity needs a separate program (monodevelop, visual studio, notepad++) for scripts and unityscript is being scrapped in favour of C#.
(A big advantage with Unity is being able to assign/change variables using the inspector (click and drag, etc) whereas in Godot, variables need to set within the script.) this is wrong, thanks kidscancode for correcting me.
Moreover, the common critique 'Godot can only use one script per node' doesn't mean one script per object, the nodes work more like components than GameObjects, so make as many nodes as you need.

For managing the project such as materials, etc both engines create a project folder, named 'Assets' in Unity and 'res://' in Godot. When creating something like a material, Unity will automatically save it in a folder called 'Materials'. Godot by default will save new materials in with the scene itself, you have save the material from the inspector to save it in the project folder.
When you want to save something like enemies and coins to reuse them, Unity has prefabs which can be placed into the scene. Godot works practically the same but what would be prefabs are also scenes, so you would load the coin scene into the main scene.

Finally the 3D capabilities in later versions of Godot are almost on par with Unity.

by (3,201 points)

A big advantage with Unity is being able to assign/change variables using the inspector (click and drag, etc) whereas in Godot, variables need to set within the script.

This is false. You can use export to expose your variables to the Inspector.

Something worth mention also is that godot is free / open source meaning that any games you end up with are entirely yours with no revenue sharing unlike unity

Unity however has many more tutorial resources for learning for beginners although there are some for godot beginners

I personally find godot to make a lot more sense with it's object structure. I also didn't like unity's networking features.

Try both and follow basic tutorials because any experience is good experience and they are both free to learn. Only you can decide which you prefer in the end :) Your goal of sidescroller with collectible can be made fairly quickly in both engines.

+16 votes

I have recently began a new project using Godot went through the same decision matrix. Ultimately I chose Godot, here are a few reasons that may sway your decision:

  1. Extremely easy to pick up and start learning/developing. There are a ton of new user tutorials available. I recommend looking up some in depth courses on Udemy as well. I have also found the documentation to be clean and easy to read. The community also seems to be very friendly (these forums and the discord are my experience).

  2. GDScript. I have experience with a few languages and GDScript is by far one of the easiest to pick up. You will know the language in a relatively short time compared to some more complex choices out there. My only initial complaint was the use of snake_case vice camelCase. Alas, my fingers have already learned where the blasted underscore is though. If that is a big issue for you, version 3.0 now allows you to use C# if you would like. (I recommend learning one thing at a time though if you don't already know C#, GDScript is much easier to pick up, so learn the engine first, and then dabble in other scripting languages.)

  3. The editor. The editor is a dream come true. Everything is built in and very user-friendly. It's easy to look up answers and search the docs from within the editor. It's clean and user-friendly.

  4. Open-source. The magic behind this being an open-source, community driven project is self explanatory.

There is no doubt this engine has a long future ahead of it. Get on the bandwagon know and grow with it.

by (146 points)

Where can I find these tutorials?
Godot doesn't seem to have a dedicated section for new ppl (besides the one I've found in their docs).

And it wasn't beginner friendly, so many links to bigger more complicated sections of docs, and that's just in the introduction part.
Some words I didn't quite know what to make of.

And it might be due to my learning style of "hands-on" and visual (video pref).
So reading about what a certain function does is great.
But implementing it myself - seeing what it does, editing the actions to get a feel for it etc.

THEN reading about it and all the different ways it's used/extended/connected to VectorArray.canvas_view, x, y, z, [insert link to a page that explains another foreign word (to me at least), that has EVEN MORE LINKS IN IT!] makes it a bit less confusing for me.

I have already done some digging around for a few, but since they seem scarce would be awesome to know of any you might know of.
And if they aren't too game breaking (mind the pun) might have to start looking at tutorials from older builds as well.

While the docs may seem daunting, going through them step by step is very important in your learning. If you don't skip ahead, it will all start to make sense. The documentation on its on is a great resource and has plenty of tutorials in it. Even with your language barrier, I believe you will be okay with the documentation. If you don't understand a word, most browsers will translate or look it up for you.

I also recommend GDQuest for tutorials.

Good luck in your journey.

What are the udemy courses you'd recommend?
Also which discord server are you talking about?
(Sorry I am a latecomer but in actual help)

When I started with Godot it was quite frustrating to learn and it's even worse to hear people say Godot to be easy. It's based on some intelligent, however fancy concepts you might be familiar as a student and they are needed for Godot to work properly. As a layperson, like RudyTheNinja mentioned above, there's much to read before getting started.
Scenes, signals, nodes (and a lot of them!)... most node types use isn't obvious at all.

Most methods in the docs are hardly explained with more than one phrase and the IDE prints out very scarce hints when debugging.

It'd be really nice to have some open projects that are actually games and show using Godot when things get complex (like it'll be the case in a real project). The showcase links to many game sites; but it be really cool to have some kind of community driven game sandbox to share games with each other :)

Holy crud dude this was last century ago xD
This is my new question now
https://godotengine.org/qa/57819/where-else-can-i-ask-about-my-issue

+3 votes

Compared to top engines out there, like Unity and Unreal, Godot is young and rough around the edges. Feature-poor, way too many things have to be built from scratch, in code. Its growing tho, I'm sure one day it will become a mature product. For now it's barebones and sometimes quite buggy. Especially if you're new to it and you don't know what you're doing, catastrophic bugs can happen. Backup your project as often as possible, your Scenes/Scripts can get nuked and there's no undoing a situation like that. Also, I don't like slow languages that are not built for performance, it makes no sense in game development, where performance is crucial. GDScript is not Lua or C#, unfortunately, but for some people it seems to be easy to use..? Lastly, the community is small, so it's really hard to find quality and in-depth tutorials.

OK, what I like about Godot is the minimal design and, of course, the fact that it's free. : ]

by (20 points)

GDScript is not Lua or C#, unfortunately, but for some people it seems to be easy to use..?

It somewhat irks me that there seems to be a bit of snobbery when it comes to coding languages especially with C#. I first learnt unity using unityscript and honestly if C# was the only language available for unity as it is now, 16 y/o me with no coding background would've probably given up and I'd hate to see that happen to other people if Godot was to drop gdscript just because C# is milliseconds faster and/or industry standard.

Also, godot does have a Mono version, so it does have C#

+1 vote

From my experience i love godot. However, the documentation seems a bit lacking compared to other engines like unity. In some cases Godot's performance can be a bit poor compared to other engines like Panda3D. And GDScript is easy to pick up, but as I said the documentation is lacking.

by (25 points)
+3 votes

Refactoring is a weak spot in Godot concerning variable names, resources and scenes. The documentation is really lacking and for me learning Godot has been very frustrating until I really began reading through the Docs (which I strongly recommend)

by (28 points)
+6 votes

Go with Godot. Multiplayer in Godot is easier than Unity, yet, more control. Godot is the best Engineered engine I have seen so far. Every thing in Godot just makes sense. For 2d games, go with Godot for no doubt. It is quite enough to read the "your first game" in Godot docs to start making your game. IMO, what you can do with Unity in 3 days, can be done in Godot in 8 hours. Finally, no loyalty in Godot. Whatever money you earn from your game is yours.

by (42 points)

Thank You, Your Comment helped Me a lot.

i find godot less cumbersome.

This is by far the most accurate answer here. There's a whole "Learn" section on the main page with tons of startup tutorials and explanations. While I love Unreal, Learning Godot was quite easy so far, and I can't complain, it's superbly designed.

0 votes

I tried both Unity and Godot, and I have to say it is easier to make a 2D game with Godot with the 2D specific rendering where pixels are the units. Also the there are only to 2 axis like you would expect and you can easily go pixel perfect. In Unity it is a bit messy if you ask me, with 3 axis and you also have the UI mixed with the scene.

In Godot the files are much more compatible with git or other version control systems.
You can code in C# (faster) or even C++ (even faster) if you want with Godot.

The node and scene system in Godot is much more intuitive than Unity's Assets.

My 2 cents !

by (18 points)
+1 vote

I think it's like "Windows vs Mac OS" or more "Window / Mac OS vs Linux". A question of faith. Unity is a popular game engine, commercial powered. Godot is open source, sponsored by donations etc. You'll find some differences especially when working professional. You should guess it. Do what you want. Try it out. Everything has pros and cons. I worked in both. Unity for a professional project and Godot as a hobbyist. I think you can do something awesome in all engines. It depends on you.

by (22 points)
0 votes

Each one has their pros and cons. I have small experience in both engines, and like both of them. Godot is lightweight, free, and has a lot of cool features, like being able to create things like timers and raycasts in the editor instead of just in code. However, Unity has some really nice features like its navigation system, (which I hope Godot will add someday) and a lot of built in functions that allow you to use a lot less code. Like I said, I like both. Unity probably has the edge, when it comes to 3d games, but Godot might have the edge in 2d games. Its also worth noting that Godot is open source, so you can edit it, which means a lot, when you're creating a game with new mechanics. Both are great, and like it has been said a lot, its all up to you!

by (370 points)
0 votes

Having used Unity for some time professionally, and Godot for a similar amount of time personally, I'd go with Godot for 2D.

  1. It's just easier to get into, everything is "in the box", no annoying setting up of external tools and getting them to talk together properly, in particular the code editor.
  2. The 2D mode in Godot is a true 2D mode, whereas in Unity it's still 3D, with some hacks to make it "feel" 2D.
  3. It's open source, if you hit a brick wall you can either dive in and see how it works and possibly fix it, or at the very least get someone else to do it for you. With Unity, whether you pay through the nose for professional licenses or not, you're on your own, their support is not the best, not by a long shot, and even if you manage to get some response from their support team (best of luck with that), you're at the behest of their release schedule to get a fix, which means, worst case scenario, you might be stuck for a couple of months, or have to find another way around the problem.
by (18 points)
0 votes

If I were you I would say Godot. The reason why is because a Godot is %100 free & open source (I don't even know if those mean the same thing.) Also Unity after you start making money on your game you have to start paying. So I %100 suggest you should use Godot (not Unity.)

by (50 points)
Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to webmaster@godotengine.org with your username.