Re: Starting

Game programming is an extremely complex subject that requires
knowledge of computer graphics and mathematics if you intend to make
something serious. Given that you are at the beginning of your learning
curve, you should probably take the time out to decide on a proper
course of action.

Using a programming language is much like writing an essay, except that
at the end of a session you expect a program to do something. One
measures a language mainly on two grounds:

1) It's efficiency, or how quickly the computer can perform the tasks
given it.
2) It's expressiveness, or how quickly and descriptively you can
describe your tasks to the computer, and also how easily you can
abstract complexity.

Learning game programming right away is going to be hard because you
may not have the ability yet to express a game in terms that a computer
may understand - in fact, without the aid of an application, you'll
probably be left without any way to use the computer.

I recommend you learn how to program first, then hone your abilities
and toolset to support game programming. If you delve deep, you'll see
that you have a multitude of languages to choose from - more
importantly you'll notice that you have a variety of paradigms
(approaches to programming) to choose from. Of these, the
object-oriented paradigm is the most productive - it is also a little
harder to learn than the imperative paradigm.

So begin with an imperative language - I like C best, and there are
many free and open soure tools available. I would also recommend that
you program C using the gcc compiler, and maybe even delve into Linux -
the latter will almost certainly improve your understanding of computer
programming and help you learn good program design. If you choose to
stick to Windows, I understand that Borland offers Turbo C++ 3.0 for
free. This is a good learning tool, IMHO. Learning C programming, I
think, instills a certain programming discipline in you that
higher-level languages do not, and it will not hurt you to master this
discipline first.

When you think of switching to object-oriented programming, you'll be
confronted by two choices, given your inclination for game design. C++
is the default language for game design, with most games being written
in this language. It is as efficient as C, and includes OO features
that make complex game systems easier to manage. You'll find many open
source tools for C++ as well - Bloodshed Developer is one that jumps to

There are many, myself included, who think that C++ is an example of
bad language design, akin to pinning wooden legs to a very good dog(C)
and calling it an octopus. Out of personal preference, I'd recommend
Java - it is clean and an excellent language with alot of support and
development aids available. There is an O'Reilley text "Killer Game
Programming In Java" - you might want to take a look at this text after
you've studied the language. You can get Java (J2SE) for free at Know, however, that Java is alot slower than C/C++.

There are other options. Python is a 'generic' programming language
that can be used for both imperative and OO paradigms. A subset,
called Pygame, deals specifically with game programming. Python is
probably the easiest to learn - many programmers recommend it as a
first language, in fact.

There are many options avaialble besides these. MS Age of Empires comes
with a Lisp-like (a functional programming language) scripting language
for its AI. And most C++ games come with copious amounts of inline
assembly, which is hard to learn to read, let alone write.

Like I said, there are many choices available to you - I've but covered
a meagre fraction of all your possibilities. Look around and choose