The long road to game programming.

Started by
9 comments, last by Lute 17 years, 11 months ago
Hey everybody. I'm almost a total noob where programming is concerned. (I've done a few days on the "Teach Yourself C++ in 21 Days" tutorial that someone on these boards mentioned! Whoo!) Anywhos, I kinda enjoy programming. Not only is it wicked awesome to create something by putting together a myriad of bewildering commands, but also a great way to keep up your mental capacity through the years (hah! you just let me know when a programmer goes senile!). Well, I was wondering exactly what steps I should take on my journey of becomming a game programmer. To be more specific, what should I learn and in what order? My very distant goal of the future is (get ready for it) a fully 3d MMORPG. (What else would you expect?) I'm realistic in knowing that it'll be years before I can even attempt this project. But what should I do to get there? Please let me know what I should learn, C++, OpenGL, DirectX, Win32 API, networking stuff, any other random letter combinations. It seems that I should get comfortable with my programming language (C++) first, but what comes after that? When do I get into networking multiplayer games? When should I learn graphics API stuff? It would just be helpful if someone could give me a chronological list of stuff I should learn over the next 10 years or so. Thanks for reading my excessive post.
Advertisement
Quote:Original post by Lute
But what should I do to get there? Please let me know what I should learn, C++, OpenGL, DirectX, Win32 API, networking stuff, any other random letter combinations.

It seems that I should get comfortable with my programming language (C++) first, but what comes after that? When do I get into networking multiplayer games? When should I learn graphics API stuff?


Read this, and UNDERSTAND it: http://www.goingware.com/tips/fundamentals.html

Generally, you won't want to get too familiar with platform-specific extensions, rather you'll want to learn the fundamentals-so that you create a basis for future learning and work.
Meaning, DirectX, the Win32 API, MFC and even C#/.NET is all interesting stuff, but it will hardly be useful in a non-Win32 setting, that is, it is not necessarily generally useful knowledge.
So, you need to concentrate on the stuff that is likely to be relevant regardless of the platform you may address in the future. The general stuff (i.e. C++, STL, BOOST, design patterns,OpenGL, shaders,cross platform networking (OpenTNL)).
It's all about concepts, as soon as you have obtained such a basis, it will be much easier to become familiar even with platform specific stuff (which you'll have to learn inevitably some time...).

You'll learn the concepts just as easily using a platform specific API as a platform agnostic API. Why limit your options around platform availability when learning is your key goal, not multi-platform support?
Quote:Original post by Anonymous Poster
You'll learn the concepts just as easily using a platform specific API as a platform agnostic API. Why limit your options around platform availability when learning is your key goal, not multi-platform support?


regardless of whether you are targetting multiple platforms or not, it's also about directly applicable background knowledge, by concentrating on learning (pseudo-)standards, rather than vendor-specific extensions, you are much more likely to cope with many situations without having to do significant re-learning, so any sort of possibly required transition will be much smoother than it could be when coming from a purely vendor-specific API background. So it's really not about "limiting your options (to multi platform programming)", but rather about those fundamentals that are likely to be applicable in the absolute majority of settings, regardless of the target platform. Hence, if you determine the common denominator, you'll be able to spend your time much more effectively.
Quote:Original post by Anonymous Poster
You'll learn the concepts just as easily using a platform specific API as a platform agnostic API. Why limit your options around platform availability when learning is your key goal, not multi-platform support?

again, you are failing to see the point of the original discussion: it's not so much about multi platform development, as it is about about preferably avoiding framework/toolkit-specific development in general.
For example, rather than learning DirectX, OpenGL is usually a much better idea, simply because of its standards nature among not only many different platforms, but also for a variety of settings-even independently from the programming language you use.
Likewise, much of the STL's basic functionality (i.e. std::string) is implemented in the vendor-specific MFC, nevertheless it wouldn't be particularly useful to have such a MFC background in different settings.
Well if I were to compile a list the following would probably most closely resemble the steps I have taken:
http://www.amazon.com/exec/obidos/tg/guides/guide-display/-/2FRIQOWB2THR/ref=3/104-7670837-8469514
[size="2"]Don't talk about writing games, don't write design docs, don't spend your time on web boards. Sit in your house write 20 games when you complete them you will either want to do it the rest of your life or not * Andre Lamothe
Simple step list (no particular order):

1) Learn a langauge of your choice (C++, C#, etc.)
2) Learn data structures and algorithms.
3) Learn Win32 programming (unless your language already is win32 based)
4) Learn a graphic based API DirectX or OpenGL (never hurts)
5) Try out some various SDK's to run games on (Irrlicht, Ogre3D, Torque)
6) Play around with Physics, AI, Networking.
7) Make a few games and demos to add to your portfoilo.
8) Learn shaders.
9) Hopefully make some sort of team for large games or make really basic networking games alone.
10) Repeat.
Don't forget your math! Especially linear algebra.
Quote:Original post by Anonymous Poster
Don't forget your math! Especially linear algebra.


absolutley...i daresay there is a guide to math 'somewhere' on the internet, or in a book. by the time you're hitting 3d graphics you need to know a bit about maths...certainly stuff like matricies, vectors, normals, cross products etc...
Quote:Original post by Winegums
Quote:Original post by Anonymous Poster
Don't forget your math! Especially linear algebra.

absolutley...i daresay there is a guide to math 'somewhere' on the internet, or in a book. by the time you're hitting 3d graphics you need to know a bit about maths...certainly stuff like matricies, vectors, normals, cross products etc...

mathworld

This topic is closed to new replies.

Advertisement