Hi Dark,

Well, I would like to start out by saying that this is comparing
apples to oranges as Quentin's situation and my own are very different
from a development standpoint. Quentin's playroom is hosted on a
server which means the majority of the game actually runs physically
on the server. All Quentin has to do is write a client which can
communicate with the server and that's fairly easy to do. Even if he
had to rewrite the client  totally from scratch that is not quite the
same thing as my own situation.

Let's use the RS Game Client as an example here since it is
cross-platform and does pretty much the same thing as the Quentin
Playroom. The cross-platform RS Game Client is written in Python and
uses a number of cross-platform components like PyGame for input/audio
support, PyTTS for text to speech output, etc. That is all well and
good because really all the client does is create a cross-platform
user interface that connects to the RS Games server. The RS Games
themselves are all hosted on the network and all the client has to do
is connect and provide basic input, audio, and text to speech
services. Plus we are talking about simple board games like monopoly
and card games like Uno. They don't require the kinds of features
MOTA, Raceway, or anything similarly advanced really requires.

So that's in large part why I couldn't use Python myself. For one
thing PyGame is based on the Simple Direct Media Layer, (SDL,)and I
can say from personal experience it doesn't offer all the same
features as DirectX for Windows does.  While it has joystick support
its fairly generic, doesn't work with every joystick, and doesn't have
force feedback support. Its 2d stereo panning is so-so, not as good as
DirectSound, and its 3d audio support isn't as good as FMOD, OpenAL,
or XAudio2.  While these issues aren't a big deal for something like
Quentin's Playroom or RS Games game client they are a big deal for the
USA Games G3D engine because PyGame and LibSDL doesn't really offer
the features I need to produce a game like Mysteries of the Ancients
or USA Raceway. Which brings me to my point.

The problem I faced as a developer is I needed a cross-platform window
manager, input manager, audio manager, text to speech system, and a
way to serialize my data objects consistantly on a number of different
platforms without changes. I could do that using SDL for input, audio,
and a generic window manager, but as I've already said SDL isn't
nearly as good as DirectX. If I want to support a high-end racing
wheel with force feedback for USA raceway I couldn't do it using SDL
since SDL's joystick support is generic at best and practically
useless for certain input devices at worst. SDL's audio API, SDL
Mixer, would allow me to pan sounds left/right and adjust the volume,
but the problem was  it doesn't sound the same way as DirectSound's
pan control is. That is to say you couldn't really tell if an enemy is
nearby or far awayjust by listening to it.  In SDL the sound is either
left or right, and you couldn't really do much about making it sound
near or far which made it less than perfect for MOTA.

Basically, what it boils down to is SDL, PyGame,  and other open
source APIs don't offer the features I need to produce a high quality
side-scroller or 3d first-person shooter, because the audio mixer and
input support is too generic for my needs. A sighted gamer wouldn't
care if the audio isn't precise because they have the graphics for
that, and aren't 100% dependant on the audio output like we are. The
keyboard and mouse input in SDL is fine, but joystick support leaves a
lot to be desired. So if I wanted to write board and card games such
as Monopoly, Uno, Yatzi, whatever SDL is perfectly fine, but for
something as complex as Shades of Doom, Tank Commander, Mysteries of
the Ancients, for get it. That's why I had to end up sticking to
Windows for MOTA, Raceway, etc. There isn't a good cross-platform
solution for more complex games like I have in mind.

As for quentin he shouldn't have nearly the problems I had because all
he needs to do is write a cross-platform client in C using SDL for
keyboard input, basic audio output, and networking.His requirements
for the client aren't nearly as  extensive as the Genesis Engine are,
and since most of his games work on a server anyway all he really has
to worry about is the user interface/client for the target machine. In
my case I had to rewrite huge parts of the game engine, and then
modify MOTA by hand to make sure it was compatible with the
cross-platform engine.  That's what took so aweful long, and after all
that work I found out the new engine wasn't nearly as good as the
Windows version so I scrapped the cross-platform engin in favor of the
stable Windows engine.

As for myself and developing cross-platform games I still intend to do
it when I have time, but I'm now more realistic of what is possible
using open source APIs like SDL. I could certainly port STFC to Mac
and Linux because it does not require 3d audio, force feedback game
controllers, or anything like that. All it needs is generic keyboard
input and basic audio output for sound and speech. I suppose any kind
of strategy game or  an RPG game like Entombed could be done using SDL
because those types of games are more move based and just don't need
high-end audio or input support.

For example, in Entombed the positioning of the doors and wind sounds
don't necessarily have to be precise. I could use SDL to set the sound
position to -90 for west, 0 for north, 90 for east, or 180 for south
and that's close enough for our needs. We don't have to worry about
things like dopler and roll-off as the sound of the doors and wind are
there to give you a general idea of where doorways and hallways are
rather than a specific location. In a real time first-person game like
Shades of Doom you need pretty accurate real time information about
doors, hallways, monsters, and items and SDL Mixer just doesn't do as
a good a job as DirectSound or XAudio2  when it comes to that kind of
specific real time audio output.


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
All messages are archived and can be searched and read at
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