Jump to content

  • Log In with Google      Sign In   
  • Create Account


Is there any chance of C# bieng adopted by the AAA game studios, as a replacement to C++?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
65 replies to this topic

#41 sankrant   Members   -  Reputation: 121

Posted 07 December 2012 - 06:51 AM

Nobody will bother to make 'a C++ out of C#'.

C# is primarily meant for the enterprise, and will be developed in that capacity.

C++ is meant for creating underlying high performance infrastructure and low level code. It will be developed in that capacity.

So for the future, I will be choosing C++ to make the heavy lifting infrastructure/base of my software (game engine), and C# or my favurate language to make the real part (the game).

As an indie, you might be loving to code in C# (as I do), but indie developers do not create game engines for that matter!! :) (be happy)




Sponsor:

#42 sankrant   Members   -  Reputation: 121

Posted 07 December 2012 - 08:29 AM


What I am saying is that C# and support is evolving to some day replace C++ to a large extent but must go through the same basic vetting process that happened in C++. I expect that C# will do it better in its life cycle than C++ is doing it.


sadly I don't think it'll go that way. C++ is a very closed relative of C, the 2 can mix in the same codebase and the boundaries between the 2 become quite blurred.
C++ allowed C "engine" developers to slowly get use to it without throwing away what they had and was working.. they could experiment with a little of C++ flavor here and there without compromising the structure and without feeling unsafe about it,because they knew they could just switch back to C if and when cornered.

The problem with C# is that you can't "inline" C code into it. The boundary between the "native" side and the "managed" side is VERY defined.. devs from one side can't "play" moving stuff here or there.. everything is much more "frozen"... plus you have the marshaling cost to consider every time you want to move something around.

To make C# (or any other language) a viable option to replace C/C++ in the game engine realm you need to create a compiler that can seamlessly include .c, .cpp or .cs files IN THE SAME PROJECT.

I have more hopes for a C++ evolving into something more C#-ish (add modules and optional GC and you're there) than the entire world to adopt C# for everything.


C++ getting more C#-ish, is IMHO far from being a reality. Adding optional GC, will make it more like Rust Programming Language.

C++ is now stealing ideas from functional programming languages. The world requires and always will require, one and only one mega multi-paradgrim language. I don't see C++ going away anytime soon, from the realm of game engines, and C++ going away is unimaginable in case of AAA game engines.

I say, don't bother much. Make beautiful games with C#.

#43 way2lazy2care   Members   -  Reputation: 782

Posted 07 December 2012 - 09:02 AM

I think most realistically C# will see a larger dedication toward interop performance. Good programmers are able to get lots of performance out of C++, but in my experience most C++ code in games 1. does not require good performance and 2. is not performant even if it requires good performance. Iterative games are hugely bad for this. Personally I expect the day of single language games to be near an end.

#44 Net Gnome   Members   -  Reputation: 769

Posted 07 December 2012 - 10:07 AM

C# useful in creating AAA games? yes. It also depends on what one considers the definition of AAA to be as well as how c# is used. In-fact, games like Minecraft, Binding of Isaac, Terraria, Bastion, and Angry Birds, can be AAA quality fun without requiring the AAA quality graphics and expenditure in resources (note: yes i know they are not all c# games, infact AB is C++ i believe).

Unity 4 engine is a great example of a mixed language engine that includes c# (albeit for scripting, but much much much faster scripting). XNA has been a huuuugely successful framework spawning many .net game projects. SharpDX which is a managed DirectX API is powering various efforts like MonoGame (on the WinRT side).

C# compile times are also magnitudes lower than C++ allowing much faster development iterations almost to the point of eschewing the classic need for scripting, especially with dynamic c# and reflection which even with their performance hits, still rival classic scripting languages in speed and direct-access. The fact that scripting languages are even used period is reason enough to argue that C++ is not needed to create AAA games because you need alot of extra cycles to execute those slow bastards. The cycle times required to parse and execute script languages as well as run the core engine could likely be performed entirely by C# with cycles to spare. Sure, the engine portion likely wouldnt run as fast as the C++ version, but the game portion would run faster and you could probably make it up in the difference.

