Game Project Update
Lots of progress on the game front, sort of. We have a name for the project, finally: Y.M.F.A.S. Or Ymfas, or ymfas... not sure of the format, but that's definitely what it's called.
About two days after the last post on the subject, we scrapped the "roll your own" route and decided to go with Irrlicht for rendering and ODE for graphics. Both are C/C++ native, so we used IrrlichtNETCP and Tao.Ode, respectively, as .NET wrappers. IrrlichtNETCP is pretty solid, but Tao.Ode had some issues.
For one, ODE is fairly low-level. This isn't all that bad for C/C++, but Tao.Ode is (I believe) one big PInvoke, so you end up with something fairly unusable in C#. For instance, the math types do not have overloaded operators in C# (though they do with C++). Furthermore, all of the ODE resources are translated into IntPtr's, which screams of type safety for any large-scale use. I even started building a wrapper on top of all this to cover up the gritty non-managed details, but that'll have to wait a little bit.
I later learned that MonoDevelop also sucks. Well, that's not quite true. Mono is great, and MonoDevelop is decent. However, it's a long way from SharpDevelop, the IDE that it was orignally a port of. OTOH, SharpDevelop is a long way from VS 2005, which I also get for free. So, with this in mind, I decided to scrap the lofty goal of cross-platform goodness.
So now that development is officially Windows-only, our options open a little bit (not as much as they would if we were using C++, but still...). So, after looking at the other side of the fence, we're tentatively using MOGRE and MogreNewt, .NET wrappers for Ogre3D and Newton Game Dynamics. This has the unfortunate downside that most of the code that I've already written pretty much goes to waste. Oh well. Let's see where it goes.