Microsoft XNA Open XBOX development
For a while now, I have been wanting to build some type of open-source gaming console. It always seemed that the gaming industry would be much better served, if the console manufacturers were not in charge of determining the “quality” of the games produced, and therefore which games stores would carry. I do have to say, however that I had expected Nintendo to be the first to open up their console. That is not to say that they won't, but I had hoped that they would allow for more independent development on the platform.
There are tons of benefits to opening up console development and allowing smaller companies and individuals to create games. It is clear that Microsoft would have the lead in building a programming language that would allow developers to build games easily. I may have even in an earlier blog indicated that I believe the XBOX platform will always be easier to work with than the PlayStation due to Microsoft's proficiency with programming languages. I have only, the same as almost everyone else, read the release notes, and coming soon news on the XNA game studio express suite, but it sounds like it will be very powerful and somewhat easy to work with.
I've also over the past few months been working with C# and DirectX, trying to learn the DirectX API, but stick to my “managed code” thoroughbred. Part of the problem though is that DirectX is really unintuitive. Don't get me wrong, compared to some of the ways in which to work with OpenGL, DirectX is a breeze, but it is still pretty far off from what even a fairly conditioned programmer is used to. Much of the problem is the lack of a clear concrete object model. Not an object model as in Object Oriented Programming, but an object model in a 3D sense. If you work with something like 3ds Max or Blender, you are used to understanding how real objects interact in a 3D space, because you see them, and because they have understandable relationships. Once you get into DirectX however, everything is really manual. Most of it is just that I am somewhat of a newbie with 3D game programming, but the entire thing feels like working with something in its infancy. It seems that the XNA studio will help with this, and there are other 3rd party tools that help to visualize what is being created. I'm slowly building up a library of classes to make things easier, but that takes time. Lots of the frameworks out there are really good, but they are too powerful and too much is exposed for a beginning user. It seems like its really hard to make a general 3D framework since everyone uses DirectX for really different applications. Most of the general stuff is taken care of in C#, but some of the high-level functions like collision detection with meshs, etc, are somewhat challenging to grasp where to my understanding, an object in 3D space would always need to have a listener for potential collisions. It should simply be an attribute of the mesh. Sure you could write this stuff, but if you are just one guy with an idea for a game it helps to be able to do more yourself in a shorter time.
I am glad that Microsoft is addressing the issue of opening game development. Hopefully it will increase the level of competition between independent studios and the established game companies and increase the level of the dismal games, and profit-hunting-by-sequel behavior of the big game companies. I think that what Microsoft is doing is an indication of how much the company is changing. You know, if they keep this up, I just might start to think that they are a company that cares about advancing the art.