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 __ Gamers@audyssey.org
If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org.
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/gam...@audyssey.org.
If you have any questions or concerns regarding the management of the list,
please send E-mail to gamers-ow...@audyssey.org.

Reply via email to