Where to start

From Gamedev.org wiki

Game development is a time-consuming process no matter where you start. However, good planning can help you make the most efficient use of that time.

You may want to start by answering these questions:

1) What Part of Game Development Do I Want to Focus On?

Most people who are new to game development don't realize just how much goes into it. A digital game is made up of many pieces: software code, 2D art, 3D art (if the game is 3D), sound, music, network code (if the game is multiplayer), and a solid game-mechanic design to bring all these pieces together.

This is probably the most important step in getting started. If you are new to the discipline that you decide to move foward in, it is going to take you some time to get to a level where you feel comfortable and are productive. If you are looking to simply get a game together quickly, you may be interested in using a premade game maker or doing a mod for one of your favorite games. This will atleast give you some experience in the process and give you an idea of what kinds of things game developers are required to go through. Alternativley, if you are interested in honing your skills in a particular area, find a pre-established team of developers who may be enlisting help. Odds are you won't get paid, but the experience could be more then worth it and if your lucky enough to find a good team you'll be able to possibly meet some great mentors as well.

2) What kind of game do I want to make?

If your game is 3D, multiplayer, complicated, or fun, you are vastly unlikely to make it in your first 5 years of game development. Fun is incredibly difficult to do, and complexity management is a skill that can only be honed with experience. Multiplayer is a whole other discussion.

Your first 50 games will suck; might as well get them out of the way now.

3) Okay, now that I've pared down my game design for the time being, what should I consider in terms of tools?

It really doesn't matter what you pick, but some languages are more popular than others and will provide better support for your objectives. Some of the most common right now are:

  • C++. Often difficult to get started with, but is by far the most used language in the games industry today. C++ code must be recompiled or ported to each new platform you wish to support.
  • Python. Generally used as a scripting language in industry, this was originally developed as a language to teach the concepts of computer science to new students; however, unlike other teaching languages it is powerful and offers concepts (such as Lambda functions) not found in other languages.
    • Popular APIs for Python are Pygame (http://pygame.org/) and PyOpenGL (http://pyopengl.sourceforge.net/), which run at native speeds. Code written in Python can be run on any computer with a Python interpreter (Windows, Linux, Mac OS X, some mobile devices and consoles).
    • Tutorial you might want to read: Python Baby-Steps Tutorial (http://www.coolnamehere.com/geekery/python/pythontut.html)
  • C#. Microsoft-developed bytecode language which is gaining ground quickly due to its easy use of native-code libraries. Code written in C#, as long as it uses the proper APIs, can be run on any computer system which the .NET runtime has been ported to (Windows, Linux, Mac OSX, PS2/PS3Linux).
    • A new benefit is that you can use the Microsoft XNA API, which currently only works on Windows and the Xbox360 (but is being gradually ported to Linux and MacOSX as well as other consoles via the Mono.Xna project), to develop independent games.
    • Popular APIs for cross platform development on C#: [Tao project (http://www.mono-project.com/Tao)], SDL.NET (http://cs-sdl.sourceforge.net/index.php/Main_Page), Axiom (http://axiomengine.sourceforge.net/wiki/index.php/Main_Page), Agate (http://agate.sf.net)
  • Java. Recent major development on the language is attempting to turn it into a major competitor to C#. Its age makes for a large variety of documentation and mature libraries. Code written for Java, as long as it uses the proper APIs, will run on any computer system with a Java runtime (Windows, Linux, Mac OS X, several consoles, cellular telephones).
    • Popular APIs for Java: JOGL (https://jogl.dev.java.net/), lwjgl (http://lwjgl.org/), SDL Java (http://sourceforge.net/projects/sdljava/)

4) Why is it taking so long to get something pretty on the screen? I hate this text based crap.

In order to properly understand why things are working the way they are, you must understand the internals of your language. For C++, that involves knowing pointer operations cold (Try the Binky Pointer Fun (http://cslibrary.stanford.edu/104/) video), and knowing how to build, inherit, override and delete objects as appropriate (without any memory leaks).

Is most of this stuff going to happen with a text-based program? Yes, it probably will. Once you get past that point you should have the tools to deal with any API that comes along the line. If you just keep copying tutorials you'll never be able to figure out where a bug in your use of the API is, because you won't understand the code you're copy-pasting from the tutorial. Sit down, take your time, work on it. It's worth it for that rush of pride later on.