Hello everyone,
As some of you may remember over the past few months I have slowly
been working on rewriting the USA Games developer documentation for
our developer’s website. At this time the developer site is still
down, but I have started once again working on the web pages,
tutorials, and programming documentation for new game developers. As a
result I have recently made some decisions where I am planning to go
with the new programming and developer documentation for the USA Games
website.
The first problem was deciding on what game programming API to
officially support in the USA Games documentation. As there is a good
solid dozen game APIs out there like SFML, SDL, Microsoft DirectX,
Microsoft XNA Framework, SlimDX, etc it was fairly hard to settle on
any specific API to get started with. A lot of it largely depended on
fairly specific factors like what programming language you were going
to use, what platform/platforms you were going to support, what
features you needed, and things like that. I felt trying to support
all of the possible combinations of programming languages and APIs was
an incredibly daunting task. Not to mention confusing for anyone new
to game programming and game development in general.  So I decided to
research all of them and find out which API had the best features,
most cross-platform support, was the easiest to program with, etc.
fortunately, after months of research I’ve found what I’m looking for
in this regard.
Thanks to my months of research and testing I’ve decided to update all
the documentation to officially use SFML. SFML, the simple fast
multimedia library, is a cross-platform DirectX-like API for Mac OS,
Windows, and Linux. As game APIs goes it is very easy and straight
forward to use. In terms of programming languages supported I know it
officially supports C, C++, Python, Ruby, C# .Net, and Visual Basic
.Net for sure. So right off the bat this API can be used with most of
the popular programming languages out there today.
One of the features that really caught my attention right away is the
fact that SFML acts as a front-end for various other open source game
APIs such as OpenGL and OpenAL. Both of these APIs usually ship with
Mac OS and Linux out of the box, and are considered to be as good as
Microsoft’s Direct3D and DirectSound APIs for windows. SFML’s input
handling is fairly decent, and is almost as good as DirectInput in my
opinion. So what I’m saying here by switching the documentation to
SFML instead of the Microsoft APIs like DirectX or XNA you, the gamer,
aren’t going to lose out in terms of a lot of high-quality features by
learning to use SFML instead. It is not only easier than either
DirectX or XNA it is nearly as good as far as features goes. I’m not
saying SFML has every single feature DirectX has in a strict feature
by feature comparison, but SFML can certainly be used to create
high-quality games right up there with GMA’s Shades of Doom and Tank
Commander pretty easily.
Then, there is the whole issue of cross-platform support. While this
may or may not be an issue for some of you personally it still is an
issue to consider. There are a number of blind and low vision computer
users that use Mac OS or Linux instead of Windows as their primary
operating system. I myself use Ubuntu Linux 10.04 as my primary
operating system and only load Windows for certain games or some
project that can only be done in Windows only. As a result there is a
growing market for non-Windows specific games. That’s where something
like SFML comes in handy for a game developer.
For example, here is a simple way you could create a cross-platform
game with little effort using SFML. Let’s say you use a language like
Python 2.6 and want to create a game using SFML. You download install
the SFML C++ runtime libraries and then install the PySFML SDK for
Python 2.6. Once that’s done you can write your game in Python. Once
you are ready to redistribute the game you have a few options how to
redistribute it. You can create a platform executable using something
like py2exe which creates a self-contained Python package with a *.exe
file for that specific operating system. Alternatively you could
simply run the game using the Python interpreter, let it convert the
*.py files to *.pyc files, and then ship the *.pyc files which should
run on any system where there is a Python 2.6  interpreter and PySFML
SDK/runtime.  If you wanted to you could simply post the original
Python source which could be downloaded and run on any platform
without a lot of changes. At most a person might have to reset a few
path variables etc, but this is one way in which cross-platform games
could be accomplished by using SFML and not sacrifice a lot of
features in the process.
The second issue I had when writing the USA Games tutorials and
documentation was simply what programming language to use. There are
quite a lot of them and again what you use really depends on what
exactly you want to do with it. How advanced the game project, what
operating system/platform you are going to use, whether or not you
wanted commercial or free documentation, etc. Lots of choices here in
terms of what programming language/languages to officially support
through our website. Over the past 10 years or so the number one
question I get from interested new programmers is what programming
language should I use?
That is a truly difficult question to answer. Especially, in terms of
documentation, because every programming language has its own unique
pros and cons. In short there is no right answer to that question. You
have to pick the one that is right for you, and if you don’t know
those pros or cons it makes it hard to decide.
For example, in my personal opinion C++ is really the best programming
language for game programming over all. It is supported on every
operating system; there is lots of free and commercial documentation
available, free compilers such as MinGW, and so on. However, despite
all the good things I could say about the language it is not right for
everyone. It is not, strictly speaking a newbie friendly language, and
plenty of things like handling strings of text isn’t as easy or as
straight forward as other programming languages. So obviously I have
to weigh the pros of using C++ for game development against my
intended target audience that is widely made up of people with
absolutely no programming experience at all or those who have only
experimented with languages like Visual Basic. In that light C++ is
not a good starting point.
On the flip side is a language like Python. I personally think the
language is too simplistic, ignoring a lot of coding conventions for
the sake of being easy, etc but that’s just me. The fact is though as
a training language for a new programmer/game developer it actually
would serve as a great intro to game development. Python was designed
to be a light weight, easy to use, scripting language that has grown
into a powerful programming language that can be used to create
anything from a  simple shell script to a full fledge program like
games and screen readers for Mac, Linux, and Windows. The Linux screen
reader I am using now, Orca, was written in Python. The NVDA screen
reader for Windows was also written in Python so regardless of my
feelings about Python the language has my grudging respect as being
able to write anything you want to create quickly and simply. Tack on
an SDK like PySFML and you’ve got yourself an easy way to break into
programming without delving into advanced programming too quickly. I
do think in this respect Python is probably a good starting place for
the documentation.

