Future of C# and XNA

Started by
8 comments, last by Daaark 13 years, 9 months ago
Hello,

I wasn't sure whether to add this to an existing post but I decided to start a new one.

I don't have much knowledge of the current games industry or history of it and I'm interested in peoples opinions on the future of XNA and C# within the industry and for hobbyists.

Will major companies slowly start using it?
Will a new generation of developers emerge?
etc.

Many thanks

Advertisement

What's the reason for asking? Are you wondering if you should bother using them, because it might be wasted time? If that's the case, it doesn't really matter. Once you learn how to program, you can pick up any language or API quickly enough. If you keep programming for long enough, you WILL pick up a few languages and APIs anyways.

C# is a standardized language, and Microsoft has been pushing it hard for normal application development. There is also the open source Mono project. Unity uses Mono to allow for C# (and others) scripting in their engine. The language is not going anywhere.

XNA Game Studio is a wrapper around around Microsoft's DirectX technology that allows you to use it from C#, and target Windows, Xbox360, and Windows Phone. DirectX isn't going anywhere for a long time to come. It does change for the better from time to time though.

People in the industry, at all levels, use many different tools and languages. C or C++ is used at the engine/system level, and the actual games are scripted in many different higher level languages. Sometimes they use an in-house scripting language (QuakeC, UnrealScript, Neverwinter Script, ScummVM), or sometimes they use an off the shelf language like Java, Python, LUA, C#, etc...

So it doesn't really matter what people use now, it may be different in five or ten years. It just matters that you learn how to program in general and be flexible. Different languages have pros and cons, but you're really just using them as a tool to solve the same problems.
Thanks for your reply.

The reason I’m asking is not so much what to learn but how much of what to learn. I started using XNA as a hobby because I’m very interested in games and to keep my programming skills up so I would be ready for programming opportunities at work which do not come often. I then realised I want to concentrate my career on programming, and game programming would be amazing. I’m doing a degree in Electronic and Electrical Engineering part time which has some relevant modules but I’m intending to do a conversion masters in computer science after.

I’m trying to learn as much as possible in my own time and appreciate that learning to program is not a new process for each language. I had to program a robot to follow a wall in Python and found my C# experience extremely useful. At some point I’ll buy a C++ book and hopefully gain some deeper understanding of memory leaks and pointers that I hear mentioned.

If XNA is likely to become massively popular I’ll concentrate a lot of time on that, if its only a small part I’ll learn some OpenGL and DirectX. Maybe I’ll just read some maths and game programming books and if I find XNA is too high level to experiment with the topics I’m learning I’ll switch to something else then. Does that sound sensible?

Regarding C/C++ being used for engine development, if you are familiar with the book Game Engine Architecture do you think its teachings will be lost on a C# user?
Quote:Original post by Long_Play
If XNA is likely to become massively popular I’ll concentrate a lot of time on that, if its only a small part I’ll learn some OpenGL and DirectX. Maybe I’ll just read some maths and game programming books and if I find XNA is too high level to experiment with the topics I’m learning I’ll switch to something else then. Does that sound sensible?


XNA GameStudio is a wrapper around DirectX9 for C#. You have access to a lot of the same calls and do everything in the same way. You also have a lot of bonus functionality included that you can easily build on.

DirectX (also part of the XNA product family) includes newer versions of Direct3D, but you still do the same things. SlimDX for C# can let you access newer versions of D3D.

OpenGL isn't much different.

All these APIs do anymore is set up render states, and then send vertex buffers to the GPU to render. All the real work to create effects is done with Shaders. Either HLSL or GLSL.

So it really doesn't matter. XNA is just a simpler D3D, and OpenGL has it's syntax differences, but you are still doing the exact same things. Any effect you want to create will come down to setting up the same render states, and then executing the same shader code.

Other than that, OpenGL evolves slower. It's run by a big committee and has to answer to a lot of people and industries. It has the advantage of being compatible with a lot of platforms.

Direct3D is Microsoft's API to have bleeding edge 3D graphics on it's platforms. It moves faster and will make breaking changes between versions for the better.

It doesn't really matter. If you can program 3D graphics, you can use either API. These APIs are just abstraction layers to let you talk to the graphics drivers. 3D is 99% technique, and 1% API syntax.

Quote:Regarding C/C++ being used for engine development, if you are familiar with the book Game Engine Architecture do you think its teachings will be lost on a C# user?
No.

C/C++ is used because of execution efficiency. It targets specific machine architecture and compiles down to machine specific instructions. So it's used a lot when you need something to run close to the hardware at a certain speed. (system level software, engines, drivers)

