Skip to main content
GameDev.net gamedev.net
🔒 Locked

"learning path" for a beginner?

Started by mrguyman Aug 5, 2010 at 1:47 AM 17 replies 2.8k views
Original Post
mrguyman
mrguyman
Yeah... I spend WAY too much time researching about game dev, but I barely do it D: It's probably a bad habit... VERY bad! Basically, what I'm looking for is a "learning path" for a beginner, from beginner to expert. I don't need resources (google helps with that), I just need to know the "order" in which to learn things. I know there's no absolute order, but just a general thing is what I need. (Like, what languages to learn and in what order is best for a beginner). I "use" a couple of languages, but it's mostly just copy and paste :S You can even just link to a learning path, I just need a "reference" to look back too when I stress out over what to learn (like right now). Thank you everyone!

EDIT: I need this because I'm always stressing out over this (I obviously get stressed easily :S). Again, thank you for your answers!
BierbyteZ
BierbyteZ
Make :
-Tetris Clone
-Pacman Clone
-Mario Clone
-Own Idea....

Thats my order im going to do.

I heard that Tetris is the best game to start with.
[size="2"]Java / C# Developer
mrguyman
mrguyman
Thanks! What language should I learn first?
szecs
szecs
"I know there's no absolute order"

This. One very important thing: code. Program. Even if you don't know much (anything).

For example my first game was a Scorched Earth clone with almost all the features the original version had.
Tetris/snake were my last games. 6 hours of coding in summary, just for fun.
Coded in C.

But: I can barely code, my codes are crap, BUT I can make whatever I want on my own. And I've only been coding for 5 years now (coding means coding for a few days, then not colding for months, or even for a year).

Many will suggest C# and XNA. I say go for these. Or Python.
PlayfulPuppy
PlayfulPuppy
Quote:
Original post by BierbyteZ
Make :
-Tetris Clone
-Pacman Clone
-Mario Clone
-Own Idea....

Thats my order im going to do.

I heard that Tetris is the best game to start with.


I'd say Pong would be the ideal first game. There's really only two rules to worry about -- The bat hitting the ball and the bat missing the ball -- so you can focus your efforts on learning how to get the main loop, input and rendering working.
LightAssassin
LightAssassin
Quote:
Original post by PlayfulPuppy
Quote:
Original post by BierbyteZ
Make :
-Tetris Clone
-Pacman Clone
-Mario Clone
-Own Idea....

Thats my order im going to do.

I heard that Tetris is the best game to start with.


I'd say Pong would be the ideal first game. There's really only two rules to worry about -- The bat hitting the ball and the bat missing the ball -- so you can focus your efforts on learning how to get the main loop, input and rendering working.


Pong is also good, making all those will give you the base skills of game coding and simple design (make sure you write your designs out and learn from your mistakes).

Language wise, I suggest python. I went with C++ and regret wasting so much time screwing around debugging my code (pointers yay!). Python you can worry about the logic and deal with optimisation later like you should.

Lots of free resources and pygame is great to use which is python wrapped around SDL with extras. Fastest way to get something going and the skills translate to C++ when you need to write performance critical code.
-----------------------------Ben / LightAssassin
goku21060
goku21060
Quote:
Original post by LightAssassin
Quote:
Original post by PlayfulPuppy
Quote:
Original post by BierbyteZ
Make :
-Tetris Clone
-Pacman Clone
-Mario Clone
-Own Idea....

Thats my order im going to do.

I heard that Tetris is the best game to start with.


I'd say Pong would be the ideal first game. There's really only two rules to worry about -- The bat hitting the ball and the bat missing the ball -- so you can focus your efforts on learning how to get the main loop, input and rendering working.


Pong is also good, making all those will give you the base skills of game coding and simple design (make sure you write your designs out and learn from your mistakes).

Language wise, I suggest python. I went with C++ and regret wasting so much time screwing around debugging my code (pointers yay!). Python you can worry about the logic and deal with optimisation later like you should.

Lots of free resources and pygame is great to use which is python wrapped around SDL with extras. Fastest way to get something going and the skills translate to C++ when you need to write performance critical code.


i Personally went with C++, and i personally think its better to understand and to be able to debug things yourself.


