This week we will delve a little deeper into our development process. While the last blog served as an intro story about the birth of Excubitor and the creation of Tesseract Interactive here we will talk about the first, and arguably most important, choice the team needed to make, the choice of a programming language.
C#
As mentioned in the previous entry there are a few choices when it comes to the programming language, all of which offer their own set of problems and advantages.
But for us it was pretty straight forward, Ivan knew C# quite well, so we went with it.
C# is one of the most popular programming languages out there. One notable advantage it has over C++, aside from the aforementioned tidbit that our lead coder knew it much, much better, is that the syntax itself is easier. Another advantage is that there is no need for memory management.
On the flip-side though we have the issue of Garbage Collection. That is the method with which .NET manages the memory. This presents a small problem in game development because all of the objects need to be optimized in order for the memory heap to be small enough for the Garbage Collector, and that puts some constraints with the asset creation.
And last, but not least, C# is the featured programming language of Microsoft XNA, the framework we chose to develop in.
Microsoft XNA
XNA is a free set of tools that work in a run time environment that is provided by Microsoft.
It’s based on the .NET framework, so we have the Garbage Collector and the difficulties that accompany it.
Microsoft released XNA with the idea to promote indie game development on their platforms, Windows, X-Box and Windows Phone.
It is basically a .NET variant of Microsoft’s well established DirectX platform, but focused mainly on lightweight games. Though by saying “lightweight” there is the automatic implication the games are of little contact and lower production values, some developers proved this false and released some of the best indie games of the last decade. Some notable games are: Fez, Terraria, Capsized, Bastion, Magicka and the list goes on.
The framework itself provides a good basis for game development, as well as a lot of libraries (especially math related) that are of great help to the programmer. It’s easy to use and has the capability for fast prototyping. Microsoft also provides practical examples for those interested.
It’s important to note that XNA supports pretty much all features that are available to AAA game developers
HLSL
High-level shading language (HLSL) is a proprietary shading language developed by Microsoft for use with the Microsoft Direct3D API
XEN: Graphics API for XNA
A simplifies writing low level graphics code that helped us make the game rather quickly (as quick as first timers can actually make a game).
While it is no longer in development, it still has great 2D support already built in and is rich with features for easier use of XNA’s graphics pipeline.
If anyone is interested to read more about the technology we talked about you may visit these websites:
Microsoft XNA: Msdn.microsoft.com
XEN: Graphics API for XNA: Xen.codeplex.com
HLSL: Msdn.microsoft.com
Also feel free to ask any questions you might have regarding the topics covered in this post, or anything about the game in general, we will be more than happy to comply.
As always, stay tuned for future updates. We here at Tesseract Interactive thank you for your continued support and interest. Cheers.
Personally I think Java is a better language than c#. It doesn't use memory management though pointers either and it has garbage collection, but it does have multi-platform support. I hear frequently that c# is a Microsoft "bastard child", even though I think it takes a lot after java. It is sad how it doesn't have great 3D engines, except for maybe monkey engine.
Sorry for the slow reply. I was sleeping. :):)
Java is a great language, and yes it is very similar to c#. The Java VM is very similar to .NET also. I've used them both and can't decide which one is better. :) Cool thing about C# that you can use it with Mono, so there's the multi platform support.
Funny thing is that we were also considering Java as an option. Basically our decision went to C# and XNA because that was the language that I've used the most and XNA is really easy to use, although it's only a framework.
For game development C# can be used with Unity (need some $ for that :)), and of course MonoGame which is basically an XNA port to Mono (it has multi platform support). Check it out Monogame.codeplex.com, I think you'll like it.