Good resources for learning C# and Godot?

Godot Version

` 4.4

Question

I know this question has been asked before. But I’m hoping new resources and strategies have been developed since the latest postings. I’m hoping to make a 3d RPG using both C# and Godot, but I need to learn from basically zero. Are there any really good resources to actually learn the way to do this. I am aware of some tutorials, but they don’t really do much other than get me into tutorial hell. Even specific degrees and such would be welcomed, or online courses.

Thank you in advance for any help you can give!

Do you have previous experience with C#? Or what’s the reason you want to go with it rather than GDScript?

Don’t get me wrong, I absolutely adore C#, but starting Godot with C# without having any prior experience with either might be a rough ride.

If you haven’t used C#, I would recommend learning the language first before using it in Godot.

If you used C# before but not with Godot, I would recommend doing the basic “Your first game” sections in the docs and overall look over the C# examples, they help a lot.

I’d suggest considering gdscript before jumping into C#, for a variety of reasons (the API docs are largely gdscript, for example, so you won’t have to translate them to C# to use them…), but if you’ve got a reason to go C#, go for it.

With a 3D RPG you are kind of tackling hard mode first. RPGs have a lot of data management and a lot of state. My suggestion is you first try a simple arcade game like Asteroids, Pac Man or Space Invaders. There are tutorials out there for things like that, and the experience in making a simpler game is transferable.

You’ll have to learn the same lessons if you tackle an RPG first, along with a bunch of others. Starting with smaller, simpler projects makes the learning curve shallower, and you can always tackle projects that will eventually be components of your RPG.

For example, maybe just start out with a Match3 game or something like Bejeweled. The things you learn making that will be directly applicable to your RPG inventory management screen, your game menu system, playing sounds, all that stuff.

If you have the right personality, you can dive into a huge, complex project and learn all you need to in the process, but most people will hit a snag somewhere and stall out or burn out. For most people, incremental steps are the more reliable way to get from noob to expert.

@tibaverus Thank you. I really wanted to go with C# because of the capability to use it for things outside of Godot as well. I took some python classes in college a few years ago, so I wasn’t as interested in a language that was more script-ish. Also I believe that C# has some other functionality and can be more performant. Is that correct?

1 Like

@hexgrid I couldn’t post much of my reason because it was to similar to my posting to @tibaverus . I tend to be able to jump into projects fine, but I’m kinda dumb and need someone to bounce questions off of. So I’m wondering if maybe going back to school might be best.

I wouldn’t advise school for game dev; there are a lot of scams, and even the honest ones aren’t particularly good in my experience. You’re better off getting a computer science degree.

For C#, there are other uses for it (Unity, windows dev), and there are paying jobs out there that want C#, but if that’s what you’re looking for you’re probably better off learning Rust or Typescript.

C# uses its own runtime (.net, or mono). I haven’t used it with Godot, so I couldn’t tell you how it performs relative to gdscript, but I suspect that the answer is “it doesn’t really matter”. All the real number crunching is happening in the Godot engine itself, which is C/C++ or on the GPU.

The reason I say RPGs are hard mode is, an RPG has a lot of things going on. Let’s consider a game like Space Invaders. You have:

  • preset enemies moving in a pattern, all of which behave the same
  • you can move left/right
  • you have shields that can be destroyed
  • (nearly) everything can shoot, there’s no friendly fire, shot collisions result in kills

That’s pretty much the whole game. Now, let’s consider an RPG:

  • load/save progress
  • large, explorable environments
  • a camera that can handle large, explorable environments
  • mapping
  • environmental loot
  • state management (as the story progresses, areas in the game probably change when revisited…)
  • random enemies, which have a variety of abilities, equipment, stats…
  • combat mechanics
  • boss combat mechanics
  • inventory
  • stores
  • player stats with buffs/debuffs
  • player equipment with buffs/debuffs
  • player one-time use items with buffs/debuffs/combat effects
  • enemy one-time use items with buffs/debuffs/combat effects
  • cutscenes explaining the plot
  • combat cutscenes
  • conversations with NPCs
  • NPCs doing things
  • level/skill/spell/job systems
  • possible minigames
  • possible party management
  • potentially lots of other stuff…

A full blown RPG is a major undertaking. That’s not to say one person can’t handle it, but it does mean it’s going to be a very challenging first project.

1 Like

@hexgrid Thank you again. I am already employeed. I do tech support for a major corporation. So learning to code would be helpful for gaining skills, but at the end of the day this is so I can make something that may someday make money, but it likely for my friends and I. I’m coming up on 40 years old next month, and I hear what you’re saying about the scope. I just know I’m stubborn and I won’t quit unless I end up hitting rock bottom haha. If I go back to school it would likely be a CS degree, I have considered things like WGU’s C# course, but I’m not sure the hands off method will be great for my learning. So if I’m going that route I’d probably consider something much cheaper.

Studies can be really good but is times consuming.

Firsts start with pure C# and when you learn to make own applications, solve problems, slove some tests etc. Then You can get start Godot.
That will be most optimal.

@Moreus Thanks for the advice to focus on C# first. Do you have any suggestions for good learning resources for C# specifically then?

I like

Other good resource to learn is Microsoft tutorials,

I can strongly recommend The C# Yellow Book by Rob Miles. It’s very accessible, completely free, and what I used to learn the language back in my freshman days at college.

That said, there’s a difference between learning a programming language, and learning how to program. Mastering the former is necessary to master the latter, but by no means sufficient. Any language you use to solve problems with is going to make you better at programming, and that skill transfers between languages.

If your primary focus is making a game, then GDScript is a fine choice. And if you want to pick up C# (or any other language for that matter) later, the knowledge you gained developing your game will help you get started much faster. Don’t discount GDScript just because it’s a domain-specific language without much use beyond Godot.

How i learned coding was by doing tutorials, fixing my errors, reading godot docs, learning linear algebra, static typing, and just started coding even when i knew nothing (sorry if this didnt help you, i was just sharing my experience, and also! Im a beginner so dont take this too seriously)

@TokyoFunkScene Thanks for the reference! I’ll be sure to check it out. My main focus indeed is to make games, but C# would also open some opportunities for me at work as well. I’m not saying that I wouldn’t like to learn gdscript, and I likely will to some extent even for game design.

Thanks @isabelle_alejar . That’s still helpful advice!

1 Like

Your approach of going with C# because it is more mature and has other applications as well is, imho, spot on - even if gamedev doesn’t work out you have learnt a valuable skill.

Some resources:

I don’t know where you are from and what the options in your area are, but I would generally recommend against bootcamps and commercial schools. If possible try to find a multi-year program funded by the gov. where the goal is to actually teach you something and not to make a quick buck. Self-taught can work well, but there is also a risk of getting into bad habits without the option of having regular code reviews with an experienced tutor.

First of all. Thank you for the resources. I will definitely go through them!

I’m not sure what SE is, but I will be sure to shoot you a PM as well.

I’m in Oregon and I don’t think the options are great. I’m not sure what you mean by a government funded multi-year program though. Could you give an example of that?

_S_oftware _E_ngineering, I assume.

1 Like

Yes, @hexgrid is correct, I meant software engineering.

To given an example: over here students who already have their highschool diploma (equivalent) and have a job can sign up for a four year program where they spend Mo-Fr 5pm-10pm (so after work) at a school to learn programming in a classroom setting (small groups, prof(s) always present) to earn a bachelors in CS which many prefer over having to figure things out themselves at ‘regular’ university.
All of that is paid for by the federal gov., so it is free for the students. But university would be free as well, so it is more a matter of preference - afaik college can be quite expensive in the US.
What I meant is that I’d look for a place where the goal is to actually help students get better and not to process as many of them in as large a group and as quickly as possible to make the most money.

I sent you some assignments from the first and second year of that program. Would still recommend a full course with instructions, but I hope it will help a little at least.

Thanks so much! I’ll look into that as well, and check out all the references you gave. Can’t thank you enough!

1 Like

Hello, I have several years of experience with both C# and Godot/gdscript (C# in my work and gdscript in my spare time). I personally find that gdscript is easier to use for game dev for several reasons.

At first when learning Godot I used gdscript, and found its lack of standard language features frustrating back then. So when I learned that C# is supported in Godot, I decided to try it since I was used to using C# for my work. However, they have since added many of the language features I was missing, including static variables and functions and optional strong typing.

Here are the main reasons I prefer to use gdscript in Godot:

  • C# has a fair bit of extra syntax needed to Interop with gdscript
  • C# is missing some functionality gdscript offers, such as preload and @onready
  • it’s nice being able to edit the scripts in the same place as the scenes and such, especially when you just need to attach a small script to a node to achieve some simple functionality quickly
  • gdscript has better editor support, such as being able to connect signals directly in the editor
  • gdscript provides auto-complete for various strings defined in your project, such as input map values

That being said, there are some advantages to C#, such as some language features which gdscript does not currently have (though may add in future), including interfaces, templating, built-in unit testing framework, and available packages etc for .net. Another advantage to C# is that it’s strongly typed, meaning every variable must have a single type only while gdscript is weakly typed (though does offer optional strong typing).

These advantages of C# are important, but they are not as necessary in the context of Godot and game dev. Altogether, imo they don’t outweigh the above listed advantages of using gdscript. Just some things to keep in mind going forward.

I also definitely agree with what others have said about learning C# and Godot separately before combining them. The C# functionality in Godot is really geared more toward people who want to use Godot and are already familiar with C#.