Tutorials and courses

This page lists all sorts of resources I’ve found useful so far. Some of them are free, some requires a subscription. I’ve try to list free alternatives for everything, but some of the paid stuff is really good. The resources will be divided into categories, depending on their main focus, or how I used them. I haven’t looked at all of these thoroughly but I have used something from them.

General programming

C++

The problem I have with many C++ tutorials and books is that they feel old and outdated. Even newer ones. Reading or watching some C++ tutorials today feels exactly like reading the books I used when learning C++ back in the late 90s. I never really got past the fundamentals back then, even though I did write a small game in DirectX and a few OpenGL demos with it. I don’t use C/C++ today, but if I start using it again, I’ll probably add some more advanced tutorials to this section.

C++ – TheChernoProject: If you want to get into C++ fast, I think this is a good tutorial. It’s still going on as of this writing, and I’ll prbably watch all of it myself if I ever need to write C++ again. I would say this is not for complete beginners. In fact, I don’t suggest learning C++ as your first language today. Learn another C-style language first if you want to get into C++. If you want to start with C++ for free, I think this is a good place to start.

C++ Language (Cplusplus.com):  A general C++ tutorial. Not exactly game dev related, but it’s useful if you want to get into C++, especially if you don’t have much previous programming experience.

C#

If you want to use Unity or MonoGame, this is the language you want. Note that Unity also supports JavaScript, so you can learn that instead if you like. IMHO C# is a great language to start with, especially if you are on Windows. You won’t have to spend a lot of time setting up compilers, SDKs and IDEs like with some other languages (Java for example). Just get Visual Studio Community edition and you can start working right away. If you want to  learn other languages like Java or C/C++ later, knowing C# will help.

C# fundamentals for absolute beginners: There’s no game development in this tutorial, but this is by far the best free C# tutorial I’ve found. It slowly goes through the fundamentals if programming using C#.

JavaScript

This is the language I love to hate 🙂 Well, I use it a lot, and have nightmares about it from web development. Having said that, It’s one of the most used languages, and spreads everywhere. It used to be that you only used JavaScript on web pages, but now you can use it to write both server side and client side applications. A lot of people suggests this as a first language, but I don’t. Not if you want to get into C#, Java or C/C++. Don’t get me wrong. You can do this, I just think the language is to different. I might change my mind in the future, but right now, this is my opinion. Having said that, there are quite a few JavaScript libraries for game development, and you can also use it in Unity. If you want to do some web development, you’ll need to learn the basics of JavaScript anyway, so knowing some of it will never be a bad thing.

JavaScript fundamentals for absolute beginners: I haven’t watched this, but if it’s as good as the C# tutorial, it’s the place to go.

Java

Java is a widely used language for everything, and there’s a few good libraries you can use for game development in Java. Java is a good first place to start, espeically if you want to develop for Android. I don’t have any great java tutorials yet for absolute beginners yet, so all suggestions are welcome.

Game programming (TheChernoProject): If you already know some programming and want to write a simple game from the bottom  up, without any libraries, this is a good tutorial to watch. It will help if you have previous experience. Even if you are not using Java, you can use some of this. It goes over everything from putting pixels on the screen to colliders, AI and serialization. You may not want to write your own complete game engine, but this gives a good understanding of how some of the things work, even though it’s all in 2D.

Python

Python is a scripting language. used in a lot of applications. There are a few game libraries written for Python, and some useful application also uses Python as a scripting language. If you want to automate things in Blender for example, you’ll have to use Python. I don’t use python much, but know the fundamentals. The language is different from the other languages listed above, but you’ll probably be able to switch to another language if you know Python well. Python focuses on readability, and simple syntax. This makes it easy to get started with (no more forgotten semicolons).

An introduction to interactive programming in Python: This links to the first in a series of courses from Rice university. They run often on Coursera, so you’ll probably be able to take it if you want to. You’ll learn the fundamentals of python, and programming in general. You’ll even write a few simple games. The follow-up courses gets into algorithms and more advanced stuff and is useful if you want to learn some algorithms that you can use in other languages. I felt the later courses got quite dry and math heavy, but there is probably no way around this. I can at least suggest the first two courses while getting started, and if you want to dig deeper, keep going. If you don’t know your math well, expect to have to work on it before completing the later courses.

 

 

Shader programming

Unity tutorial – A practical intro to shaders: This links to part one, but you should be able to find part two as well. If you haven’t worked with shaders at all, this can be quite useful.

Makin’ stuff look good: Not pure shader programming, but still useful if you want to get into shader stuff. All is done using unity.

 

AI

Behavior trees: How they work
If you need an introduction to behavior trees. This is a good article to start with.

Goal Oriented Action planning For A Smarter AI
Another interesting AI article with examples in Unity. There’s also a link in this article if you want to read up on FSMs.