• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
sankrant

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

65 posts in this topic

[quote name='ChaosEngine' timestamp='1354652041' post='5007183']
How was it anything but a failure? It had some nice features, but almost no-one ever used it, it was complex, memory hogging and failed to get simple things (focus, tab order) right. I spent 3 years working with it, and it used 10 times the memory of the equivalent winforms app.
[/quote]
We're slowly switching all of our in house tools to WPF because it is more performant than winforms.
0

Share this post


Link to post
Share on other sites
I don't really want to derail this thread more than it already has been. Suffice to say I worked on a LOB app with WPF for over 3 years, so I'm not just making this stuff up.
If you're still keen to discuss WPF, PM me or start another thread.

I'm more interested in ApochPiQs assertion that C++ is being pushed as some sort of sop to C++ programmers. I'm really not sure of that. MS are even pushing [b]another [/b]C++ extension (C++/CX) as the best way to develop for win8.

I suppose my concern is part of a wider uncertainty in the industry, and specifically Microsofts position in it. No-one really knows how people are going to compute in the future. Looking at the industry now, it seems pretty clear that the trend is all away from the desktop and splitting between "apps" and the web. But at some point, this is going to start affecting the enterprise sector (it probably already has with the release of Win8). It will be very interesting to see what the demand is in the next few years. Are people going to demand a rework of productivity apps to move to web/touch or will we see people decide that old school kb/mouse desktop apps are what lets them get work done?

Games and engines will be indirectly affected by this due to language support and tooling.
0

Share this post


Link to post
Share on other sites
Laptops are here to stay. The sales of them may go up or down, but the devices are so much more capable than any other mobile device that I am convinced about their long term slow steady growth. I believe that more people will realize the keyboard, bigger screen, gaming, and other advantages of the laptop computer over other mobiles once the realization arrives in people.

Apple and all the others will release more mobiles and consumers will play more games on them - long term, is my prediction. Microsoft has planned for this probability, don't you think? This is part of the reason why C++ is being pushed. Most of the establishment uses C++ and it fills a gap while other technologies continue progressing. The competitors will not wait for a Microsoft response and cross-platform gains are an immediate threat to market share. It is ironic that Bill Gates is rumored to have once said something along the line of games have no business being played in a PC, yet the PC is a proven area where games can be marketed and sold as an advantage for Microsoft. After Bill Gates stepped down, we saw the C#/XNA cycle and now we see a C++ one - both motivated in response to competitors, I believe. Another thing to remember is that there are in general many C# programmers in the world which will always spill into the game development genre.


Clinton
0

Share this post


Link to post
Share on other sites
[quote name='ChaosEngine' timestamp='1354740065' post='5007511']
I don't really want to derail this thread more than it already has been. Suffice to say I worked on a LOB app with WPF for over 3 years, so I'm not just making this stuff up.
If you're still keen to discuss WPF, PM me or start another thread.
[/quote]

