Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am self-learning programming for video games. I have learned:

  • Basics (variables, loops, branching, etc.)
  • Object Oriented (classes, objects)
  • Functions
  • Dynamic Memory Allocation
  • Operator Overloading
  • Aggregation
  • Inheritance and Polymorphism
  • Swallow Copy And Deep Copy
  • STL Libraries

and I am learning I/O Files. What is next? Thanks for the help.

share|improve this question

closed as not a real question by Tetrad Oct 21 '11 at 18:47

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

Duplicate of… ? – Ray Dey Feb 24 '11 at 18:42
Also look at… – The Communist Duck Feb 24 '11 at 19:23
What horrible C++ book / tutorial is this the table of contents for? – user744 Feb 24 '11 at 23:38
@Joe Wreschnig most C++ books over 5 years old? :( – Ray Dey Feb 25 '11 at 0:09
I lol'd @ OO before functions an memory allocation – michael.bartnett Feb 25 '11 at 5:11
up vote 3 down vote accepted

Developing games is a whole different story from learning programming languages. To make any interactive applications, you need to know (at least)

  • how to handle user input (mouse, keyboard, joystick, etc)
  • how to draw something on screen (this will be your first challenge unless you are making text-based-game)
  • how to play sound (game without sound? no way! :)

Those three things are heavily related to OS you are developing on. You can use just plain OS API functions to do all the above things. Sometimes, they even offer better API functions specifically for multimedia applications like "a video game". Windows offer DirectX. Other OS (like iOS) supports OpenGL. There are even many other libraries or tools which enables you to draw complicated 3D model with an animation by writing a few lines of code (or even without writing any code). They are the Game Engine like XNA, Unity, Unreal, etc.

It is totally up to you what you use but you have to understand how the three things are working. Since you are now studying, I recommend that you study OS API functions especially for multimedia related functions without using those handy game engines, and make a really simple game like space invader or tetris. You will realize the simple game is not simple at all and you will know what things you need to figure out. Something like,

  • how to manage game objects (monster, princess, candy, etc)
  • how to handle their states (move, jump, fly, die, etc)
  • how to let game objects communicate each other
  • and much much more. and much more. and much... you know what I mean.

As you know more about game programming, the first three things will be getting less important and the later ones become key techniques for game development. That's why some people might say they are not very important or not even necessary to study. However, I still strongly suggest that you start with the first three things as it will give you strong basis for later game development life.

It will be a long journey but should be fun. Good luck! :)

share|improve this answer

You will want to start dealing with hardware soon. This takes the form of a few self contained areas that you can get into like Rendering technologies (Anything from Flash to Direct3D or OpenGL). User input from keyboards, mice and game controllers is another area of hardware to deal with. Audio programming. Networking.. All of these areas go together to make games along with basic programming knowledge mentioned above. I just recommend more than anything to take things one at a time.. People who are just starting out tend to try and go to recreate their favorite game, but games these days are very complicated pieces of software. Try and learn one thing at a time, user input, audio output, simple rendering or the like, but do them with very simple 'games' in mind if at all. Learning to program technologies and learning to program game logic and systems at the same time can become very cumbersome.

share|improve this answer

A lot would agree with me that being good at programming is more about practical experience, than theoretical knowledge.

If you're interested in making games, use what you've learned to make a game. If you don't know graphics libraries, you can make a text based adventure. You'll see that there are many more problems in programming than just learning a defined set of steps.

Once you have a game, or while you're making it, ask yourself "what would make this game better?" and you will mathemagically find that the answer to that question is the same answer to your original question.

share|improve this answer

You should learn OpenGL next, great way to render graphics.

share|improve this answer
I'm not -1, but diving straight into GL with a basic language understanding will just kill most people. – The Communist Duck Feb 25 '11 at 10:37

Not the answer you're looking for? Browse other questions tagged or ask your own question.