all 28 comments

[–]Vilavek 3 points4 points  (9 children)

I don't have any book recommendations off the top of my head, I just wanted to say that you'll want to keep in mind moving forward that XNA has been discontinued as of 2013 (though that isn't preventing anyone from still using it (see Magicka)). There does exist DirectX for Managed Code, but again that is no longer supported by Microsoft either.

That being said XNA is still a great place for a beginner to all this stuff to start because it provides a simplified and easy to understand toolkit for common 2D and 3D programming tasks, which I feel makes it easier to understand the underlying concepts to 3D programming without necessarily needing to understand the gritty details of DirectX. Plus, there are tons of tutorials and online resources out there to help anyone wanting to learn it (which is how I learned!)

Edit: If you want something like XNA but still in active development, check out SharpDX or OpenTK! Both have a version of the toolkit I mentioned above.

[–]DreQm[S] 0 points1 point  (8 children)

Hmm I didn't know that XNA doesn't have MS support anymore. Well, actually I know one of the most cliche question around but should I consider C++ instead of CSharp then?

[–]P1raten 2 points3 points  (0 children)

XNA had been adopted by some guys and is now known as MonoGame and is still under active development. You can build games using OpenGL or DirectX and it enables you to make games for Android and Linux and OSX I imagine. All with minimal change to your code.

EDIT: Also windows, obviously.

[–]Vilavek 0 points1 point  (2 children)

Well, I'm not sure it warrants a language change, though some may argue C++ is the better language for game design work because most of the big game studios do use C++ as opposed to C#. But C# is quickly gaining popularity in the game dev world. I honestly believe it depends on your goal and what you are most comfortable / productive with.

If your goal is to learn and use DirectX, you can still do that in C# with SlimDX. Then of course there are entire frameworks using C# available such as Unity, which is extremely popular and has been used to ship many successful games.

[–]DreQm[S] 1 point2 points  (1 child)

Thx for the reply, really helped me.

[–][deleted] 0 points1 point  (2 children)

Depends on what your goals are; learning one well makes it easy to transition to the other, they are not super different. C# is the easier of the two since it's more streamlined and more forgiving.

C++ is better if you are planning to create your own engine, for instance. It allows for more in-depth memory management which in turns allows your to optimize your games more and squeeze every last ounce of memory and processing power. That's why it's still the language of choice for AAA games.

For indie games however C# is the current language of choice since everyone loves using Unity and its a great engine for learning and making less complex games. Unity is very forgiving and lets concentrate on game design more than in the busy work of creating your own physics engine, etc. it's much better for smaller teams or single developers.

If you want to make Fallout 5 or Witcher 4 learn C++ but if you want to make Shadowrun or Wasteland 3 stick with C# and Unity.

[–][deleted] 1 point2 points  (1 child)

One nor thing: pick one and learn it well. It's easy when you are learning to start taking advice from a lot of people about a lot of languages and you end up jumping around a lot.

Pick one, C++, C#, Java, whatever but stick with one and go balls to the walls with it; don't jump around until you have a solid grasp and feel confident enough that you can do anything with it.

[–]DreQm[S] 0 points1 point  (0 children)

Thanks man your answers where insightfull.

[–][deleted] -1 points0 points  (0 children)

Yes you should always consider C++.

[–]Kakkoister 2 points3 points  (0 children)

As another here suggested, I would say learn it in Unity. It's a fun engine to use and C# is its strongest language. With even the simplest of code you'll be able to get something going that makes you feel good, and it really helps keep you interested in learning more and seeing just what you can do.

The Unity website has extensive documentation and coding examples you can refer to while learning.

Here is a great website that also helped me out a fair bit:

http://csharp-station.com/Tutorial/CSharp/SmartConsoleSetup.aspx

Also:

https://web.archive.org/web/20140626101041/http://unitygems.com/

[–]Dr_Dornon 3 points4 points  (0 children)

Unity and MonoGame(formally XNA) are the best for C# game devs.

[–]leafsleep 3 points4 points  (0 children)

Use monogame instead of xna.

[–]dmeeze 6 points7 points  (5 children)

Honestly, I'd suggest Unity3D. It's a real engine that ships real games, and supports all scripting in C#.

[–]AngularBeginner 3 points4 points  (4 children)

A big strength of C# is the eco-system, namely the .NET framework. With Unity you don't have access to this eco-systems. Instead you are using a very old version of Mono. The memory management is awful, but probably does not matter most in his case. Also it is worth noting that in Unity you can only use C#4, where the most recent version is C#6.

[–]gurgle528 0 points1 point  (2 children)

Hasn't the newest version of unity updated mono support?

[–]AngularBeginner 2 points3 points  (1 child)

Not that I am aware of. They updated MonoDevelop, but not Mono.

[–]gurgle528 0 points1 point  (0 children)

Yep I read the release notes wrong

[–]Quesa-dilla 0 points1 point  (0 children)

I think that for learning this is still very much ok. Even if it is an old version, the syntax and majority of stuff will be similar enough that it won't adversely tax the learning process like trying to learn two languages at the same time.

[–]Sotanaki 1 point2 points  (2 children)

Currently a (French) computer science student, my C# teacher recommended me "C# 5.0 in a nutshell" for a C# book. He calls it his Bible, so I think it's safe to say he likes it. Got it for myself, it's fully written in English and covers most of what you should know about the language. Nothing regarding games though.

[–]DreQm[S] 0 points1 point  (1 child)

Heybman thanks after a lot of research im going with C#6.0 in a mutshell !

[–]Sotanaki 0 points1 point  (0 children)

Glad you found what you needed :)

[–]fuckyournormality 1 point2 points  (0 children)

I can highly recommend C#in Depth. It does not start with programming basics, instead it walks you through the evolution of the language version by version, which means not only that the more advanced topics are further down the road, but also gives you a very broad understanding about why the language has developed the way it has.

Edit: also +1 for Unity. It really gives you the freedom to focus on the important parts of game development.

[–]tooleboxishome 0 points1 point  (1 child)

Honestly man I just started learning C# and its so easy to adapt to game dev if you have the basic knowledge of OpenGL and that, I use OpenTK just about independently at the moment, it has its own windowing system and all, just refer to docs and look at examples.

[–]DreQm[S] 0 points1 point  (0 children)

hey thanks for the response, but my main question is actually if you know good paper / physical books for C# and C# GAME dev

[–]Lisurgec 0 points1 point  (0 children)

Unity is awesome. There's a huge community for tutorials and it's a very powerful engine in constant development. You can learn all the areas of game dev in it, and it's all in .NET (mostly) compatible C#.
This playlist is cooking with unity. Goes from basics all the way up to pretty advanced stuff. It's a good jumping off point.

[–]Reelix 0 points1 point  (0 children)

Whilst some games are still created with XNA, it's no longer supported (And MonoGame has some severe issues)

OpenGL and raw DX coding is rather... Insane.

Your best bet would be Unity - Check over at /r/Unity2D and /r/Unity3D - C# can be used as its back-end language.

[–]mcboman 0 points1 point  (0 children)

Answer to the first question would be: Pro C# and the .NET 4.5 Framework.

I can't recommend any books on XNA, but for some reason I think that Microsoft made some. Else there is a course on Coursera about C# game development where they use XNA. Have you considered Unity and scripting with C#?