C# targets the .Net Runtime. It's more for application development. It has a large standard library that handles lots of common tasks you'd have to tackle in application software development. But it runs slower (not by much). You can still build a good enough engine on top a framework like XNA GS. Look up the Sunburn engine.

You can build an engine in any language, but at this point, C++ is the the best tool if speed is the main concern. So you'd have a C++ engine doing all the heavy work, and possibly C# doing the game logic scripting (like Unity for example).

But you can still build a perfectly fine engine in C# if you want. Other people are
>doing it successfully. You just get different performance characteristics. If you write good algorithms and write code that doesn't generate too much garbage for the runtime to collect, then you may never notice any speed differences.

Anything in that book would be good to know regardless of the language that you use.

(sorry if I rambled a bit, I got u several times while writing this, and I think I went around in circles I think.. :) )
Quote:Original post by Long_Play
Hello,

I wasn't sure whether to add this to an existing post but I decided to start a new one.

I don't have much knowledge of the current games industry or history of it and I'm interested in peoples opinions on the future of XNA and C# within the industry and for hobbyists.

Will major companies slowly start using it?
Will a new generation of developers emerge?
etc.

Many thanks

The chance of C# becoming the dominant programming language in the mainstream games industry are slim to none. C# is not a successor to C++, it is just a new language with similar syntax and some improvements. It is not incredibly dissimilar to Java, which has had 15 years to displace C++ in the industry and there is absolutely no sign of that happening either.
Quote:(sorry if I rambled a bit, I got u several times while writing this, and I think I went around in circles I think.. :) )


Not at all, thanks for taking the time to help.

Maybe I'll switch to something else later out of curiosity or if circumstances make it more appropriate. For now I'll continue to learn and experiment using C# and XNA with more confidence and satisifaction that I'm learning the tecniques.

Best regards.

Quote:Original post by Kylotan
Quote:Original post by Long_Play
Hello,

I wasn't sure whether to add this to an existing post but I decided to start a new one.

I don't have much knowledge of the current games industry or history of it and I'm interested in peoples opinions on the future of XNA and C# within the industry and for hobbyists.

Will major companies slowly start using it?
Will a new generation of developers emerge?
etc.

Many thanks

The chance of C# becoming the dominant programming language in the mainstream games industry are slim to none. C# is not a successor to C++, it is just a new language with similar syntax and some improvements. It is not incredibly dissimilar to Java, which has had 15 years to displace C++ in the industry and there is absolutely no sign of that happening either.


It is however almost the defacto language of tools in the industry. As the speed with which a programmer can write C# is nearly double that of C++. So C# shall for the foreseeable future be used in the Industry

Worked on titles: CMR:DiRT2, DiRT 3, DiRT: Showdown, GRID 2, theHunter, theHunter: Primal, Mad Max, Watch Dogs: Legion

XNA may be good or it may be bad, but the fact the Microsoft is still backing it up says quite a lot.. I can't see that they would like to cancel the development anytime soon.

Because of it being so simple to work with a lot of people are using C# and XNA. Many people using C#/XNA means many people running into similar problems (such as porting to different platforms, etc). Many people running into similar problems means there's a high probability that some of these people will address the problem and try to solve it, which is exactly what is happening.

Observe, this does not mean that C#/XNA is the "best" at anything, it only means that a lot of people are using it and are happy with the way it works. You choose what language and library based on many credentials, such as what requirements you have, your current knowledge, time of development, etc.
Quote:Original post by Long_Play
I’m trying to learn as much as possible in my own time and appreciate that learning to program is not a new process for each language.

I think that's the key. There's so domain specific knowledge involved in game development, and most of it is independent of the programming language used. Using a framework like XNA might speed up the learning process considerably. It's useful to 'know' (whatever that means) C/C++ at some point, but it's certainly not an initial requirement.
Quote:Original post by Long_Play
Maybe I'll switch to something else later out of curiosity or if circumstances make it more appropriate. For now I'll continue to learn and experiment using C# and XNA with more confidence and satisifaction that I'm learning the tecniques.

Best regards.
You've made a good choice. I switched over to C#/XNA after many years of using C++. I think of it as a kinder, gentler, simpler C++. It's my preferred language and API at the moment.

The trick now, is to stick with your choice. Every time you get stuck you are going to have the urge to try another language or API because it might be easier. That's a trap and it will get you nowhere.

Make sure you read through all the C# documentation and tutorials. It's preferable to get a good book too. Once you have a good grasp of C#, you'll be able to see how you can combine all the language features to create the kinds of programs you want to make.

This topic is closed to new replies.

Advertisement