When it gets down to it, if you measure the quality of a language with something as obtuse as "can i make the most purdy pictures with it?" as your only criteria for its worth, you're only hurting yourself. In-fact, based on that argument alone, all "AAA" games should be written wholely in assembler/microcode because nothing is faster period and therefore it is the language most capable of AAA development.

#45 MJP   Moderators   -  Reputation: 10243

Posted 07 December 2012 - 06:30 PM

Well there's nothing "System Level" about game engines, so there's no reason to need a "System programming language there", a game engine is a game engine, it's not a vidcard driver and it needs no low level access by design.


You could maybe argue this for PC games, but not for consoles.

#46 way2lazy2care   Members   -  Reputation: 782

Posted 07 December 2012 - 06:35 PM

You could maybe argue this for PC games, but not for consoles.

I dunno. Is that more a function of it being impossible, or is it just a function of only having low level language apis provided by most of the console manufacturers?

#47 ApochPiQ   Moderators   -  Reputation: 14292

Posted 07 December 2012 - 06:37 PM

It's purely a function of lack of adoption on the part of console creators.

#48 3Ddreamer   Crossbones+   -  Reputation: 2960

Posted 07 December 2012 - 07:04 PM

Since we are now on the hardware demands...

Every few years there is a major hardware advance and we are overdue for the next major one. In five years or so, performance advantage which a highly advanced C++ team can currently treasure will not be nearly as much of an issue. Other languages such as C# will be more valued for being less convoluted ( in implementations and not C++ itself ) to indies and small teams.

What if general hardware performance doubles or triples in a few years? Workflow will be valued more than language performance, I predict. Even now, we are seeing more artist friendly tools on the increase which improve game appearance but might be at the cost of some performance. As hardware advances to better handle all the demands, this will gain in working philosophy.

There is a particular company which I am not going to mention. It claims an increase in game performance while increasing game assets by multiples over what we see in the top games today. They claim a release of their technology in a few years at most.

Now...

