Jan 9, 2013

Goodbye XNA, Hello SharpDX


I've been using XNA since the beginning. I liked this platform a lot because it allows me to write something that runs both on PC and Xbox 360.  And it is even possible to monetize your games on Xbox 360 Indie Games channel.  However, the importance of XNA games on Xbox Live turned out to be very minimal, and MS changed XNA a lot to support Windows Phone 7.0.  From that moment, (XNA 4.0 I believe), XNA became somewhat awkward.  PC and Xbox 360 became second-class citizens, i think.

Still I used XNA quite often.  It was a great tool to prototype anything. Its contents pipeline and ability to use DirectX in C# really gave me a huge advantage to make any demo in it.  For example, I even made the demo for my SIGGRAPH presentation in XNA.

Now XNA is dead because Windows Phone 8's not gonna support it. WinRT is apparently the new winner....Also Visual Studio 2012 doesn't support XNA officially. (an unofficial way exists, but whatever?) Sure, one can still stay behind with Visual Studio 2010 and XNA 4.0, but now XNA, aftert being neglected for a while, has some limits.
  • no 64-bit support
  • only supports DirectX 9 (no DX11 support)
So now time to find an alternative.... The reasons why I liked XNA were:
  • C# support
  • contents pipeline

So I just need to find an alternative which covers these two... right?

C# Support

There are two major libraries that supports DirectX in C#, or any .NET language:  SharpDX and SlimDX. Both libraries have almost identical API, thus the usage is very similar. Furthermore, both supports 64 bit. I needed 64-bit support for my recent work, so I tried both libraries, and decided to go with SharDX for following reasons:

  • SharpDX is faster (less overhead on API calls)
  • it's easier to install SharpDX(simple DLL file copies)
So with SharpDX, C# support issue is covered

Contents Pipeline
Honestly, I still don't see anything that's comparable to XNA's contents pipeline yet.  Texture is not a big issue since both C# and SharpDX's DX calls support textures pretty well. When it comes to other asset types, such as audio and mesh, it's still not that easy.

One good news is that Visual Studio 2012 contains an example which loads FBX files, I heard, and I believe Microsoft will enhance this side for WinRT, if they are really betting on Windows Phone 8. So maybe it's just matter of time?

I wish I had some time to make pretty solid contents pipeline for SharpDX or something.... But by looking at my schedule for this year, I don't think I'll ever get to do it.


My Conclusion - SharpDX
So I decided to live with SharpDX for now. My main reason was the 64-bit support.  My prototype's already using more memory than what 32-bit application can handle. I'm not worried too much about textures and mesh support... For other contents types, I'll solve the problems when I need them.


Update - Jan 12, 2013
Nicolas just told me his Assimp.NET can handle some asset import/export and it's actually used by SharpDX too. So if you need an asset pipeline check it out at http://code.google.com/p/assimp-net/ Apparently FBX files are not supported yet, but since there's already FBX SDK from autodesk for free, I would think it's just a matter of time.


Jan 4, 2013

Legendary Football Player, Dale Winners

I used to live in a townhouse with a very spacious basement, which my friends and I used to hangout, drink, do some random jams/recordings and sometimes work together. And this is one of the recordings we did... (or should I say Dale did because he's the only one doing all the voice acting?)

It's been in my HDD for the last 2 years, and I finally decided to edit it to show it to the world because it's hilarious.  Enjoy



Jan 3, 2013

Another Useless Meeting


I don't remember exactly, but I think it was a presentation on how Apple works internally. A few key points I thought  cool:
  • Every meeting must draw some decisions(action plan)
  • Don't even bother to do a meeting if no decision will be made
  • Don't include any employee who has no authority to make decisions
Personally, I don't enjoy wasting my time in useless meetings: I'd rather go back to my desk and do some coding, so I liked the idea.

Later, I actually found myself in a meeting, which followed the above rules very faithfully, but still managed to waste my time. Better, it was even a very lengthy meeting. I won't go into too much details about what was discussed in the meeting. The problem of the meeting was not that it didn't make any decisions: it actually made decisions, lots of them. And the decisions were very sensible. However, those decisions were very obvious even before the meeting to anyone and no other decisions were even possible to be made.

I think the following should be added to the above rules to save my time.
  • Don't even bother to do a meeting if only one decision can be made from it