MDX dies, SlimDX borns, XNA 2.0 appears. And what's to happen in Jade?
Well, as most of you probably know, the MDX samples and
documentation have been deprecated from the August DirectX SDK and all forthcomingreleases. I'm not sure if the redistributable is continuing to ship
with it or if it's been taken out too (I
haven't looked at it to be honest).
This means that the main renderer so far for Jade is now
officially dead from Microsoft's point of view.
I posted a lot about this subject earlier this year when we started to shape Jade 2 features and
objectives and that we had to plan for MDX dying in the future.
Now that the future has come and MDX has died, what can we
do?
1 - continue with MDX. The redistributable for MDX 1.1 will most likely continue to exist (although MS did trick us with MDX 2), so we can keep using it. However, the lack of documentation in the SDK represents MS's lack of support for improvements (features, fixes, etc) to this technology.
2- move to XNA. I personally like XNA and what it can become
for the game industry. While I also think it's quite young, yet the new features in XNA 2.0 (announced some
days ago) are a very big step in the right direction. But for us XNA is just a
another flavor of MDX and no matter how
hard we try we won't be able to run on a 360 because our code is way out of the
scope of the Compact Framework. Without being able to port Jade to 360 (and not planning to do that in the near future), XNA offers very little to us.
3- use a DX wrapper. There's a very good project started at
Gamedev called SlimDX that wraps around DX9 and DX10. We did some tests with it
but we didn't get very far; although it shows a
lot of promise given the talented people working on it. But for us, as we use
very little functionality of DX it was overkill.
4- wrap the needed functionality of DX ourselves. We could write a new renderer in C++/CLI
that calls directly the DX dlls.
The 4th point is the path we have taken in Jade and
currently the C++/CLI renderer is up and doing everything we were doing with
MDX. Well, actually, there's a difference: it's
running much faster than the old renderer :) MS numbers were that MDX was around
10% slower than raw DX but our numbers are showing a bigger difference there
(although our tests are quite simple so maybe this could change as we add more
features to the engine).
This jump from MDX to C++/CLI has also shown us that it will
be easy enough to have several renderers in the new architecture (in fact we
have 3 renderers now: the deprecated MDX renderer, the new C++/CLI renderer and
a very simple fixed pipeline renderer).
So it seems we are going in the right direction as lots
of new and important features are working in the engine so far. These include multiple renderers, multi-threading, support
for multiple scenes,... And much more is yet to come :)