The C++ geeks ( bless them all, really ) and C++ nerds ( yeah, them, too ) have quite a few years typically until retirement age ( it's a tease, so please laugh ), but the increasing number of programmers in streamlined languages like C# and Python are a taking down of the programming aristocracy which will surely mature and crest in the coming years.

People are talking about the coming trend more, so no programmer and game developer should be surprised when it becomes clear to everybody.


Clinton

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software.  The better the workflow pipeline, then the greater the potential output for a quality game.  Completing projects is the last but finest order.

 

by Clinton, 3Ddreamer


#49 sankrant   Members   -  Reputation: 121

Posted 07 December 2012 - 10:01 PM

''
As the hardware gets more powerfull... We will not require fine grained control. Down with C++!
''

As the hardware gets more powerfull *OUR Needs will GROW*, and everything now which is called graphically intensive will be called crappy....

''
There will be a time when C++ geeks will be no more.
''

Believe me, Earth will be destroyed some day. That's a universal fact.

C++ will only die, when we start creating gamse withought a game engine.

And microsoft (C++), apple (obj-C) will make sure, that there is a supply of young C/C++ programmers, who will than take charge of the game engines in the future. That's 30 years minimum. C++ is changing all the time, it will get more functional. As platforms like Google Glasses come into play, C++ compilers will be the first to get hands on.
Libraries like openGL/DirectX are writern in C/C++. Do you know why? Because most languages have a C API. What about C#? If you use C#, you get locked in to the CLR. Suppose, hypothetically I write my Engine in low-level C#. My team wants to use LUA for scripting. They cannot.

This will always be like that till John Carmack is alive. 50 years more maybe?

Till there are console games, till we create game engines to program a game C++ will remain the Industry standard, for game engines only.

Create games with C#. Use an existing game engine if you somehow hate C++.

#50 3Ddreamer   Crossbones+   -  Reputation: 2960

Posted 07 December 2012 - 10:14 PM

Similar things were said about languages in the past which are almost never used now for game related programming, but at the time were said to last until the earth is destroyed. I know because I programmed in two of those now nearly extinct languages in gaming which once dominated everything. The Titanic was said in denial to be "unsinkable", even as the water was rising to overflow the bulkheads. The time for C++ may be years in the future but it is coming far sooner than you think.


Clinton

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software.  The better the workflow pipeline, then the greater the potential output for a quality game.  Completing projects is the last but finest order.

 

by Clinton, 3Ddreamer


#51 sankrant   Members   -  Reputation: 121

Posted 07 December 2012 - 10:37 PM

Can you enumerate the game languages of the past please?

Assembler? Assembly was left by the Game Devs because we changed the way, the game's were developed. We introduced the concept of game engines to write games. C took the crown.

C? We started using C++ because C++ emmerged as a superset, and we could use any C library from C++.

C++ : Here the codebase increased to massive momentum. It was adopted as the industry standard for game engines.

Fringe languages : Pascal? Well pascal was more productive than C and as fast. Compare it to C#.

Basic? Compare it to python. Never intended for game dev.


C++ will always (for a very very long time) remain the industry standard for writing game engines. (C++ is much much more stronger in case of the AAA game engines)

Practically speaking, C++ is here to stay for enourmously long time, and majorly used, perticularly in the case of development of game engines, if not any other areas.

Note : By game engine I mean renderer, physics, script and sound infrastructure which does the heavy lifting. I love C# when writing the actual game (not engine).

Don't bother about creating game engines. Create good games with C#. Enjoy. :)

#52 kunos   Crossbones+   -  Reputation: 2186

Posted 08 December 2012 - 01:39 AM

Similar things were said about languages in the past which are almost never used now for game related programming, but at the time were said to last until the earth is destroyed.


I have already answered you about this. The ASM-> C -> C++ shift was possible because all those languages are strictly related to each other, allowing a "gentle" shift.

Look.. I am not a C++ "geek". I use it because it allows me to do what I need to do with the smallest investment in time. AAA studios are not using C++ because they are crazy.. they are business oriented companies, they do what they have to do to stay where they are... C++ advantages over C were evident and to industry moved to C++.. as soon a new viable option will be REALLY available, nobody will stay with C++, I didn't swear any kind of alliance to it. Actually I am constantly evaluating possibilities to move away from it.. and not with forums rants, but with facts.. one example? The dedicated server for my new game uses Go.. was it a good decision? I don't know, I spent lots of time rewriting the basic network classes.. now if I need a protocol change, I need to implement it in C++ on my game client side and in Go for the server side.
I also developed ad shipped a product with a C++ DX10 backend and a C# front end.. and I was as enthusiastic as you about it... but the moment you start adding PhysX, XAudio and so on to the picture you realize it isn't really worth the hassle of constantly switch from one world to the other.

It is always easier to use a technology with the language it was coded in... in Go for example you can do OpenGL.. but consider the hassle on Windows, setup git, setup msys, go and get one of the OGL bindings hoping it is the "best" one.. sometimes it works, sometimes it doesnt, i spent a weekend trying to link a Go program that used glew on windows..no party. Using C/C++ all this is just, literally, 1 minute work. Apply this to PhysX, Havok, FMOD, XAudio, CUDA, C++ AMP and any other third party library you have and you'll soon see that the amount of effort needed to "project" these into something else than C/C++ isn't something to underestimate.

Again, I love C# and I absolutely adore F#, nothing else would make me happier than being able to use these everyday.. but, this is my job, I can't risk a project failure to promote the language I like and not the "right" language for the job.. it's not going to happen, but if it'll happen, I'll be the first to jump in the pool an party.

Edited by kunos, 08 December 2012 - 01:41 AM.

Stefano Casillo
Lead Programmer
TWITTER: @KunosStefano
AssettoCorsa - netKar PRO - Kunos Simulazioni

#53 3Ddreamer   Crossbones+   -  Reputation: 2960

Posted 08 December 2012 - 02:31 AM

kunos,

I see that you are quite skilled and adaptive, so you will be just fine with future changes. In 5 to 10 years - more like 3, what you used and issues you faced recently will be gone forever. With all due respect to your abilities and so forth, you seem to have no idea about the revolution coming fairly soon in game development technology.

It will be years before the most common languages used in gaming today finally fade into oblivion. However, I am letting people know that immense tech changes are coming on the horizon. Wait until Apple becomes twice or thrice as large as Microsoft with the other tech animals yapping and snapping at the heels of Windows platforms. Microsoft has strength in software innovation and this is what will save them, since they are increasingly outnumbered.

Middle level programmers are to a large extent going to be replaced by software and hardware advances. Among the corporate goals is to end the need for much of the line by line coding, once the huge advances arrive. Many current professional programmers think that their C++/C experience is job security. The innovations in automation and code completion, including in C#, will reduce much of the demand for line by line coding and debugging. A new framework in C# must surely be on the horizon which will deliver such innovations if Microsoft is to avoid a collapse. In that case, C++ will prove far too cumbersome for the agile artificial intelligence in the development software of better suited languages for such innovation such as C#. This core .NET Framework language was created with this long range vision from its start as an eventual replacement for C++ in the 21st century. The next framework for C# (based on .NET) will introduce the revolutionary technologies which were conceived in the minds of leading software engineers even before C# was conceived. Didn't you see that XNA was used as a test platform for extending their technology goals to far greater innovations in the next generations? Here is a classic case of people not seeing the forest because of the trees before them.

Everybody will forget that 3Ddreamer warned of massive corporate, market, and technology upheavals in game development in the coming several years, but many game coders will be glad that they were inspired somewhere in the mist of time to be ready for the tech storm.

However, as credit to you - like I said, your adaptiveness will keep you working.

Clinton

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software.  The better the workflow pipeline, then the greater the potential output for a quality game.  Completing projects is the last but finest order.

 

by Clinton, 3Ddreamer


#54 sankrant   Members   -  Reputation: 121

Posted 08 December 2012 - 03:11 AM

kunos,

I see that you are quite skilled and adaptive, so you will be just fine with future changes. In 5 to 10 years - more like 3, what you used and issues you faced recently will be gone forever. With all due respect to your abilities and so forth, you seem to have no idea about the revolution coming fairly soon in game development technology.

It will be years before the most common languages used in gaming today finally fade into oblivion. However, I am letting people know that immense tech changes are coming on the horizon. Wait until Apple becomes twice or thrice as large as Microsoft with the other tech animals yapping and snapping at the heels of Windows platforms. Microsoft has strength in software innovation and this is what will save them, since they are increasingly outnumbered.

Middle level programmers are to a large extent going to be replaced by software and hardware advances. Among the corporate goals is to end the need for much of the line by line coding, once the huge advances arrive. Many current professional programmers think that their C++/C experience is job security. The innovations in automation and code completion, including in C#, will reduce much of the demand for line by line coding and debugging. A new framework in C# must surely be on the horizon which will deliver such innovations if Microsoft is to avoid a collapse. In that case, C++ will prove far too cumbersome for the agile artificial intelligence in the development software of better suited languages for such innovation such as C#. This core .NET Framework language was created with this long range vision from its start as an eventual replacement for C++ in the 21st century. The next framework for C# (based on .NET) will introduce the revolutionary technologies which were conceived in the minds of leading software engineers even before C# was conceived. Didn't you see that XNA was used as a test platform for extending their technology goals to far greater innovations in the next generations? Here is a classic case of people not seeing the forest because of the trees before them.

Everybody will forget that 3Ddreamer warned of massive corporate, market, and technology upheavals in game development in the coming several years, but many game coders will be glad that they were inspired somewhere in the mist of time to be ready for the tech storm.

However, as credit to you - like I said, your adaptiveness will keep you working.

Clinton


Yeah, OK.... For some reason you think that, C# is the future mega tech.
But why C#?
Why not lisp?
Or haskell.
They have the same possibility of displacing C++.
Why only C#?
Why not Clojure?
Or Obj C?
Why only C#?
Whats so special about C#. Game scripting can be done in Lua too. And engine development has no real alternative other than C/C++. There will be no alternative for a long time. That's clear.

#55 kunos   Crossbones+   -  Reputation: 2186

Posted 08 December 2012 - 03:18 AM

hey Clinton.. while you're at it... would you mind to give me a couple of numbers for the Lotto too? That would be really appreciated Posted Image
Stefano Casillo
Lead Programmer
TWITTER: @KunosStefano
AssettoCorsa - netKar PRO - Kunos Simulazioni

#56 sankrant   Members   -  Reputation: 121

Posted 08 December 2012 - 04:27 AM

I urge the moderator to close this thread and give the conclusive post if possible. I have got the answer, I will use C# for games, but C++ will remain strong in the Engine and Backend development, for long time in the future. That's clear.



#57 MichaBen   Members   -  Reputation: 481

Posted 08 December 2012 - 04:46 AM

Personally I don't mind using something else then C++ for game development, as long as the language has a decent support in terms of tools and libraries, and the language itself is decent enough. I wouldn't mind having a language that doesn't feature any undefined behaviour (everything is either defined or an error) and with pointer safety (dangling pointer protection and leak detection). However, the garbage collector system that several languages introduces is in my opinion not the way to go, as it's a counter-productive method to conceal the symptoms of pointer errors, rather then fix the problems itself. The technology behind garbage collectors is interesting, but it does not belong in a release version of an application, but as part of a debugger, to tell the developer when exactly you are leaking memory, and using a dangling pointer should trigger an assertion you can debug to fix the actual problem, rather then obscure the problem.

#58 sankrant   Members   -  Reputation: 121

Posted 08 December 2012 - 06:47 AM

Personally I don't mind using something else then C++ for game development, as long as the language has a decent support in terms of tools and libraries, and the language itself is decent enough. I wouldn't mind having a language that doesn't feature any undefined behaviour (everything is either defined or an error) and with pointer safety (dangling pointer protection and leak detection). However, the garbage collector system that several languages introduces is in my opinion not the way to go, as it's a counter-productive method to conceal the symptoms of pointer errors, rather then fix the problems itself. The technology behind garbage collectors is interesting, but it does not belong in a release version of an application, but as part of a debugger, to tell the developer when exactly you are leaking memory, and using a dangling pointer should trigger an assertion you can debug to fix the actual problem, rather then obscure the problem.


Totally agree. The day there is a real alternative, I will jump ship, but there is not today, and I don't think there is any will to bring up an alternative. People are just fine using C++, if they use it.

The fact is, there is no real alternative, and nothing will come up as mid level language, if not counting rust or D, which are far from mature.

#59 3Ddreamer   Crossbones+   -  Reputation: 2960

Posted 08 December 2012 - 10:30 AM

hey Clinton.. while you're at it... would you mind to give me a couple of numbers for the Lotto too? That would be really appreciated


Microsoft bought most of them. LOL


Clinton

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software.  The better the workflow pipeline, then the greater the potential output for a quality game.  Completing projects is the last but finest order.

 

by Clinton, 3Ddreamer


#60 stupid_programmer   Members   -  Reputation: 1005

Posted 08 December 2012 - 12:12 PM

I urge the moderator to close this thread and give the conclusive post if possible. I have got the answer, I will use C# for games, but C++ will remain strong in the Engine and Backend development, for long time in the future. That's clear.


The problem is there is no conclusive answer. My company is firmly placed in mid-core casual browser games and you will never see C++ anywhere. Our 'engines' (if you can even call it that) are ActionScript and 'backends' are a mix of Java/Python/PHP. We've toyed with some real time stuff and a Java server was more then capable of handling the load even with all that so horrible garbage collection going on. It's only now that we are finally branching out in to mobile that the idea of using C++ is even considered.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS