Learning path in C#

Started by
5 comments, last by Kirlim 7 years, 3 months ago
Hello Community, I'm a beginner at making games and writing code.

I'm hoping someone can guide me to fastest and most efficient way to becoming a programmer that can tackle any programming problems that may occur during unity game development. So my questions are.

1.will I be missing out on key programming skills for game dev if I learn to program in c# through unity first?

2.or is it better to learn c# through traditional application first?

Keep in mind I plan on being indie. Focusing on combat systems and animation. I'll be buying environment/character art from content creators since I'm just one person.
Advertisement
The fastest and most efficient way would be like following a path on a tech tree in the Civilization games. If such a thing existed, you could simply mark things you already know, select the concepts you want to learn, and follow the prerequisites between concepts, learning each one along the way.

There are problems with this:

- I don't believe anyone has comprehensively mapped out the possible concepts and the dependencies between them formally. I.e. Nobody has an exact "tech tree" that you can easily use.

- The resulting network of concepts would be GIGANTIC and very difficult to navigate.

- When you're starting out, you don't even really know which concepts you need to know.

- Not every game uses every game-development concept. You can skip most of them and still make a successful game.

- It's hard to know when you have successfully "learned" something. It's easy to skim over the details but still feel like you "know" the concept. In reality, there are nuances to concepts that aren't obvious, or are only important in particular combinations with other concepts.


This explains why most of the answers you get will be inexact things such as "read some books" , "find some tutorials", "try going to college", etc. Nobody has thoroughly mapped the exact details of everything in a way that lets us answer this question.

There is no "correct way/path/technique" to learn to code apart from the hard way. Does not matter if it is a game or otherwise.

By this I mean you will

  • Make mistakes in design.
  • Create stupid bugs.
  • Box yourself into corners that cause you to re-write massive blocks of code.
  • Create code that does not perform well
  • Use the wrong data structures

The reality is no course or book will teach you this stuff. It is what you learn by building different non-trivial projects and making the mistakes listed and then learning from them so you can spot them ahead of time on the next project. It is also learning different languages over many years so you have different tools and techniques at your disposal :)

So read stuff, learn stuff and try it out the repeat. And enjoy the journey :)

Oh.... There is a golden rule that should ALWAYS be followed no matter the language or type of thing you are working on, be it just your or a team of people. It will save you a world of pain :)

Drum roll......

Learn how to use source control (Git, SVN or any other, does not matter which) and then use it always.

instead of Unity I'd go with

Otter2D

or

Duality

both use C#

both are for 2D games

both are great for beginners learning to program games

make pong

make asteroids,

make a platformer

make a side scroller

make a tower defense

you'll learn tons of stuff

you can make 2D games with Unity, but Unity just has too much stuff

Unity was built for 3D games first and the 2D stuff was added later

so in my opinion its better to start off with something designed for 2D from the start

then once you get a hang of it move on to Unity and 3D

Thank everyone, I appreciate the insight. I will check out otter2d.

1.will I be missing out on key programming skills for game dev if I learn to program in c# through unity first?

That is going to happen if you don't go into theory and if you get stuck in one single language. Even today it's possible to be tempted into writing small C++ libraries for C# code (but specially if performance is involved).

2.or is it better to learn c# through traditional application first?

Not really. But the console is a good start.

If you're not used to programming, then trying to make games, even on Unity, before getting some experience in programming, is like trying to learn to pilot a launching rocket before learning what all the controls are: you will crash and burn, and it might be fatal to your motivation.

- Things will go wrong, and you won't understand why

- You'll not have the basic knowledge to roll up your own solutions to problems specific to your project.

- You'll feel stuck, and induced to follow thousands and thousands of tutorials to bring their code to your project, even without understanding them.

Overall, programming is often very frustrating, so you must take care that the frustration does not increase faster than your ability to use your skills or cope with it. In short

Game programming is an unforgiving MVP

Unity wont make learning easier - it'll make learning HARDER. The engine will bring lots of new constraints like the preference for components oriented systems, simulation rules, etc. There's no shortcut, so if you're not in a hurry to make a game (and should not be), take a few months to learn C#. Solve some code kata* until they feel trifling, all the while reading a lot about how game engines works

* http://codekata.com/

This topic is closed to new replies.

Advertisement