Want to Start Developing Games - What Should I learn First?

I feel like i'm caught in a storm of separate subjects but can't apply them to each other. So i need some sort of order to learn things in and i need to know where to start. I want to get straight into learning code that i can apply to simple games, instead of creating pop quizzes in a console window.

So my list is pretty much:
- Learn Unity interface
- Learn C# - I'm working in the Monodevelop console right now, and it's destroying my soul
- Learn C# inside Unity - because i can't find any easy beginner tutorials that show the Unity specific functions in C#, such as Vector 3 etc.
- Re-learn high school maths - I don't know exactly what maths i will need to know. Is it just anything to do with physics and geometry? And can i just learn this as i go along?

Basically all these things i'm learning separately but i'm finding it difficult to stay focused on each thing because i've got no way to use them together. Is there any simpler and more structured way of tackling these?

use the learning materials


What I found helpful when I was learning, was to skip the learning, and just start making. Dont even go for a basic game, you will fail, but you can learn a lot from jumping straight in. So, you want to make a multiplayer fps for example. You google 'How to make gun in Unity', 'How to make multiplayer unity game', 'How to make animations in unity', and you just keep doing this until you pick it up.


If you are new to Unity and game development, my honest answer is to first work through most or all of the tutorials and topics in the Unity Learn section, with some picking and choosing among the Live Training Archive. This will go a long way to helping you learn Unity and the things you need to know there. The Survival Shooter and the 2D Roguelike both have concepts that apply to a typical RPG game.

Don't just watch the videos and hope the information will stick. You need to open Unity and try out the things you are learning. Look for ways what you are learning can be used beyond the scope of the basic tutorials.

While you are learning, create some prototype games. There are plenty of free assets on the Unity Asset Store, including a number from Unity itself. Start with something simple, like making a character run around a level made out of Unity primitives (cubes, planes, spheres, et cetera). You'll quickly start realizing all the things you don't know and where to focus your learning.

Then do something a little more complicated. Make a simple game where the character runs around and beats on things with a sword or maybe throws magic spells. Now you're learning audio, GUI, particle systems, scoring, enemy spawning, navigation meshes... and a whole lot more a new Unity user doesn't even know they don't know.

Then when you can complete a basic game prototype, you can start looking at making a prototype for something a little more complicated.

It may seem like you're wasting a ton of time before you "get started" with this method, but what you are really doing is saving yourself frustration and wasted time later by learning now. In fact, I'd bet your total time from now to a complete RPG will be less by stopping to learn smaller lessons first.

Also remember that the Unity Learn section has basic tutorials on C#. If you are new to C#, I recommend reading Rob Mile's "The C# Programming Yellow Book", which was created as the basis for a first year programming course and is available for free to download. It is not Unity specific, but the book has good examples and will get you started in understanding general C# programming.

1 Like

First learn to google. As a programmer realise that every problem you encounter has already been solved, if only you can find the right terms to search for.

I'm also a big fan of just in time learning. Browse all of the content in the learn section to familiarise yourself on what's there. But don't stress about understanding it till you need it. Start building a game. Find yourself repeating the same code? Go figure out how a loop works. Find yourself wanting to communicate between scripts? Go check out GetComponent. Find yourself in need of saving, go check out saving and persistent data. Need to refer to a method via strings? Check out reflection.

While this approach to learning is no where near as robust as a university degree in computer science, you'll find its far easier to do and keep motivated when you are teaching yourself. Otherwise you'll just end up overwhelmed.


This sounds like a good way to go about things, so i’ve started with the very basics of learning how to move a cube on the screen, which is branching out to a number of different things like Input, KeyCode, Rigidbodies, Vector 3/2’s etc. I’m not sure how i feel about Rigidbody though when it comes to physics. I feel like it would give say every 2D platformer the same feel, which wouldn’t be what i want. How difficult would it be to create your own gravity, movement and such without the use of Rigidbody?

Now we are talking. You can actually customise gravity, friction, drag and a whole bunch of other things on the physics system. And for a platformer don't forget to use 2D physics.

You can roll your own. But optimisation becomes challenging as your scene gets more complex. NVIDIA have had years of practice, most developers go with them. There are some notable exceptions, their system is not deterministic, many RTS games use custom physics.

I personally had to write some extra physics stuff for Pond Wars, as PhysX does not natively do bouancy.

Note that you don't necessarily need to learn "bare" C# first, before jumping to Unity. You can learn as you go, googling around if you don't know how to use specific language feature and you feel it could be useful.

When I've started deving in Unity, I didn't know anything about C#. Now I'm fairly proficient in it. And I spent literally no time on tutorials for the "dry" C#. Just learned it along learning unity.

Also remember one thing I was once told by my CS teacher: Good programmers know the info, great programmers know where to find the info.

At the time, I didn't understand that, but now I know. There's no point of keeping tons of math theorems in your head, when you can in most times just google it, by using most layman terms, like "how to calculate distance between two points", when you actually need them.