really it just all depends on your goal and what you want to do after you have learn all this. For example if your goal is to make a intensive game later on down the road then why waste your time learning other langauges when it may not be useful( although its better to have something and not need it then to need it and not have it). Just so you know every language codes are written differently though the difference isn't much but it is there.

And on the other had by doing other languages like python it will allow you to get use to doing loops and arrays and so on. Personally i already had Knowledge with that which is why i went straight for C++

lol thanks go to web designing :P well of course the codes were written differently but the basics where pretty 100% the same

But this is a rookie talking so yea :P

Well if you do decide to Learn C++ i do advice you to go to this website for the basics its an excelent website that goes through c++ step by step throughly
with real examples and the break down of set examples

http://www.cpp-tutorial.cpp4u.com/index.html
PlayfulPuppy
PlayfulPuppy
Quote:
Original post by goku21060
i Personally went with C++, and i personally think its better to understand and to be able to debug things yourself.

really it just all depends on your goal and what you want to do after you have learn all this. For example if your goal is to make a intensive game later on down the road then why waste your time learning other langauges when it may not be useful( although its better to have something and not need it then to need it and not have it). Just so you know every language codes are written differently though the difference isn't much but it is there.


The problem with C++ is that it's dreadfully complex (Often in a lot of ways it doesn't need to be), so for someone just starting out with programming they've got a double hurdle of both learning the concepts behind programming as well as learning the confusing and increasingly archaic C++ syntax.

It's better for new programmers to focus on learning the concepts rather than constantly beating their head against the syntax.

(... and I started with C++, too)
relsoft
relsoft
I would also suggest you start with pong.

I would also start with BASIC. Freebasic is a good compiler that is a cross between C and C++. You'll get to have a built in drawing support, and it would prepare you for C++.


Hi.
DarthYogurt40
DarthYogurt40
I'd recommend learning Python as a first language, it's fairly well-designed, and enables you to be a bit more productive and learn the nuances of programming without being overwhelmed by details.

Learn C afterwords, or perhaps alongside it if you've got the time. While most modern game code is written in C++ (it's the de facto industry standard), C is how many ideas are expressed and is still the lingua franca of most programmers.

Getting the hang of concepts in C and Python will really enable you to really get cracking when you finally start working in C++ and doing "serious" game-programming work. I started off by learning C++, but if I could go back I would have learned in the order I described first.

Another thing, I personally think you should get the hang of programming in general first before really starting to learn game programming. This all in mind, I'd suggest this path:

1. Learn Python
2. Learn C
3. SDL/OpenGL tutorials.
4. Write Pong in whichever language you're more comfortable with first.
5. Translate into the other language.
6. Learn C++ (should be pretty easy by now).
7. Learn more of the nuances of game development.
8. Get going :).

I know you said you didn't need resources, but some of my personal recommendations in addition to whatever you can find:
http://code.google.com/edu/languages/google-python-class/
(You can really learn a lot of Python quick from this)
http://www.cprogramming.com/
(Just a good site to consult in general)
"Verba volant, Scripta manent."
jpetrie
jpetrie
Generally, I would recommend Python as a first language.

Do note that Python is not a "beginner" or "toy" language -- there is no real need to learn C or C++ to make games, you can make perfectly excellent games in just about any language -- Python included.

You should not view languages as rungs on a ladder.

Quote:

I need this because I'm always stressing out over this (I obviously get stressed easily :S).

Then get over it. The most important thing is that you stop wasting time researching "the best way," and actually get something done. You need to break this habit of vacillation and get on with actual, practical application.
zyrolasting
zyrolasting
Quote:
Basically, what I'm looking for is a "learning path" for a beginner


If we had a one-size-fits-all system that could teach people to be effective programmers, you wouldn't need to look for it. There isn't really a path at all. You are going to enter a long sequence of stupid mistakes that will make you more effective, and the order in which these mistakes occur is uncertain. Just push onward and be ready for harsh criticisms and failures.

Quote:
but just a general thing is what I need. (Like, what languages to learn and in what order is best for a beginner)


Important general skills are not that technical.
I would highly recommend doing the following:

- Learn to read documentation. It tells you everything you need to know about some technology.

