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

Where do I start?

Started by T0t@L_N00b Jun 18, 2005 at 1:49 AM 14 replies 2.2k views
Original Post
T0t@L_N00b
T0t@L_N00b
I really want to begin to program games, but I dont know where ot start? Should I pick basic, or C++ as my first language? How long will it take to gain a good knowledge? Where do i start?
Fruny
Fruny
Quote:
Original post by T0t@L_N00b
I really want to begin to program games, but I dont know where ot start?


What do you know so far? What is your background?

Quote:
Should I pick basic, or C++ as my first language?


I suggest you start with python.

Quote:
How long will it take to gain a good knowledge?


Depends on the language. Depends on how high you set your sights. Depends on how hard you work. Depends on what you learn from.

Quote:
Where do i start?


Well the info linked to by Drew above is a bit outdated, but you can always have a look at the Forum FAQ
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." — Brian W. Kernighan
n0mad
n0mad
I am also a newbie here and want to ask the same question but don't wanna clutter the boards with any more similar threads.
I did little research on the net of what should I learn and came to these conclusions:
- i need to learn c++ (already know c, which might be helpful)
- a little windows api tinkering
- prefer directx over opengl (because portability isn't that much important) and, thus, i need to learn A LOT directx
- learn some more math, physics, and algorithms so I can apply them in game dev
- learn general basics of game design
- do games in meantime!

Now, I am not asking you dor elaborate comments (but would like them), so you can post simple "yes" or "no", depending on whether I've got these things straight. Thanks!
Spudder
Spudder
Learning C or C++ isn't mandatory for making games - it's possible to make games in languages like Visual Basic, Java or Python. However most games tend to be written in C++ bacause of the languages popularity and it's a lot faster than Java/Basic.

Having some knowledge of the Win32 API will stand you in good stead - in particular for DirectX. You won't need to learn the whole API but knowing how the message loop works and how to create a window will serve you well.

You will need some knowledge of linear algebra and to a lesser extent calculus, for simple 2D games you won't have to worry too much about how much maths/physics you know but if you decide to take the step up to 3D then you will need to know a bit more maths to fully understand the material.

When you are first beginning games programming the emphasis should be on finishing what you start, sure the code may be messy and less than optimum but those are issues which can be addressed later on. First get a good idea of the game development process then later on as you learn new algorithms/designs you can begin to apply them.
Bulma
Bulma
Quote:
Original post by n0mad
- i need to learn c++ (already know c, which might be helpful)


You can also think about using C#, because youll be able to almost completely bypass this step:
Quote:

- a little windows api tinkering


And, you
ll get your games up and running much faster...

Quote:

- prefer directx over opengl (because portability isn't that much important) and, thus, i need to learn A LOT directx
- learn some more math, physics, and algorithms so I can apply them in game dev
- learn general basics of game design
- do games in meantime!


Also, don`t waste time on writing basic math stuff (matrices, vectors) as you have it all in DirectX already...
Bulma
mumpo
mumpo
Quote:
Original post by Bulma
Quote:

- prefer directx over opengl (because portability isn't that much important) and, thus, i need to learn A LOT directx
- learn some more math, physics, and algorithms so I can apply them in game dev
- learn general basics of game design
- do games in meantime!


Also, don`t waste time on writing basic math stuff (matrices, vectors) as you have it all in DirectX already...

True, he shouldn't necessarily spend time writing his own vector/matrix library, but he should still learn the basics of how they work if he is going to do any physics (vectors at least aren't that complicated anyways). Add data structures to that list. Again, most of the time you shouldn't be writing your own code for them, but it helps a lot to be able to if you have to.
jbadams
jbadams
I'd agree with some of the others that Python is an excellent language to learn with. It's much simpler than some of the other common recommendations (such as C/C++) and will allow a beginner to get some decent results reasonably fast, but isn't as likely to impart bad habits as a lot of BASIC variants. After learning the basics of the language itself, the PyGame library provides a lot of the functionality required to create some nice looking 2d games, and after learning the techniques involved in creating games in Python it will be far easier to pick up a language such as C++ as an additional language.

How long it takes to learn depends on a lot of factors - the most important ones being how much time and effort you actually put into learning. Game programming isn't particularly easy, but it can be done and is very rewarding for those who stick with it.

Check out some of the information in For Beginners and the For Beginners Forum FAQ. In particular, if you read nothing else from those (although I recommend you read everything you can), this article is an excellent place to make sure you don't set your sights too high when you're just starting out. You need to learn the basics and start simple, and then later on you can progress to creating your dream game. I'd also just like to make sure you notice the list of basics tutorials in various languages here (in the forum FAQ).

Hope that's of some help. [smile]
- Jason Astle-Adams
n0mad
n0mad
Thanks, guys.
But I guess I was supposed to write what I know already.

I'm very proficient with C and algorithms (I know "C Programming Language" and "Algorithms in C" all five volumes by Sedgewick by the letter, I'm currently reading some Knuth stuff), but I never wrote anything that's not console app (so, practically, I've never used any windows or any os specific functions).
And I'm studying theoretical math, and right now, I signed up for additional college - quantum physics. And, though I'm still a freshman, I do think that I have all the neccesary knowledge in math and newtonian physics (linear algebra, calculus, and classical mechanics).
jbadams
jbadams
If you're already proficient with C, then you may want to look into some C++. Python is probably still an alright choice, but with a background in C you can probably handle C++ if you want to - it is a bit of an industry standard, and there are a lot of resources available.

