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. Cheers! --- 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://mail.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].