- Be able to tell others what you are doing and why in plain, concise English that a monkey can understand. Get only a little more technical if you really have to. This knowledge comes in handy when documenting code.

- Discard superfluous details or hold them off until later. Or, as most people put it: Keep it Simple, Stupid!

- Prepare for the worst. Use version control systems like Mercurial.

- For the love of God, do not program when you are tired. You will HATE yourself the next morning.

- Know that code reflects your thinking. Convoluted thoughts equals convoluted code. If code does not work, clear sight of a goal will still make debugging easier.

- Separate design from implementation. They do not do well together.

- People have worked to make your life easier. Reuse their code. Don't worry, licensing is rather foolproof. Just know what third-parties are asking of you and grant their wishes in order to use their software without risk.

[Edited by - zyrolasting on August 5, 2010 1:12:25 PM]
mrguyman
mrguyman
Thanks for all the answers everybody! So I think I should learn this:

1.FreeBASIC
2.Python
3.Pygame (with the following games):
-Pong clone
-tetris clone
-Pacman clone
-Mario Clone
4.C++
5.OpenGL and SDL

Anyone else have any other suggestions?
DarthYogurt40
DarthYogurt40
Quote:
Original post by jpetrieDo note that Python is not a "beginner" or "toy" language -- there is no real need to learn C or C++ to make games, you can make perfectly excellent games in just about any language -- Python included.

You should not view languages as rungs on a ladder.


Ditto about not viewing languages as rungs on a ladder, I hope that's not what it sounded like I was implying.

Nonetheless, I do disagree with not needing to know C or C++ to make games. Generally someone who makes games wants to work in the game industry, where, for better or for worse, C++ is still the industry standard. I recommend learning C for my aforementioned reasons, and I feel it makes you a better programmer in general.

That's not saying that you can't make games without them, but that anyone who wants to work as a programmer in the gaming industry should definitely not pass those languages over.
"Verba volant, Scripta manent."
mrguyman
mrguyman
Okay, so I WON'T view languages that way, thanks ^_^ My goal is to eventually make a 3D rpg in XNA, so should I start with C# or should I learn an easier language first, like pascal/perl/python/ruby/haskell?
LightAssassin
LightAssassin
If that is your goal your learning path is set for you.

Download Visual C# Express, a couple beginners books on C#, lots of good free ones around, but having a couple means if one doesn't answer the question, another might. Once you're comfortable with C#, install XNA and get playing with games, the XNA site has lots of good sample games to get you started.

You've actually simplified what you want to do with a goal, so just go for it. No need to bother with other languages if they aren't in your goal.
-----------------------------Ben / LightAssassin
M-E
M-E
Quote:
Original post by mrguyman
Okay, so I WON'T view languages that way, thanks ^_^ My goal is to eventually make a 3D rpg in XNA, so should I start with C# or should I learn an easier language first, like pascal/perl/python/ruby/haskell?


Well, start learning it.

C# is, to my experience, a language that's quite newbie-friendly, since it has stuff like garbage collection, so you don't have to care about 'memory'-management.

Besides that XNA is a good framework with lots of documentation and examples all over the net.

And last of all I would object against trying to learn Haskell as a first language, since it's a complete different way of programming than today's standard Object-Oriented languages. I would advice to learn/try it at a later point, since it teaches you some techniques and skills which can make you a greater programmer in other languages.
"Anyone who has never made a mistake has never tried anything new." - Albert Einstein
ollyb342
ollyb342
Quote:
You need to break this habit of vacillation and get on with actual, practical application.


Completely agree. I started game development with a similar attitude to the OP, and I found myself researching languages and API's more than I was writing code.

If I could go back in time I would tell myself to grab C++ and SDL and crack on! (Which was what I did eventually after a week of research ^^)

Anyway, my learning curve was:

PHP,
Java,
C++,
C++ with Allegro,
#got a 2D sprite moving on screen, felt Godlike.
#made a little pong clone
C++ with SDL,
#made a tic-tac-toe game
#made a little platformer (a dog collecting mushrooms.. =/)
#made space invaders clone
C++ with OpenGL,
#modelled my own garden vertex by vertex
C++ with Direct3D,
#wrote a reasonably good 3D Pong game

so there's the route I took. Hope it helps!

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.