Choosing a Language

I am a 22-year-old recent college graduate (Oakland University - Major Journalism/Minor Computing) and have been programming games for about 15 years. I started with BASIC and a Commodore VIC-20!

For the past three years I have been head of NOMAD GAMES, an informal freeware (no cost) game software company. I have worked on over 50 games, 10 of which were significant and 3 which were released (available at the web page). These were done using Visual Basic 3.0, 4.0 or 5.0.

In 1998 I learned my most dreaded language, C++, and 8086 assembly (IBM PC/Intel Processor language). In 1999, NOMAD GAMES will cease to exist and I will head a newly named shareware company.

The point of this background information is to show you that there is no "gaming language" or any rules for that matter as to how your video game is programmed, designed or sold. I know about 7 different languages, and all of them could be used for game programming (with varied strengths and weaknesses, of course).

However, regarding which language to use, here is a quick rundown:

[size="5"] Visual Basic

Recommended for the newbie. It has a helpful interface (it will correct your erroneous syntax), a straightforward, WYSIWYG (what you see is what you get) style, and it uses the BASIC language. All the applications it creates are Windows-based. The major downside is that graphically intensive and speed-needy applications (namely games) will suffer. I had to end quite a few of my games prematurely because the interface was too slow. However, if you have it available, I think it is a good start.

[size="5"] C/C++

My most hated language, but many people like it (and I'm coming around). It is many times faster than Visual Basic, but a bit more cryptic and less user-friendly in general. There are many reasons to choose this excellent language, including modularity, which allows you to separate various parts of the program, and, as previously mentioned, speed. It is also the industry standard, so if you want to work for a game company, get used to C++. Another good reason to learn it is that there are excellent C++ compilers out now (which are required to code C++), namely DJGPP, a compiler available over the Internet at www.delorie.com/djgpp/. I am using DJGPP now and I couldn't be happier - it has clear error messages, a straightforward setup and an excellent price- free! And remember, this is coming from a C++ grouch...

[size="5"] 80x86 (or 8086) Assembly language

Probably not for a newbie, though I had an easier time learning this than C++. 8086 Assembly (or Intel Assembly) requires that you micro manage: tell the computer every single move to make and how to make it. This can be tedious, but the advantage is that you can tailor your code around your gaming project, saving extra steps and, in the end, making your game run even faster. Speed increases from using assembly can be over 1000%.

*

The rule is that the harder the language is to learn, the more powerful (i.e. faster, flexible) it is. It is very similar to visiting a foreign country that uses a language you're not familiar with. Your chosen programming language is your translator.

The BASIC languages (Visual Basic, BASIC, etc.) are like you having very little knowledge of the country's language. Your translator makes sure that you express what you need to express, but some things you want to express don't translate well. It also makes doing simple things more complicated and slow than necessary.

With C/C++, you understand the foreign language and can speak it okay, but still need your translator's help. The translator still is working hard, but since you understand the language the whole process is less painful and much more fast.

Finally, with assembly, you almost don't need your translator. Your translator is there just to help you sometimes, but most of the time the translator will be quiet as you communicate. There is less of a middleman, and even though you are doing more work, you are more in control and doing things faster and more efficiently.

*

With all this talk about programming, don't forget about what making computer/video games is all about. Supported by the fact that there is no video game language, the process of making a game, in my experiences so far, is split into two: game design and game programming. Anyone can program a game, but not everyone can make one enjoyable. I had to learn the hard way- there is a reason why most of my games weren't released!

Play video games, search the Internet for sites like mine, buy game magazines... immerse yourself in it. I have at least 250 game magazines at home and have printed and read hundreds of Internet game articles - from starting a shareware business to balanced game design to code for reading bitmap pictures - and I still am learning! There is no limit to what you can learn - except the limit you put on yourself.

If you have any game programming or design questions, feel free to e-mail me at [email="BROWNDAMON@HOTMAIL.COM"]BROWNDAMON@HOTMAIL.COM[/email]. I'll try to answer all the mail that I can and post the common questions on my web page (WWW.GEOCITIES.COM/SILICONVALLEY/PINES/6547/)

Most important of all: GET EXCITED! This is an incredible time. Lone game designers and game design groups are cowboys and girls on the uncharted Wild Wild West of the '90's: the Internet. There are no rules to abide and no limits to what you can do except a budget and your software/hardware (and remember that people made excellent games on the Atari 2600 - you don't need a Silicon Graphics Workstation to convey your vision to your audience).