Troubles getting started for development

4.4

Hello dear Godot users,

I am Varonex, I have been developing for years using different languages, but my development journey started 7 years ago. I started learning programming using Roblox, as it was the easiest software I could use, with the specs of my old computer back then. I grew my roots in the engine, it took quite a lot of time. Eventually, I got somewhat bored, for various reasons.
I am now seeking a new game engine to use. Despite my blatant artistic skills, I still want to develop games as it is a passion. However, I have quite a few apprehensions regarding all of them.

The biggest question I have been asking myself for quite some time : should I develop on Unity, or should I develop on Godot?

The decade-old question. I have been looking at plenty of videos to try to settle my mind, but I seem to not be satisfied with those. That’s why I’m here to ask you all !

I will divide my concerns in quite a few points throughout this post. Feel free to reply, criticize, give opinions.

1. Language support

Unity is known for its use of .NET, allowing developers to use C# in their projects. Godot has been using GDScript, a python-like, DSL built for the software.

My first concern is that I tested GDScript, and it’s honestly good. I don’t believe I want to program in a language that adopts a python-like structure as I have a really hard time with indentation-defined blocks.
That’s why I want to use C#. I am familiar with it, and I know I can make great usage of it. However I noticed quite a lot of situations where .NET in Godot was deemed slower (and actually sometimes it is faster), especially with Godot’s collections. They needed to bridge internal C++ datastructures with C#, hence the existence of those hybrid collections.

I also noticed that some features (like signals) seem to be quite… Poor in C#.
In GDScript:

mySignal.emit(...)

In C#:

EmitSignal(SignalName, ...)

Same goes with @ decorators. GDScript has @onready, which makes it way better, combined with $ symbol that helps shorten get_root. C# however must use GetNode<T>(Path), and in the _Ready method.

Sure Unity has some janky syntax as well, and limitations (like object?.method() being bad practice because the nullcheck operator wasn’t overloaded on their end)

I don’t know. I feel Unity has better handle over C# as it was designed to be used with it, Godot seems quite experimental.

2. The organization

Godot uses nodes to wrap behavior, and you can combine nodes to create custom scenes, you can further instantiate.

Unity uses prefabs with GameObjects, and you can equip those GameObjects with components. Components are the scripts you write to add custom behavior.

The usage logic isn’t the same, as in Unity, the object keeps the behavior “within itself”, and the hierarchy helps to find out parent/children relations, whereas in Godot, a child node can either be a volontary descendant (e.g a button in a VBox), or additional behavior given to the parent node (e.g collisions)

I understand both, so far I don’t know if one has an advantage over the other.

3. Space & pricing

Well, Godot wins for those ones obviously. Unity is a bulky paid machine, Godot is both lightweight & opensource, under MIT license.

4. Fear of learning curve

I just don’t know which one will be easier to learn. Unity has a, let’s say, poor documentation. I understand the concept & how it works, and I’ll be able to articulate projects in it. Godot has a LOT of node types. The documentation is good, albeit sometimes acking for C# (for obvious support reasons).

There is also sometimes a lack of documented features on Godot. I may be doing poor researches, but the amount of tutorials seems to be poorer.


Overally, I know I want to learn Godot, but the language choice, the amount of nodes & singleton classes, … seem to be quite off. Sometimes I don’t know where to start, whereas with Unity, yes it’s paid, yes it’s bulky, but at least I made a project on it and understood what I did. I also understand Godot, but it feels off to me at some point.

What would you recommend? And how would you approach learning Godot when coming from Roblox studio (and having some Unity background)?

Thanks a lot for your help,
Varonex

3 Likes

Since you are on a Godot forum I am guessing most people will say this to you, but Godot is an amazing framework and you should definitely use it.

  1. Language support
    You can use C# with Godot and many people do. Do not discount GDscript though, it is IMHO perfect for what it was intended for. You can also start in GDscript and then add C# parts whenever you want to. (Or the other way around too I suppose).

  2. The organization
    The node structure in Godot is perfectly simple and highly intuitive. Yes you are right, it is not how Unity does it, but why should it be that way. I would say the approach Godot has taken is far better for so many reasons.