So what I have concluded is that what I really should do with the USA
Games developer programming tutorials is teach the new programmer how
to program games exactly the way I was taught professionally. For
example, when I was taking my programming courses in college I had to
take a quarter of Visual Basic before I could sign up for a course on
C/C++. After I took the C/C++ course I understood why the course on
Visual Basic was required. Quite simply because I was taught some
fundamentals about general programming using an easier language before
delving into some more complex programming using a language like C++.
In a way what I am going to do is no different. Except instead of
supporting a Microsoft specific language like Visual Basic I’ve
decided to use Python as my newbie starter language instead. It is
powerful, supports SFML, and there is lots of free documentation out
there on the language. Plus it works for a Mac, Linux, or Windows
developer so has the widest possible use for accessible game
developers.
>From there we can progress to more complicated programming languages
such as C/C++ and improve a developer’s programming skills. What I
hope to accomplish here is to keep people from jumping out of the
frying pan into the fire proverbially speaking. Take it one step at a
time and let you, the new developer, take your time and learn at your
own pace. If you find you learn Python and that works well for you
that is good. If you wish to write more professional games  using C++
that documentation will be available too and can give you a more
advanced education. In time I hope to support more operating system
specific languages like Visual Basic .Net as well, as I know there
will be some who want to go that way too, but my aim right now is to
start out very basic and teach an open and cross-platform design from
the beginning. It is my personal opinion that proprietary technologies
such as Visual Basic do more harm than good in the long run as it
limits both the developers’ and the customers’ choice to a specific
technology and platform. Not to mention will cost you, the developer,
more money in the long run to use. Some technologies like AutoIt just
aren’t worth your time realistically speaking. AutoIt is just not a
viable programming technology for serious gaming and its limitations
are numerous. That’s why I feel supporting something like Python,
Ruby, and C++ right off are much better solutions than some of the
alternatives like .Net, AutoIt, whatever. So the languages I have
chosen to document and support are all good for someone on a free/low
cost budget, are well documented and supported, support multiple
operating systems, and support SFML. It doesn’t get much better than
that in my opinion.
The final issue I wanted to address is besides documentation I wanted
to create a central repository for compilers, tools, and developer
kits for aspiring game developers. Somewhere where a newbie could find
all this stuff without having to search all over creation to get it.
Since I know full well my target group is aimed towards blind and low
vision developers on  a fixed income that meant whatever development
tools and APIs I posted would have to be fairly inexpensive and
accessible. It would make no sense to post something that was very
difficult to use, nor would it make sense to have you purchase a
fairly expensive piece of software like Visual Studio Professional
just to find out if you liked programming games or not. This is
another reason why I have decided to step away from the Microsoft
specific technologies for documentation and instructional purposes.
For one thing while it is true that Microsoft does offer free versions
of their Visual Studio development tools, Visual Studio Express, they
are little more than practice compilers in my opinion. For one thing
they are all hobbled in some way missing tools, libraries, and
features you can’t get unless you purchase Visual Studio Professional
or Enterprise. For example, if you were a Visual Basic .Net developer
and you want to keep hackers/crackers from pirating your game you will
need a tool called dotfuscator which will insure the executable can’t
be decompiled back into Visual Basic source code, and the MSIL code
isn’t readable. If you want Dotfuscator you have to buy Visual Studio
Professional. If you want to use the official Microsoft Setup
Installer complete with DirectX, .Net, and other dependency checking
you need Visual Studio Professional. If you want to recompile your
game for a platform other than the default one such as a 64Bit
processor you are out of luck. You definitely need Visual Studio
Professional. That one more than any of them really bites because most
of the computers sold over the past couple of years are all 64Bit
machines which makes that a real serious problem for game developers.
If you use Visual C++ Express there are a number of core Windows
libraries such as ATL and MFC support that doesn’t ship with the
Express compiler. For all those reasons you kind of get the idea that
other than using Visual Studio Express for practice or simple
application development Microsoft isn’t going to give you much without
paying the big bucks up front.
Then, there is the accessibility issue. Recently I upgraded to Visual
Studio 2010, and immediately regretted it.  As is Microsoft’s current
trend Visual Studio 2010 is far less accessible than Visual Studio
2008, and despite trying to script it, make set files for it, I
eventually decided to go back to Visual Studio 2008. Just like Office
2010 is less accessible than Office 2007 Visual Studio 2010 is just as
equally less accessible than Visual Studio 2008. To be honest this
trend  Microsoft is on has me just downright disgusted with all their
software products right now. To make a long explanation short I don’t
feel Visual Studio 2010 and later is a direction that we, as blind
game developers, should go just because Microsoft appears to be making
less and less effort to produce accessible development tools and APIs.
In my personal experience the tools that always worked best for me are
the simple commandline compilers and tools that can be run from the
Windows command prompt or from a Linux terminal window such as MinGW.
While those compilers are constantly being upgraded  and new versions
are coming out they are just as accessible now as they were ten years
ago. They are free, are fully featured compilers, and are for the most
part easy to use once you know how to use them. Best of all if you use
the same compiler on Mac, Linux, and Windows it is a simple case of
learn once use anywhere. For example, if you did something like
Gcc game.c –o game
That would compile game.c and create a binary executable file called
game.exe. Since gcc, the GNU C/C++ compiler, is available for several
different platforms it is an excellent development tool for C and C++
developers. It actually is probably the most widely used C/C++
compiler in the world  and it costs you nothing to download and use.
Its only drawback is that it doesn’t come with a IDE, graphical user
interface out of the box, but there certainly are free IDEs floating
around for gcc/g++ if you need or want one.
Basically, what I plan to talk about and support in my programming
documentation are simple and basic programming tools that are usually
free and that have helped me over the years. For example, even though
I own a full copy of Visual Studio 2008 Professional it might surprise
many of you that the majority of the programming done on Mysteries of
the Ancients was done in a Linux text editor called Gedit. For those
of you who don’t know Gedit is essentially a Notepad-like program that
ships with most distributions of Linux with a few extra goodies like a
spell checker, dictionary, multiple document support, and so on. In
other words nothing fancy. Just a basic text editor that happens to be
fairly accessible and can handle several text documents or source
files at once. I could have used Windows Notepad or something equally
generic if I really wanted to.
In short, one of my college professors had a motto he often used which
was, “keep it simple stupid.” As it happens that advice has proven
itself to be as true today as it was back then. Often times the simple
tools like Notepad, Gedit, whatever are just easier and more
accessible than the big expensive tools like Visual Studio. Often in
my experience most of the programming books I have read that talk
about Visual Studio spend pages upon pages giving directions to point
here, click that, drag this, and drop that, and so on. Books like that
just end up being both frustrating and useless, because we don’t work
that way. Even though there are usually hot keys to accomplish the
same thing I’ve found why bother fooling with a big graphical
compiler/IDE like Visual C++ when I can accomplish the same thing with
an easier and simpler tool. So with that in mind I’m going to follow
my own advice and try and document the tools I use and skip over the
graphical IDEs like Visual Studio until I get into more advanced
topics or if I have to discuss something like SAPI 5 which works best
with visual Studio. However, for the most part there are free and
easier software solutions out there that can usually accomplish the
same with a lot less confusion and are far more accessible too.

Sincerely,
Thomas Ward

Try Linux the free and open source desktop solution. Let’s live in a
world free of Windows and Gates.

---
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