-
|
|
Job posts at studios still requires C++ . When does XNA will get its place?
|
My friend Moris Beracha and Me searched the web for some job postings on major studios, and noticed that C++ is still king on the hill. ( Cpp )
C# was definitely an asset, but mainly for tools development and the server side of online games. ( C sharp)
So, when does XNA will get its place? What can we do to achieve that?
I would like to hear opinions on how this is going to evolve in the future. Is XNA destined to be the tool for independent game developers and small teams? Is XNA able to reach major studios and big projects?
Some links to job postings
Blizzard
Bungie
BioWare
Thanks, Baltico X.
|
|
-
|
|
Re: Job posts at studios still requires C++ . When does XNA will get its place?
|
It isn't going to happen overnight. Some things to keep in mind are that many studios have spent years developing custom engines and toolsets for their games, many written in C and C++. Its a big investment. As well, most of the current popular 'off the shelf' AAA engines are written in C and C++ which will only perpetuate that cycle for another generation. As well, though learning C# after having used C++ for many years is easy for most programmers, C and C++ have been the staple for quite some time.
I suspect as the indie / smaller studios start to show the world what can be done w/ rapid development and C#, all running on a consoles nonetheless, others (including large studios) will take notice. They may slowly test the waters. But the change will be slow.
|
|
-
|
|
Re: Job posts at studios still requires C++ . When does XNA will get its place?
|
Engines are very often rewritten. That's not a problem I think.
In my opinion CLR, C# and stuff is just not enough to make a revolution. Let's put aside fact, that most libraries are written in C and stuff. Game developers usually don't need much of them to create engine. Only few are needed, such as DX. That would be easy to wrap it in C#. But it just not make bigger sense.
C++ is just not that much worse than C# and c# and clr is not that much better than c++. If some employee would pay me milion $ a day for a year, than someone would come and say that he will pay me milion and a thousand in the same manner - I would keep with old one.
There is no temptation. C# and Java aren't good enough to break C++ reign in Engines development.
So, what next? We got new trend... dynamic languages, such as famous python, and clr implementation of it, IronPython. That is all great, but it is also not enough for game developers. It's just another abstraction layer over things, another complication, another slowdown. We need something that could be operated in between layers, language(or runtime?) should allow easy interpreted and jitted code, there should be full memory control with garbage collector at the end of chain. I don't want to start flame or such, so I would end up in this place... :)
|
|
-
|
|
Re: Job posts at studios still requires C++ . When does XNA will get its place?
|
Some other elements:
- Other game platforms (from Sony, Nintendo), are C/C++ only, and I doubt they will ever use C#. And game companies often work on several platform, so they have to focus on the common language.
- Most of the professional middlewares (Bink, Havok, ...) are C/C++, and are also used on several platforms.
While C# is great, it's a mono-company language. That's a great investment for game companies for creating tools faster, or even for game prototyping, but the king will stay C/C++ for long years again...
But never forget that the language is only a tool. If you're a divine coder with C#, no doubt you can find a job as a game developer, because the game company will think: wow, if this guy can do this with a given language, he can also do it in other languages !
|
|
-
|
|
Re: Job posts at studios still requires C++ . When does XNA will get its place?
|
Saorne: But never forget that the language is only a tool. If you're a divine coder with C#, no doubt you can find a job as a game developer, because the game company will think: wow, if this guy can do this with a given language, he can also do it in other languages !
Agree - example, graphics programming is more than just language. Actually to get really efficient on this position you would have to know more and more... Starting from all knowledge about technics, math behind, how to optimize them, some shader language... and far, far at the end, someone who wants to hire you, will ask if you are c master. "- I was working all this time with C# and managed dx. - Oh. Ok. You'll have to learn some cpp cause we are using it. - Ok." Nothing else. Showing some hand written effects should do it.
|
|
-
|
|
Re: Job posts at studios still requires C++ . When does XNA will get its place?
|
I was working all this time with C# and managed dx. - Oh. Ok. You'll have to learn some cpp cause we are using it. - Ok." Nothing else.
If only most companies were like that. Most of the time the HR drone will force the hiring manager to specify their requirements and then they will only let 'the perfect candidate' through the doors to the interview. It sucks but unless you have a couple of years of C++ on our resume and probably a shipped game you are unlikley to get a position coding games.
You may get in as a tools programmer or a level designer sith script and move on up. Or you need to find the couple of companies using C#...
I loved this article cos its so true http://www.codinghorror.com/blog/archives/001054.html
The ZBuffer News and information for XNA Please read the forum FAQs - Bug reporting
|
|
-
|
|
Re: Job posts at studios still requires C++ . When does XNA will get its place?
|
ok, there's two key points here to consider:
1) Game development skills: An XNA developer that builds an advanced game using shaders, animations, physics, multiplayer networking, etc. will have no problem adapting to the game development needs at any "real" game development studio
2) C++ development skills: The reality is that C++ is an arcane language, whose current existence was born of DECADES of foot-trampling, steering committees, and syntactic and semantic patching. But that's what makes it so wonderful :) The important point here is that you need to be able to demonstrate a firm grasp of the best patterns and practices of solid C++ development. There's several books out there that will help you do this, and it's independent of your game development skills. They're orthogonal concepts that (traditionally) work together to create retail games.
3) (Yes, I can't count) Getting hired in the industry is 95% being able to show the work you've personally done in the past and convince the employer how the skills you applied to do those things are valuable to them.
You should not regard the lack of C++ skills as a barrier. Instead you should regard it as a call to action -- good employers (especially game studios) value flexible developers. If is not unusual to hear of developers working in C++, C#, Perl, and Lua all in the same day.
http://letskilldave.com http://twitter.com/letskilldave
|
|
-
|
|
Re: Job posts at studios still requires C++ . When does XNA will get its place?
|
Basically, it will become useful for professional games when they add good memory control to C# - not being able to use memory pools or control cache locality really kills performance - and when the compiler starts doing a good job with inlining, using prefetch and optimising in general. I've not yet tried it on a big project, but I'd also be concerned about build times, without Incredibuild or being able to do unity builds on upwards of 2000 source files.
C# is a fine language, better than cpp from an architectural pov, and miles better from a reducing-legwork angle, but performance-wise cpp is currently better: take the standard MSVC compiler and it beats C#... then turn off RTTI, exceptions, error checking, and do a minute amount of tuning with a profiler for memory locality and branch prediction cases and watch performance jump 25%. Then switch to the Intel Compiler and voila, you've doubled your framerate. For commercial games with dev teams already skilled in cpp, that's a no-brainer.
Then there's the cross-platform nature of games development as well. Switching languages itself though is not such a big deal, most devs I know swap between things like C++, Lua, Python, VB and a few other things quite casually.
Btw, what previous repliers say about domain knowledge is absolutely true. Clever people with shader skills and a good eye for what makes a beautiful image are always welcome, as are people who know what they're doing with AI or producing high quality tools or even (shockingly!) gameplay ;) If you have the skills and want to do this as a career, just knock on the door and don't take "no" for an answer.
|
|
-
|
|
Re: Job posts at studios still requires C++ . When does XNA will get its place?
|
Kerome:Basically, it will become mainstream when they add good memory control to C# - not being able to use memory pools or control cache locality really kills performance - and when the compiler starts doing a good job with inlining.
While it's true that there is a lot of room to optimize the Xbox run-time and there are a lot of micro-optimizations you can't make on either platform, I think your are making a big assumption on what it means to be "mainstream". If mainstream means Epic writes the next Unreal Engine with it, then yeah, it's going to need all sorts of cache control and manual memory management to get maximum speed. But I bet you didn't know that the vast majority of the Unreal Tournament games' code is Unreal Script: which runs 20 to 40 times slower than C++. There is plenty of space for C# in this definition of mainstream, but it's a lot further away due to platform support, legacy code, and legacy coders! In a more realistic definition of mainstream, C# is exactly what the doctor ordered. Practically every Xbox Live Arcade game and Walmart budget bin title could have been developed with in XNA. A large number of AAA titles probably could have been also. There's absolutely no reason why Viva Piniata all the way through to Fight Night Round 3 need to fiddle with cache locality or manual memory management. Kerome:I've not yet tried it on a big project, but I'd be concerned about build times as well, without Increbuild or being able to do unity builds and pushing upwards of 2000 source files.
I sincerely hope you never have a 2000 source file C# project. Breaking it up into a few Assemblies is a smart and easy idea. But anyway, C# builds are orders of magnitude faster than C++ builds. There are a lot of explanations, but some quick web searches show that distributed C# builds are practically unheard of due to a lack of necessity. Distributed content builds... now that may be a problem for AAA titles.
Brandon Bloom
Software Design Engineer XNA Community Game Platform
|
|
-
|
|
Re: Job posts at studios still requires C++ . When does XNA will get its place?
|
Brandon Bloom:But I bet you didn't know that the vast majority of the Unreal Tournament games' code is Unreal Script: which runs 20 to 40 times slower than C++.
I knew that. Do I get a prize? :D
Personally I kinda hope people don't adopt C# and XNA GS as it'll mean my games get done a lot quicker than theirs! :D
Yeah, that kinda wasn't mean to be taken totally seriously, but then again....
Jim Perry - Microsoft XNA MVP Here's what I'm up to. If people spent a minute searching the forums before posting I'd be out of a job.
|
|
-
|
|
Re: Job posts at studios still requires C++ . When does XNA will get its place?
|
Brandon Bloom:If mainstream means Epic writes the next Unreal Engine with it, then yeah, it's going to need all sorts of cache control and manual memory management to get maximum speed. But I bet you didn't know that the vast majority of the Unreal Tournament games' code is Unreal Script: which runs 20 to 40 times slower than C++. There is plenty of space for C# in this definition of mainstream, but it's a lot further away due to platform support, legacy code, and legacy coders!
In a more realistic definition of mainstream, C# is exactly what the doctor ordered. Practically every Xbox Live Arcade game and Walmart budget bin title could have been developed with in XNA. A large number of AAA titles probably could have been also. There's absolutely no reason why Viva Piniata all the way through to Fight Night Round 3 need to fiddle with cache locality or manual memory management.
From that point of view, you're quite right, of course. XNA as a RAD environment for games is very good for more casual titles, and I'll even concede the point for PC titles which do not push the technical boundaries. Although I have to say I'm a little surprised that UnrealScript is quite as slow as that... Lua 5.1 tests quite a lot faster, at around 12-15x. With scripts the point is that engines such as Unreal are architected in such a way that although a lot of the code is script, the engine spends a as little time as possible inside those scripts. The scripts act as a customisation layer over the engine code, and are not intended (or should not be intended) as "workhorse" pieces of code. It's the maximum speed you can get out of the system for the critical code sections that matters, while it's not such a big deal if your high-level decision making or your once-per-game level triggers run slowly. By coding with XNA you're more or less comitting to writing your renderer in C#, and if you are trying for a best-of-breed product, it matters. I'm not saying that that means anything bad for XNA or C# - mostly the reason it's less used is just skill set inertia, I'm sure. In the long run we all have to consider the dev-time vs fps argument... C++ is fast, but if your game is canned because you can't get it done in time that won't help you ;) Enfin, I do hope that MS realise that they're not that far off definitively overtaking C++ with C#, even for the big PC games, and it's very possible to add the required level of control over memory location to the language without going back to pointers.
|
|
-
|
|
Re: Job posts at studios still requires C++ . When does XNA will get its place?
| |