(Missing out the one about pricing)

  1. Fear of learning curve
    GDscript has the shallowest learning curve I have ever experienced for a new language. Often people get a bit carried away, you know the “for my first game I am going to make an online multiplayer minecraft/star citizen crossover.” Then you get the “why is it so hard, it must be Godot’s fault”.
    Your examples are purely syntax based. Like:

I also noticed that some features (like signals) seem to be quite… Poor.
In GDScript:
mySignal.emit(…)
In C#:
EmitSignal(SignalName, …)

I mean come on, really. Signals in Godot are incredibly powerful and so simple to use. Your only complaint is that the syntax is a bit different? I personally prefer calling the method on the signal, makes more sense to me.

My Advice:
You have tried unity. Time to try Godot.

Learn GDscript (if you have coded before it is really simple to pick up the syntax) and then, if you feel the need still, continue with Godot and use C# as well. Should you decide to return to Unity, then so be it, all your prototyping, artwork, mechanics and game plans will make the switch quick and easy enough. And never be worried about learning something new, it is something you should be doing for the rest of your life. We never stop learning and if we do, we stagnate.

Good luck.

PS The vast array of nodes is a compliment to the maturity of Godot, not a burden. Discovering that a coding challenge you have been battling with already has a node dedicated to do exactly that is a positive delight. I still love looking through them and thinking oooh, I want to use that node!

4 Likes

Firstly, it’s good that your asking these type of questions. However, questions will only take you about halfway. For a fully 100% answered question, you’ve got to try both and see how you enjoy it.

If you do, you do. If you don’t, you don’t. Period.

Also, I find that the engine choice is highly irrelevant when it comes to actual game development. Not “oh, I’ll make something someday”, or “I’ll dabble here and there”.

NO.

I mean “I have a set project design doc and vision. I’m working to get product/version done”.

When it comes to the near daily grind, you just use the engine your most comfortable with. That’s it.

No average player will ever care what engine a game is made with, only if the game is enjoyable to them or not.

5 Likes

How come?

I have been a professional developer for over two decades. I have heard statements like this about Python, Ruby, C#, Java, JavaScript, etc. “I don’t like it because…” Choice of language is made one of two ways:

  1. You use the language that is comfortable for you.
  2. You use the language that is the best fit for the project you are working on.

(The third way is someone else made the decision for you, like you’re working on an already existing project.)

C# is a pretty good language. (These days I prefer Java over C# when I have a choice.) That said, it is not a video game programming language. It is a generic programming language. GDScript is a game programming language. It is a living language under active development with a small, agile team. This means it is constantly getting better.

Have you read the Godot Engine introduction and done the 2D and 3D tutorials?

You mentioned you have experience with Unity, but not Godot. I recommend you try the tutorials out in both GDScript and C#. See which you prefer.

I personally prefer GDScript for many, many reasons. However, I realized I was biased because I’d never used C# with Godot. So, I followed a tutorial on making a game in C# and used it as the basis for a game jam entry. I learned a ton:

  1. I prefer GDScript, but C# wasn’t as bad as I was thinking to use.
  2. There were features in the Godot editor I’d never used before.
  3. Ways to structure code (particularly state machines) that I hadn’t seen in GDScript tutorials.
  4. How exporting variables keeps linking to underlying resources from breaking if you move the resource.
  5. Using brackets (which I used to love) now just annoys me. It pads out code and makes it less elegant.
  6. Most importantly, I just like GDScript so much more. It feels more comfortable to use.

