Hello gamers,

Over the last week or so I've really become aware of the fact how far
out of the loop most of you are regarding the development of Mysteries
of the Ancients beta 17. I've been noticing small things like, "why
don't you put back in the 44100 KHZ sounds," or, "why is it taking so
long for this release," etc. Those are certainly reasonable questions
to be asking seeing as beta 16 seams to be a stable and nearly
complete release from your point of view, but as I have said I've not
been keeping you as up to date as perhaps I should. The answer, in
short, is that I've been doing a lot of low-level work on the engine
itself that is going to take some time to complete.

If we take a step backwards and look at beta 14 that was the first
release where we attempted a fully cross-platform release. That
endever failed for a couple of reasons.

Initially I had wanted to convert the engine to SDL which is a
cross-platform API similar to something like DirectX, but is an open
source API designed for Mac, Linux, and Windows. There have been a
number of third-party implementations such as PyGame, SDL .NET, and
JSDL which have extended the API to languages like C# .NET, Python,
and Java. SDL has also been used in several high profile
cross-platform games such as Quake, Civilization, Frets on Fire,
Flight Gear, just to name some of the more well known games where SDL
has been used. So obviously I felt at the time it would be a perfect
cross-platform solution.

Unfortunately, some well meaning fellow developers suggested that I
try SFML instead of SDL. Initially I agreed that SFML was better given
that it supported things like OpenGL, OpenAL, and the libraries were
all aimed at a C++ developer rather than C. So based on that advice I
spent nearly a month rewriting all the G3D engine's subsystem's like
the window manager, input, audio, etc to use SFML and released beta 14
to the public. Immediately after release we got the blue screen of
death problem.

After nearly a month of research we managed to figure out that the
blue screen issue wasn't caused by the Genesis 3D engine, but the
problem resides within SFML itself. When we contacted the SFML
developers to inquire about this problem they said they know about the
problem, and naturally it only effects Windows users. The problem
happened to be connected to certain Windows display drivers, and to
tell my customers to try to upgrade their display drivers. This
solution, however, may or may not fix the issue introducing a certain
degree of instability into the G3D engine and all of my games based
upon it.  Since this was quite obviously a no-go I quickly rolled back
to beta 13, made a few changes, and released Mysteries of the Ancients
as beta 16. That, unfortunately, hadn't resolved the bigger problem of
what to do with the Genesis 3D engine long term.

After releasing beta 16 I once again returned to working on the
Genesis 3D engine trying to fix problems such as the issue with the
display drivers as well as get rid of the context menu that always
pops up when pressing the alt key. Both issues could be resolved, but
would require a massive rewrite of certain subsystems, (modules,) in
the G3D engine. Since I had already tried SFML and it failed, since
DirectX is a Windows only technology, I decided therefore to go back
to my original design and use SDL instead of SFML or DirectX.
Unfortunately, doing so means it will take me some time rewriting and
testing the new SDL code for the engine. So far, though, we are making
good progress.

As of today we have completely rewritten the window module/subsystem
which essentially draws the main application window and binds the
audio, input, etc together. We have mostly rewritten the input
subsystem with fairly decent keyboard support, joystick support, and
we are currently working on rewriting the mouse support. All of this
with one important change over the previous cross-platform engine.

As I might have explained earlier on the mailing list there are two
different ways of handling input. The first is an event driven input
system and the second is a direct input system. Microsoft's
DirectInput API is a fairly specialized piece of software that
bypasses the normal Windows events and acquires direct access/control
of the keyboard, joystick, and mouse providing for lightning fast
input. Unfortunately, other operating systems like Mac OS and Linux
will not allow any API to get away with what DirectInput does so an
API like SFML or SDL has to resort to an event driven system. In most
cases this is fine, but in some extremely high end games some gamers
will notice the input is a bit slower, perhaps a tad bit sluggish, etc
compared to something like DirectX. Well, I think I may have found a
way to resolve part of the problem.

One of the things DirectX does is when there is a key pressed it
stores it in a buffer, basically an array of keyboard presses, and
then acts upon those key presses as quickly as possible in the order
they were pressed/released. I soon realised that there is no reason
why I couldn't emulate this same behavior using SDL, SFML, or any
other API I decided to use. After all, the G3D engine doesn't access
keyboare, joystick, or mouse input directly but instead accesses those
devices vicariously through an abstraction layer. To speed  up input
using something like SDL every time there is a keydown event simply
buffer the keyboard data, and every time there is a keyup event flush
the key from the buffer. As a result the game isn't sitting around
waiting for a keydown or keyup event but is acting upon keyboard
events already buffered in memory. I managed to play a game of MOTA
today using SDL for keyboard and joystick support and I found the
input more than satisfactory. Compared to the older cross-platform
engine input is fairly responsive and quick now that I buffer the
keyboard, joystick, and mouse events similar to DirectX.

To make a long story short I'm still working on attempting to find the
right combination of libraries, tools,  and code to make
cross-platform development possible. I know for a fact it can be done
and there certainly are games out there like Frets on Fire, FreeCiv,
and Flight Gear available on Mac, Linux, and Windows. Commercial
companies do this sort of thing all the time by producing a PC version
while releasing a version for the play Station and XBox as well. The
trick, as I'm finding out, is designing my code in such a way that it
will run identically on all the target platforms, use as many shared
libraries as possible, and change whatever needs to be changed on a
platform per platform basis. I can say that at times this does get to
be quite complicated, and sometimes I have to sacrofice this or that
in order to get maximum compatibility out of the game engine.  At this
point I'm taking a hard look at how cross-platform developers and
cross-platform games like Freeciv address these issues head on, and
how they resolved them to everyone's satisfaction.

Of course, not all the upgrades we have plannd for beta 17 are so
technical. For example, one of the upgrades is that we have in fact
restored the original 44100 KHZ 16-bit sounds to the game. The audio
quality is simply excellent, but it does eat up alot more resources
and I did notice it does effect game performance such as if you press
a key to get some spoken status the speech files take a little bit
longer to load. Perhaps one compromise here would be to leave the
sounds as high-definition, but keep speech at 22500 KHZ in order to
improve performance when getting spoken status messages or using menus
etc.

Another up and coming change in beta 17 is new traps. As has been
requested we have decided to introduce vanishing platforms into the
game. This not only provides us another ttrap to avoid it will also
reflect nicely on the classic games like Montezuma's Revenge which
started this entire project in the first place.


In addition, here is a spoiler for you. Angela will be able to find a
new item, an enchanted spear, which will come in handy for slaying
certain monsters in the temple. Plus the long awaited body armour will
appear somewhere in the temple which will help Angela become more
resistant to certain attacks such as flying arrows, swords, daggers,
etc.

So to answer your question, "why is it taking so long," the answer
simply is that beta 17 is a pretty major upgrade. There are a number
of extensive changes in the work with the engine as well as some game
play elements too. I still don't have a clear idea when it will be
ready. After all, this is the Christmas season and things are very
very busy right now. All I can say is I am working on it here and
there as I find the time and energy to focus on the project. Rest
assured when i have a better idea when it will be ready I'll say so.

Sincerely,
Thomas Ward
USA Games Interactive
http://www.usagamesinteractive.com

---
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/gamers@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