What to choose C++/DX or C#/XNA

Started by
16 comments, last by Demx 11 years, 2 months ago

...not like XNA which i heard has a dark future....

Just correcting this, XNA may very well be going to "deprecated" status but that doesn't mean that you have to stop using it! The runtimes and development tools are still available (in the latter case you should grab them before MS pull the downloads) and anything you develop now will still work on all Windows PCs for the foreseeable future. The worst that can happen is "no more updates", but it still remains a viable platform for learning on.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

Advertisement
Since MonoGame has been released and is open-source, then it is likely XNA will live on long after DirectX 11 (12, 13... etc..) have long been deprecated ;)
http://tinyurl.com/shewonyay - Thanks so much for those who voted on my GF's Competition Cosplay Entry for Cosplayzine. She won! I owe you all beers :)

Mutiny - Open-source C++ Unity re-implementation.
Defile of Eden 2 - FreeBSD and OpenBSD binaries of our latest game.
But what about C# compared to C++11. Is it easier than previous C++ versions?

//Thomas Wiborg

But what about C# compared to C++11. Is it easier than previous C++ versions?

Using C++, even C++ 11, you are always going to encounter pointers. Something as fundamental to game development as Locking (or Mapping) a vertex buffer will throw you from the nice safe pointer-less world into an alternate dimension where pointers and the reality of having to deal with them exists. OK, they're not that bad, but they do require you to know about what they are, how they work, how to use them correctly, and what kind of things can go wrong (and how to identify and fix those things) when you don't use them correctly (which will happen).

If you were going to use C++ then I'd strongly advise that you split your learning in two - do C++ first, then do game development.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

But what about C# compared to C++11. Is it easier than previous C++ versions?

Using C++, even C++ 11, you are always going to encounter pointers. Something as fundamental to game development as Locking (or Mapping) a vertex buffer will throw you from the nice safe pointer-less world into an alternate dimension where pointers and the reality of having to deal with them exists. OK, they're not that bad, but they do require you to know about what they are, how they work, how to use them correctly, and what kind of things can go wrong (and how to identify and fix those things) when you don't use them correctly (which will happen).

If you were going to use C++ then I'd strongly advise that you split your learning in two - do C++ first, then do game development.

Looks like you are skilled with programming C++.
Does it take long time to learn those pointers? And when you have learned to program C++. Is it as easy to program and make games with it, as C# XNA?

Is the develope speed slower? and incase how much?

//Thomas Wiborg

Does it take long time to learn those pointers?

Most concepts you need to know to work safely with pointers are easy to learn but hard to make routine.
The bigger problem is not so much about how hard it is to learn, but how frustrated you will be when solving pointer-related bugs during that learning period. But everything takes practice, time, and chocolate cake.

And when you have learned to program C++. Is it as easy to program and make games with it, as C# XNA?

No. The advantage of C++ is that it lets you get closer to the metal and allows you full freedom.
If you don’t know what to do with the metal then it isn’t an advantage, and if you don’t use your freedom properly you may shoot your friend’s cousin’s mother in his or her left pinky’s intermediate phalanx, meaning this is actually a negative point rather than a positive point.

Is the develope speed slower? and incase how much?

That depends on how much reusable code you have written in the past.
If you are just starting out, that would be none, and development time will increase significantly. Easily by a factor of 3 or 4.



C++ is my favorite language and I prefer it over C# and especially over Java.
But when you are starting out you have to make decisions.
If you just want to get quick results, go with C#.
If you want to make better games and are willing to wait for that privilege, learn C++.

I personally didn’t see the world as black and white when I was growing up, so I learned C# in order to get happy results in the now while learning C++ in the background for a better tomorrow.
The options being discussed in this topic are not mutually exclusive. In fact it is trivial to learn both C# and C++ in parallel as they are so similar, which makes this topic mostly a non-issue or a false dichotomy.

L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

Its interesting to see how many different answers i get :-) Some says C++ DX others C# XNA. But when i think about it. XNA may be the one for me. I want your advice on this:
I want to make games like diablo 2, plant vs zombies etc. Is it realy something C++ DX does better on these games than XNA? Or would C++ DX only be better if im making the new battlefield 3. Which ofc is waaaay to hard and impossible for one person. Some also say that there may be an XNA for the new XBOX. And when im done making a game in XNA its easy to port with monogame to be used on android.
OR does C++ DX have benefits on diablo 2 and plant vs zombies that XNA cant handle as good?

//Thomas Wiborg

Its interesting to see how many different answers i get :-) Some says C++ DX others C# XNA. But when i think about it. XNA may be the one for me. I want your advice on this:
I want to make games like diablo 2, plant vs zombies etc. Is it realy something C++ DX does better on these games than XNA? Or would C++ DX only be better if im making the new battlefield 3. Which ofc is waaaay to hard and impossible for one person. Some also say that there may be an XNA for the new XBOX. And when im done making a game in XNA its easy to port with monogame to be used on android.
OR does C++ DX have benefits on diablo 2 and plant vs zombies that XNA cant handle as good?

I think you are over thinking lol, I think the best way is to use C++ DX to make simple 2D games as they are easy to learn this way..

This topic is closed to new replies.

Advertisement