Hi Chastity,
That is sort of a complicated and difficult question to answer directly
because every programmer has his or her own opinion on what is
considered the best programming language to use for game programming.
Several accessible game developers here such as Jim Kitchen use Visual
Basic because for one reason or another they have never learned more
professional languages like C++ or the newer .NET languages. Some like
7-128 use Java for all of their games and software projects, and are
quite happy with Java for game development. Philip's new game, Q9, is
written in C++, and Philip would likely tell you C++ is the best
language to use. As for myself both STFC and Mysteries of the Ancients
are written in C# .NET, and therefore I think that is a great language
for writing games in. So when you ask a question like yours you could
get any number of different answers to your questions, and several
reasons why or why not to use this or that programming language. Like
religion it is more a matter of opinion which language is right or
wrong, which is the best, whatever. For that reason I'll try and give
you an indirect answer to your question that is more a general overview
of the various options to you.
First, we have the C++ programming language. It is widely regarded by
developers all over the world as the best programming language because
it allows you to write some very low level code, create native binaries
for a specific platform/operating system, runs faster than any other
programming language, is quite flexible, and almost all the game
programming documentation out there is written for a C++ programmer, and
your game APIs such as DirectX, SDL, XNA, and so on are primarily
created for a C++ developer as well.
However, many critics of the language say it is too hard to learn, that
it is to advanced for them, and that it goes way over their head. Plus
it places much of the responsibility of performance, memory management,
etc on the shoulders of the developer who may or may not be very skilled
in such things. Never-the-less some games like Q9 proves how good a
language C++ is at creating a game in the right hands.
Second, In 2002 Microsoft introduced a new development API for Windows
called .NET. One of the new languages specifically created for this new
API was called C# .NET, (C-Sharp,) as it looks a lot like C++ or Java,
but is actually much similar to learn and use. Do to the fact it is
easier to learn and use many non-professional programmers began to adopt
the language for general programming uses and for game programming in
particular. Microsoft's XNA Framework and XNA Studio actually uses C#
instead of C++ to get more common people interested in game programming.
So far that project has become pretty successful because C# is easier to
learn, the .NET framework handles lower level stuff like memory
management and garbage collection, and the .NET Framework itself his
high level classes and interfaces to lower level Windows APIs allowing a
newby to create fairly complex applications quickly and simply without
all the overhead you would get with a language like C++.
The problem with languages like C# though is that because it is a
runtime language it will run a bit slower than a native C++ application.
Plus the way .NET languages like C# are designed you never get to use
APIs like DirectX directly. you have to depend on third-party managed
interfaces like managed DirectX, SlimDX, whatever to get access to those
APIs. Otherwise you can't access them without a very complex custom
wrapper which is certainly no fun to create if you have to do that.
However, since there are DirectX managed interfaces like SlimDX out
there this really isn't a problem for a new game developer wishing to
use C# for game development.
Third, we have the Java programming language. It too has a C++ like look
and feel, but is much easier to use than C++. Like C# the Java language
is a runtime language and all of its power is the in the JRE, Java
Runtime Environment, which is a collection of packages and classes that
acts as an an intermediary between your Java application and the host
operating system. In that way it is generally cross-platform, allows you
to create games and other applications rather quickly, and is widely a
good language to know.
However, Java has lots of drawbacks when it comes to game programming.
The first being that if you want to use an API other than those included
in the JRE, such as DirectX or Sapi, you aren't really going to find any
easy solutions. It will be up to you to write your own DirectX and Sapi
wrapper packages unless you are lucky enough to find someone who has
done the work for you already. That's not too cool for a totally new
Java user and game programmer.
Plus as we have seen with 7-128's games getting a Java based game
accessible can be a serious pain. They've had to use something like the
Java access bridge for Jaws support, but that doesn't work with every
screen reader so it is not an all in one solution for accessibility.
The could have used theSWT graphics toolkit for access, but that isn't
the standard Java graphical toolkit, and it would take them some serious
time and money rewriting their games using SWT/. They've tried using
FreeTTS in their games, but it sounds too robotic to be very practical
as a good viable speech solution either. Therefore java isn't without
its problems.
Finally, we've got Python. Fans of the language state it is easy to
learn, doesn't require a lot of strict programming rules, and generally
depends on good spacing and formatting instead of lots of brackets,
braces, etc like you see in the C-Style languages. It doesn't use strict
data typing so you don't have to declare your functions and variables as
an integer, double, float, whatever. All and all it is a simple
scripting language that many new programmers find less intimidating and
easy to learn and use. Plus it is cross-platform so is good for writing
non-platform specific code.
However, Python isn't without its own drawbacks. For one thing its ease
of use comes at the expense of more complex and standard programming
conventions. With a language like C++, Java, or C# the ideas,
formatting, syntax, is all similar enough that you can quickly learn the
other languages easily. Not so with Python. Python is Python and most of
what you learn is Python specific, and doesn't carry over well to other
languages. So if you ever decide to switch languages you might as well
start over from scratch.
In terms of game development APIs the only one that is really supported
is PyGame. It is not a bad API, is simple to use, and is based on SDL.
Problem I have with it is it just doesn't quite measure up to something
like DirectX. It doesn't have more advanced features like force
feedback support or true virtual 3d audio which limits your games to
more simple types of games. If that is all you intend to create PyGame
is fine, but if you want something like Shades of Doom then PyGame is
going to fall short for you.
So as you can see there is no one size fits all solution here. A lot
depends on if you want cross-platform support, weather or not you can
settle with SDL or PyGame or you want DirectX, weather you want
something easy which is somewhat non-standard, or if you want to use a
more professional programming language. It is not a simple answer to
give, or simple decision to make.
HTH
---
Gamers mailing list __ [email protected]
If you want to leave the list, send E-mail to [email protected].
You can make changes or update your subscription via the web, at
http://audyssey.org/mailman/listinfo/gamers_audyssey.org.
All messages are archived and can be searched and read at
http://www.mail-archive.com/[email protected].
If you have any questions or concerns regarding the management of the list,
please send E-mail to [email protected].