Getting yourself comfortable with the basics of the language (a few more console apps) shouldn't take you overly long, at which point you could probably try moving into some 2d graphics work. Pong is an excellent first graphical game to make, as is snake. When you're ready to try graphics, you could either learn the Win32 GDI (although it isn't the best thing around for games, you'd have to learn something else later) or try an API such as SDL, Allegro, DirectX or OpenGL.
- Jason Astle-Adams
n0mad
n0mad
Well, I figure DirrectX is best all round choice, if I will programm in C++ for windows, and don't wanna mess with additional libraries for input, sound, etc.
jbadams
jbadams
Quote:
Original post by n0mad
Well, I figure DirrectX is best all round choice, if I will programm in C++ for windows, and don't wanna mess with additional libraries for input, sound, etc.


Certainly - as long as you don't want to go cross platform DirectX is an excellent choice. Once you've learnt DirectX you'll be able to pick up another API a lot faster if you eventually do decide to go cross platform in any case.

OP: I'm still recommending Python to you though, as in this post.
- Jason Astle-Adams
Archetype-Lone
Archetype-Lone
I sugest c++
I started with it and it works fine for me
Can't understand why people say start with stuff like basic and work way up.
Find a good book, give yourself like 3 or 4 months, and start cranking out text adventures
thats when you start to work your way up
----------------------------------------------------------feed a man a fish and you feed him everydayfeed a man a poisened fish and you never have to feed that man again
CyberFox
CyberFox
Read: Tricks of the Windows Game Programming Gurus

It does an excellent job in teaching you game programming, windows programming, direct draw, math, and even introducing c++. You seam to know how to program fine, so I would not learn Python (c is far better for game programming IMO). Mind you python is a fun language to learn, especially for writing web-service-calling scripts (it makes soap so easy). However it is a scripting language, and thus not going to have what it takes to create professional level games (IMO). But yeah, I recommend the above book (get the second edition). Some here may consider it out dated due to its focus on c, however if you want to really know how game programming is done that book will tell you.

Good luck!
SiliconMunky
SiliconMunky
I'd suggest starting by going through some directx c++ demos. Even if you don't know what everything means just keep at it. It'll start to make sense sooner or later.

I started learning C++ by doing the Directx sdk tutorials, as well as tutorials I found online. Drunken Hyena has a great collection of tutorials that I used when I was getting started. I still refer to them when I'm trying new things.

http://www.drunkenhyena.com/cgi-bin/dx9.pl

If you don't have a background of linear algebra a good 3d programming book should outline the basics. You can also google just about any of the math stuff you'll need to know. There is also a wealth of knowledge about math on these forums so just do a search when you're curious about what something does.

Goodluck!
chad_420
chad_420
Whether you want portability or not, its still a good thing to write portable code. Have a look at SDL its awesome, handles just about everything that directx can, and if you write nice code only minor change are needed to port to one of its supported platforms. Not to mention it has(in my opinion) a much cleaner more intuitive interface. If only they cuold keep the docs up to par it would seem to be a hands down choice. Directx's main appeal(for me atleast) is its immense amount of resources availible for learning and microsoft's excellent documentation. Hard choices to make these are, and thats a good reason not to make them, try them all and see which one suits your style best.

Topic Locked

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

Sign in to reply to this topic.