A few other things to keep in mind:

  1. You can mix C# and GDScript in the same game. Just use the .NET version. On the current roadmap for the Godot Engine, they also have plans to do away with the .NET version and support both languages natively in the same engine.
  2. GDScript is interpreted. C# is compiled. Every time you want to test a C# Godot game, you have to compile. (This was one of the big reasons I decided I didn’t like C# after using it with Godot.) The larger your game gets, the longer that compile time takes.
  3. There are way less tutorials on C# Godot development than there are on GDScript development. Likewise, on these forums there are less people overall who can help you with C# issues. (However the people who are fans of C# on these forums are passionate about it and very helpful.)
  4. Different languages have their own strengths and weaknesses. Learning new languages is a great way to know what you like and don’t like - and to borrow things you like from one language and use it in another. (For example: GDScript is dynamically typed, but it can be used as a strongly typed language - which mimics the type-safety you get from C# - which is statically typed.)

Finally, I notice you didn’t mention Unreal as an option. That is telling to me. My gut says you will like Godot more than Unity. FWIW, I’ve used Unreal, Unity and Godot to make small games over the years. I’ve also worked on games that used no framework and were written in pure C++. I prefer Godot.

Ultimately, it’s your choice.

2 Likes

Sorry I mistyped the signal part ! The GDScript syntax is absolutely perfect, also because in Roblox we use Connect as well ! Here the system is even simpler than the one in Roblox. I was referring to the bulky syntax of C#. About the learning curve, I was more thinking of all the nodes & different property types, sometimes I get lost when navigating throughout some nodes, and it’s not the easiest thing.

I absolutely agree with the fact GDScript works well for Godot, as mentioned, because it was made for it. I learnt GDScript actually, and write some stuff here & there.

1 Like

Well, it’s more of the fact I have some hard time focusing with the indentation system, I prefer well annotated blocks (then ... end or {}) than tabulations

Now the tutorial part. I did both tutorials (in C#), and I understood quite a few things for sure, I just feel dazzled about the entire rest

For sure I should just write down a simple idea, try it out, fail & take lessons from it

1 Like

The editor does have clues for how many tabs you’re using, which I find super helpful. I found that following the GDScript Style Guide really helped me.

I didn’t like tabs when I first started using python, but it was for a professional project and that was my only option. I found that tab indicators makes things a lot easier to read and after a while I stopped thinking about it.

Maybe that will happen. I would need to figure out it vscode does those indent indicators, although I’m quite used to integrated editors as well

Not a hater of GDScript, but I find it less versatile then C# + C# is better for world usage as you can learn C# and further work as a SE with GDScript it’s only used in Godot. I am currently making a game in GDScript which is planed to be shipped to Play Market, I can only say the next game will surely be written in C#. Do not get me wrong the GS ( GDScript ) is not a bad language and it’s a good entry point into the Godot engine, but C# has more world benefits. Though sad as you won’t be able to track time on Steam : - ) by using C# ( not out of the box )

P.S. You concern about slowness is understandable and it’s true, C# is slower as it’s not native for Godot, but taking into account the current speed of phones/PC I doubt you will even notice the big difference. Also C# is a compiler based language this is where you will gain the advantage of it being compiled over GD being a interpreter based, where it’s executed line by line, thus lacks optimization as it does not “see ahead”

Short answer, use GD script to get familiar with the engine and then switch to C#

2 Likes

VSCode does do them. I don’t remember how to turn them on though. I recommend just using the Godot native editor though. Another benefit of the native editor is that you can drag-and-drop nodes (with Ctrl held down) into your scripts and @onready variables are made for you.

In my professional opinion, learning good programming concepts and practices is more important than knowing the syntax of a single language if you want to become a professional software engineer. With the onset of AI in the workplace, it is going to become harder and harder to find a job if you only know one language and don’t understand software architecture.

Again, just my opinion, but professionally the two best tracks these days are either to learn vibe coding with AI and stay on the cutting edge of that, or have a deep enough knowledge of software architecture that you can be an expert in knowing when the AI is making poor decisions for a given situation.

3 Likes

Yes, concepts first that is 100%, the author is choosing between languages usage in Godot, but yeah concepts/idea first and then the language otherwise it’ll be just a bloated program

2 Likes

I configured the integrated editor to match the color scheme of vscode, font, … And it is indeed better to work with it than using an external IDE. I also completely told myself to just do a random project, followed a tutorial &, so far so good ! Now practice will do the rest

1 Like

Just a small bit from me, but

As someone who is making a commercial game with Godot using C#, I would HIGHLY discourage anyone from using Signals with C#
Instead, use Events, which are C#'s own “Signals”, and Godot exposes these for you to use, and you can easily make your own.

2 Likes

Yes that’s what I used to do, I just feel signals are so bad, plus I don’t like working with strings everywhere (signal emission), events with delegates feel less integrated with godot though, that depends. So far I’m staying with gdscript as it’s absolutely not a hassle, so at least I’m fully focused on the engine itself

I can vibe to that!

2 Likes

What I feel personally I am a new user to Godot, (Started this year,) and is still learning the functions and etc, but I still think it is the best engine yet. Of course you are on the Godot forum so you probably expected this, but I have used both Unity and Unreal and I did not find the results I found in Godot. In Unity I had a huge problem with coding in C# and in Unreal it was complicated. In Godot it was PERFECT! I had some trouble in the coding process in the beginning, but soon I was able to code 2D movement. For beginners I suggest Godot. Oh yeah and forgot to mention: FREE FOR EVER!!!

3 Likes

Unity is something of an aging monstrosity at this point and the company’s decisions in the past few years suggest poor management and unreliability, especially as they can change their pricing structure at any moment and you as a developer are simply forced accept those changes or start your entire project over. It’s just too risky.

You did not mention UE5 but I would say it’s the only real competitor to Godot at this point, only because of widespread industry adoption and the most money going into it which generally means it can offer the latest technical capabilities. However, in my experience it is inferior to Godot in terms of design, organization, general bloat, and cost.

Even if you are seriously considering going into game dev as a career, game development in the way it’s done today is not going to be relevant much longer… AI (pre-AGI) is already beginning to change the development landscape, and AGI will likely arrive in about 2-6 years meaning developers (along with much of human labor) will start being less and less relevant (and the world will be more focused on the transition to the post-wage-labor economy at that point).

The fact of the matter is that unless you are going for cutting edge tech (which you probably should not be as a solo/new developer), Godot can make just as beautiful games as any other with a lot less bloat, much better usability, and no cost.

My recommendation: Use Godot, give GDScript an honest shot, and try to join or create a team for your project once you get beyond the initial learning phase because being a solo dev can burn a lot of people out. A team allows for specialization (you can get a dedicated artist, or game designer, for example), allowing you to share the load of the work, you can help keep each other motivated, 3 people’s ideas will generally be better than 1 person’s, etc

1 Like

Finally someone who came along the same path with me

Mine is a special one

#SpreadAwareness

2 Likes

Hi!

Another one coming from Roblox here, for similar reasons to @WorldyBear. Some other members have already given you insight on the questions you asked isolated to the engine.

What I can tell you coming from the same place is that Godot feels similar to Roblox in a certain way. The engine has lots of its own things (GDscript, Nodes, Servers…) and they feel so ingrained you’re almost compelled to use them and tinker with them. Do the things in a “Godotish” fashion and not necessarily adhere to standards, just as in Roblox.

The difference is that you get best of both worlds here in Godot since anything you don’t like doing the “Godot way” you can just swap it for your own implementation, tool, language… It’s kind of like what extending Roblox with Rojo and 3rd party software feels, although the engine here allows and empowers for it + it’s a traditional game engine.

2 Likes

Hello, I have been using godot for about a year (with a mix of other engines such as unreal and Roblox) and I would definitely recommend using godot over unity as godot is much more simple (layout and language) and is completely free, but with unity you need to pay for a licence. I hope this helped! :slight_smile:

1 Like