I've pretty much only worked on WPF (LoB apps too) for years and found it crazy fast, but we didn't go for any "fancy new looks", just for the nice programming models it allows through MVVM. Switching to that from web (i wasn't doing web before, but i suggested we switched internal LoB apps from webforms to that) boosted productivity close to 10X (yes really) and the only performance issue i ever had with WPF was the about 1 second application startup time, everything else was a breeze both from a programming speed standpoint and from a runtime speed one. I'd be curious to know where you've ever hit speed issues.
Also what's important in WinRT's similarity to WPF is that it's the same as not droping WPF, porting from WPF to WinRT is beyond trivial, so there's none of that usual huge cost to switch. It also goes a lot in favor of .net, saying "well .net is the clear winner, look now you can access it from JS & C++ too because we feel it was so good" to me that sounds like pushing .net, under another name, not like going back on it. Microsoft definately seems to be strongly pushing the .net & WPF ideas forward, renaming them is a detail, and making them available through more languages is a very good bet!
0

Share this post


Link to post
Share on other sites
Game engines are not created everyday. This is a long time investment, and thus requires really good fine tuning. C++ isn't going anywhere from this niche.

Creating a Game is a different matter, and C# can be efficiently used in that domain...
0

Share this post


Link to post
Share on other sites
[quote name='sankrant' timestamp='1354791063' post='5007717']
Game engines are not created everyday. This is a long time investment, and thus requires really good fine tuning. C++ isn't going anywhere from this niche.

Creating a Game is a different matter, and C# can be efficiently used in that domain...
[/quote]

And unity's been proving that pretty well.
0

Share this post


Link to post
Share on other sites
[quote name='ranakor' timestamp='1354791845' post='5007720']
[quote name='sankrant' timestamp='1354791063' post='5007717']
Game engines are not created everyday. This is a long time investment, and thus requires really good fine tuning. C++ isn't going anywhere from this niche.

Creating a Game is a different matter, and C# can be efficiently used in that domain...
[/quote]

And unity's been proving that pretty well.
[/quote]

Yeah, That's how it is done. And I don't see this changing any time soon... The game engines will have to get more fine tuned (thus C++), and the game itself will need to get better productively engineered (thus C# or more productive things).

People will use the right tool for the job, and will have fun. :)

PS: Game Engine != Game. Both are engineered differently and require different kind of skills. (C++ and C# respectively in this case)
0

Share this post


Link to post
Share on other sites
What's funny is that 3 little additions to C# (maybe more, but 3 i can immediately think of) could keep all the C# advantages and remove the needs for the bits of C++
- Bringing support for new instruction sets faster
- Support for compiler intrinsics in C# code
- More control over CG management (ability to manually manage the GC arrays / ability to defragment the LoH)
0

Share this post


Link to post
Share on other sites
[quote name='ranakor' timestamp='1354797916' post='5007739']
What's funny is that 3 little additions to C# (maybe more, but 3 i can immediately think of) could keep all the C# advantages and remove the needs for the bits of C++
- Bringing support for new instruction sets faster
- Support for compiler intrinsics in C# code
- More control over CG management (ability to manually manage the GC arrays / ability to defragment the LoH)
[/quote]

I agree to this point, but it's highly unlikely.
Also, it will give you another C++, which is not required.
C# is looked upon as an enterprise solution by the majority. No Chance.

The ring has only one master, and that's C++. If the ring gets to C#, it will lead to the rise of *yet another dark lord*

Let C++ and C# remain the best tools in their own domain. (game-engine and game respectively)

Edit : Creating Game Engines require low level programming, thus C++ is the haven and heaven there.
0

Share this post


Link to post
Share on other sites
That is true in general about C++ for engines and C# (or other) for games, but in the case of the languages used for scripting a game, the experience of the game developers will increase, will it not? Since game developers far outnumber game engine developers, the very skilled programmers with slowly but surely find ways - a few of them - of soaking deeper into the previously frozen tundra surface of game engine development.

The same thing happened with C++ when it was younger than its lower level siblings being used for engines. We see another set of languages today competing for higher level function in principle just like the previous period of C++ evolution did.

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.

If you really think deeply about it, C# is being directed by industry leaders to indeed become the game development leader to surpass C++ some day. Even if they fail at that vision, C# will almost surely be a heavy weight someday in the same ring with C++. It is a matter of growth and training - literally.

Remember to think big picture and in terms of the very real industry cycles of technological development. In the non-game world, C# is gigantic. The development software for C# is comprehensive and improving. The massive crop of C# programmers will grow to maturity, ready to harvest someday in a big way in program development. A mass that large will have a large effect, just like real world physics.


Clinton
0

Share this post


Link to post
Share on other sites
[quote name='3Ddreamer' timestamp='1354857369' post='5008002']
That is true in general about C++ for engines and C# (or other) for games, but in the case of the languages used for scripting a game, the experience of the game developers will increase, will it not? Since game developers far outnumber game engine developers, the very skilled programmers with slowly but surely find ways - a few of them - of soaking deeper into the previously frozen tundra surface of game engine development.

The same thing happened with C++ when it was younger than its lower level siblings being used for engines. We see another set of languages today competing for higher level function in principle just like the previous period of C++ evolution did.

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.

If you really think deeply about it, C# is being directed by industry leaders to indeed become the game development leader to surpass C++ some day. Even if they fail at that vision, C# will almost surely be a heavy weight someday in the same ring with C++. It is a matter of growth and training - literally.

Remember to think big picture and in terms of the very real industry cycles of technological development. In the non-game world, C# is gigantic. The development software for C# is comprehensive and improving. The massive crop of C# programmers will grow to maturity, ready to harvest someday in a big way in program development. A mass that large will have a large effect, just like real world physics.


Clinton
[/quote]

C++ isn't going anywhere till we use/create game engines.
Do you want to know, why we switched from assembly? Productivity was only one of the reasons. The main reason was, that we changed the way we changed the way we created games. We introduced the concept of *game engines*. We started using C/C++, and we are going to use it for game engines until we see a radical change in the way we create games (maybe games withought game engines). Till then live happy. (very very long time).
Looking at a larger picture, only a *systems programming languages* like Rust or D can replace C++, if ever.

Till then (what? Eternity?) use C++ to write game engines, and use C# or your favurate language to write a cool game. I am doing that, and I do not/will not regret it :)
0

Share this post


Link to post
Share on other sites
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. But i really wish they made a C# compiler switch that allowed to go more unmanaged with no hurdles, could definately make C# replace C++ fully for game engines, however i wouldn't split where you do (game in C# and game engine in C++) even today it'd probably be closer to game in C#, game engine in C#; and a tiny subset of the game engine in a small C++ dll.
0

Share this post


Link to post
Share on other sites
Game Engine in C#? Humans are greedy creatures. Every inch of performance counts, and technically C++ will always outperform C#. Its one time investment!
System programming != Low level programming.

The day someone writes a C++ compiler, as optimised as the present ones, 'in C#'; that day I will say 'welcome new C++'.
Why would anyone want to create unmanaged C#? It will give the world another C++. Believe me, we won't switch from C++ in case of Game Engines any time soon.

Focus on creating games and use C# if you like.

:) PS : One day, the earth will end, and we will live on mars. But we will still remain human beings.
0

Share this post


Link to post
Share on other sites
[quote name='3Ddreamer' timestamp='1354857369' post='5008002']
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.
[/quote]

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 (warning, I said, project, not solution) . The only language that can be fooled to do this is Go, but just because it doesn't really have a concept of "project"... perhaps D can do it? ( I am not sure).

Until then, you'll have a solid and clear division between "system code" and "game code"... and every time something has to move from here to there it's going to be a big decision with lots of implications.. this will basically leave native devs firm in their camp and managed devs firm in their camp.

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. Edited by kunos
0

Share this post


Link to post
Share on other sites
The performance issue of marshalling only applies when you , well, marshall, so it's a non issue when doing parts strictly managed and others strictly unmanaged, what matters to keep cost low is not going through the frontier often. However it could be all C# & no C++ if intrinsics were available directly from managed code, keeping the full managed goodness where you need it, it's not like it's impossible "by design", it's just missing from .net so far.
0

Share this post


Link to post
Share on other sites
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)


0

Share this post


Link to post
Share on other sites
[quote name='kunos' timestamp='1354876585' post='5008079']
[quote name='3Ddreamer' timestamp='1354857369' post='5008002']
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.
[/quote]

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.
[/quote]

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#.
0

Share this post


Link to post
Share on other sites
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.
0

Share this post


Link to post
Share on other sites
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.
0

Share this post


Link to post
Share on other sites
[quote name='ranakor' timestamp='1354874169' post='5008073']
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.
[/quote]

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

Share this post


Link to post
Share on other sites
[quote name='MJP' timestamp='1354926619' post='5008281']
You could maybe argue this for PC games, but not for consoles.
[/quote]
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?
0

Share this post


Link to post
Share on other sites
[sup]Since we are now on the hardware demands...[/sup]

[sup]Every few years there is a major hardware advance and we are [i]overdue[/i] 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. [/sup]

[sup]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.[/sup]

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...

[sup]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. [/sup]

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


[sup]Clinton[/sup]
0

Share this post


Link to post
Share on other sites
''
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++.
0

Share this post


Link to post
Share on other sites
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
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0