Is the era of C# for game programming gone?

Started by
14 comments, last by Ravyne 9 years, 12 months ago

Is the era of C# for game programming gone? I read XNA isn't going to be supported or improved anymore. I know that's old news, but I was curious about the future of C# and game programming? Should I skip C# and go to Java? Move to C++? Thanks for opinions.

Advertisement

C# is a perfect language for creating games and XNA is still a amazing and very useful tool to develop games. There are still plenty of other popular game development tools that use C# like Monogame (A open source port of XNA), SlimDX and SDL.Net or engines like Unity or torgue that accept C# scripting.

However, Java is something to look out for, it can be easily ported to many platforms. The syntax is very much like C# so the step to java is just a small one and you can do it anytime you wish.

Unlike many others I would not recommend C++, you need to do twice the work for half the result and it is a very unclear and unforgiving language. I dabbled in C++ after some good experience with C++ but left it for what it was pretty fast. SFML is a nice platform though.

The most important thing is; You just need the right tool for the job. If you want to make a FPS or top down shooter pick a existing engine like UDK or Unity. If you need a bit more freedom further down the mechanics go with C# or java and add some handy libraries yourself. If you want to make the next best AAA title and need all the power you can get then go C++. Profesional AAA title companies use C++ usually, at least to lay the backbone of there engine. However, since the mobile game market is booming Java has become a lot more popular but you can also build android games with C# for example with: http://xamarin.com/android it ports easily between IOS, android and windows devices. Long story short: pick the right tool you comfortable with.

XNA is a wrapper around Direct3D9. Direct3D9 isn't being updated any more (but many games still use it tongue.png)

You can stick with XNA by moving over to MonoGame. You can use Direct3D11 by using SharpDX/SlimDX.

C# is still used for many games -- Unity is based entirely around Mono (which is a 3rd party implementation of .NET), you can use CryMono to replace CryEngine's Lua coding with C# coding instead, etc...

Funny you should ask this, aside from the other great libraries mentioned (personally I use SharpDX, it's a great wrapper for Direct3D...XNA is not the be all for C# graphics programming or game development). Microsoft has announced an interesting upcoming piece of technology called .NET native and their blog announcement. The gist is, write a C# application, then be able to compile it to native code ahead of time, rather than JIT it at runtime. While this has existed in the form of the NGen tool, it looks like they're taking native compilation a lot further with using (or using parts at least) of their C++ optimizer, among other things (watch the video on the first link, they go into detail of the compilation).

Of course, if Microsoft doesn't screw it up (their preview is geared for Windows Store apps). C# and .NET/Mono as it stands now is still great for graphics applications (whether they be games or not, and with or without XNA), but having the ability to essentially run as fast as a native app will make things very interesting.

And....apparently SIMD is coming to .NET:

http://blogs.msdn.com/b/clrcodegeneration/archive/2014/04/03/ryujit-ctp3-how-to-use-simd.aspx

Microsoft's new 64-bit JIT compiler....

Sweet jesus, I think I might faint from the excitement!

Aww man. That means that Java will have it (or something like it) in Java 12 or something :(

Unless project Sumatra gets somewhere that is...

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

I don't think I would call it an "era" for C# or any other language. There are options for all of the languages to make games with. Most of the graphics API's are natively accessible in C++, but there are lots of libraries that can interact with those API's from other languages. In C#, SharpDX is the de facto standard.

So it is possible to use native and managed languages. The real question is which language do you want to use? If you are familiar with C++, then why not just stick with it? If you know C#, use it!

If you want to use an engine, you could use Unreal Engine 4 in C++, or you can use Unity and use C#. Of course there are many other options as well. It just depends on what your capabilities are, and what the needs of your project are - there is no era starting or ending...

Aww man. That means that Java will have it (or something like it) in Java 12 or something sad.png

Unless project Sumatra gets somewhere that is...

Unsigned integers first, please...

"Recursion is the first step towards madness." - "Skegg?ld, Skálm?ld, Skildir ro Klofnir!"
Direct3D 12 quick reference: https://github.com/alessiot89/D3D12QuickRef/


Unsigned integers first, please...
hahaha, yeah, one step at a time :D

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator


And....apparently SIMD is coming to .NET:

http://blogs.msdn.com/b/clrcodegeneration/archive/2014/04/03/ryujit-ctp3-how-to-use-simd.aspx

This has me quite excited too!! I bet @xoofx will be happy also - I know he has been lobbying for this for a while now! And as already mentioned, SharpDX is a great option for developing games in C# either with the tool kit, or just through the raw Direct3D API access it provides.

Justin Stenning | Blog | Book - Direct3D Rendering Cookbook (using C# and SharpDX)

Projects: Direct3D Hook, EasyHook, Shared Memory (IPC), SharpDisasm (x86/64 disassembler in C#)

@spazzarama

 

This topic is closed to new replies.

Advertisement