Sign in to follow this  
Adyrhan

Will it be C++ the preferred game dev language in 3 years from now?

Recommended Posts

Hi all! I'm new here and I expect to make friends and learn from you guys smile.png

 

I was reading this article here : http://t-machine.org/index.php/2013/10/21/what-programming-language-should-aspiring-game-developers-learn-in-their-free-time/?utm_content=buffer4611f&utm_source=buffer&utm_medium=twitter&utm_campaign=Buffer

 

It was quite interesting to me since I want to become serious in game dev and here the author proposes that C++ may not be the game development language that is now. Do you people think the same? Which one else could be? Java, C#, D perhaps?

Cheers

Edited by Adyrhan

Share this post


Link to post
Share on other sites

C++ probably isn't going anywhere for core game development. Big parts of games today are written in other languages, like Lua, python, C#, Java, Javascript, that are more productive and can sacrifice top-tier performance where they are used to glue together low-level parts of the engine, implement game logic, and scripting events. D is interesting, and among those you listed is probably the only viable option to usurp C++'s role in game development -- but its young, doesn't have broad support, and doesn't have the momentum or legacy that C++ has.

 

At the same time, C++11 in a lot of ways makes C++ itself more productive, and it may actually reclaim a little bit of ground from the productivity and scripting languages. If your interest is in writing the low-level systems of AAA games (rendering, memory management, task-systems, AI building-blocks), then C++ is a necessary skill, and perhaps D might someday be viable. For gameplay things and non-AAA games, C# and Java are common, and Javascript, LUA, and python are viable in their own environments (Web Browser, Love2D, pygame, respectively), and are a good skill to have.

 

The other scenario that C++ excels at is cross-platform logic. If you write your android game in Java, or your iOS game in Objective-C, or your Windows Phone game in C# its difficult to port to the other platforms -- but all of these platforms support C++ in some way. The common pattern for cross-platform mobile games is to write the engine in C++, using something like LUA for scripting and maybe gameplay code, and then the platform's preferred language to deal with "platform stuff" like User Interface, filesystems, networking, and input.

Share this post


Link to post
Share on other sites

Hi all! I'm new here and I expect to make friends and learn from you guys smile.png

 

I was reading this article here : http://t-machine.org/index.php/2013/10/21/what-programming-language-should-aspiring-game-developers-learn-in-their-free-time/?utm_content=buffer4611f&utm_source=buffer&utm_medium=twitter&utm_campaign=Buffer

 

It was quite interesting to me since I want to become serious in game dev and here the author proposes that C++ may not be the game development language that is now. Do you people think the same? Which one else could be? Java, C#, D perhaps?

Cheers

 

It depends. For AAA engine code C++ is likely to remain dominant for another 5-10 years atleast (There is no decent alternative available and the language most likely to replace C++ is a newer version of C++)

 

For game code however C++ have allready lost quite alot of ground to higher level languages (Allthough it is still being used in some areas).

 

If you are going to be serious about game development or programming in general you will have to learn multiple languages(C++ is one of the languages you should learn, but its not the only one you need to know and imo its not a good language to learn programming with), if you're just starting out i'd recommend going with Python or C#, they are both popular, reasonably easy to get started with and will remain highly useful regardless of what path you take in the future. (They're both used in everything from web development to AAA games)

Edited by SimonForsman

Share this post


Link to post
Share on other sites

I have a feeling D will end up in the same way as Eiffel, start with a few innovative ideas, single party keeps its thumbs on it a bit too long preventing a network effect, people feel no progress, it gets forgotten.

Share this post


Link to post
Share on other sites


The other scenario that C++ excels at is cross-platform logic. If you write your android game in Java, or your iOS game in Objective-C, or your Windows Phone game in C# its difficult to port to the other platforms -- but all of these platforms support C++ in some way.

<offtopic> It saddens me that after years of promising "write once, run anywhere", our best bet for cross-platform development is still the language designed to be an extension of portable assembly language... </offtopic>

Share this post


Link to post
Share on other sites

Whilst games might not be written in C++ as much now, it is still used for plug-in development for 3D packages such as Maya.  And on the same note, many 3D packages now use Python for scripting.  So I wouldn't dismiss learning C++ too soon...

Share this post


Link to post
Share on other sites

Doesn't every major gaming platform (besides consoles I guess but they are so closed off so screw them :) ) at this point support .NET in some way shape or form? Aren't there converters from .NET to mobile devices that aren't MS? Mono makes .NET available on Linux and Mac. 

Edited by rpiller

Share this post


Link to post
Share on other sites

C++ is said as decaying for long long years (I heard it the first time around 10 years ago), but it still hasn't lost its strength. If you want to target the big gaming platforms, C++ is the way to go.

I would certainly tell anyone that wants to get employed in game development to learn C++; as well to those who want to get into PS4 and Xbox One indie wagon.

It's powerful and cross-platform. From the languages I use, it is no doubt the one I deem as the best choice for most of my projects.

 

Still, I would also advise them to learn Java, javascript and possibly a scripting language such as Lua. If the processors start to evolve in a really fast way (faster than now) scripting languages can even turn into the most used technology. But that won't happen in 3 years; I bet.

 

It is a common problem: people consider that using C++ will make your design side worse due to the time you spend on programming. Well, I don't agree with this. I think I can make the same game with C++ I could do with Lua, maybe not on the same time-stamp, but, given the "fun and simple" design concept behind this belief, it usually doesn't take that longer.

 

Disclaimer:

You've reached a sensitive topic. Most things people say on "language wars" are personal opinions, sometimes unfounded; my commentary included. Of course we do genuinely believe what we're saying, but you have to filter what to believe. For instance, I've plans of programming for mobile at some point, but have never done it. On the contrary, the author of your linked site clearly likes mobile development... and probably got frustrated on trying to learn and use C++ at some point.

Edited by dejaime

Share this post


Link to post
Share on other sites

people consider that using C++ will make your design side worse due to the time you spend on programming

 

I don't think that's quite the argument that is typically being made. To a good engineer C++/Java/C# are all pretty much equivalent, and the time taken to accomplish a given task will vary mostly with the available APIs (an area where C++ has an edge when it comes to game development - less so in other fields).

 

The problem is with inexperience - C++ comes attached to significantly more complexity than it's newer bretheren, and until you are extremely familiar with both the language and the engineering practices it makes necessary, your productivity is unlikely to be as high as a similarly experienced Java programmer.

Share this post


Link to post
Share on other sites

 I don't think C++ is going anywhere any time soon.  There is no practical replacement for it.  Also the C++ committee has recently become very active; C++11 was a large improvement, making C++ feel almost modern, and C++14/17 will be out soon enough. 

 

 Which language you should learn for game development depends entirely on what type of games you wish to make. If you don't mind being stuck in Unity land, C# it is.  

 

You say you want to "become serious in game dev". Serious to me means knowing C++.

 

 Languages like C#/Java/Javascript/Python are fairly brain dead and don't require much effort to learn, so learning them once you know C++ isn't difficult.

 

Alternatively Languages like Haskell/Lisp are a tad bit more interesting, and I think an understanding of functional programming will get you farther than just tacking on junk language X.

Share this post


Link to post
Share on other sites
I'm a little confused why people would assume C++ would ever go anywhere unless some language takes hold that does what C++ does, but better.

Frankly, although I'm a huge advocate of languages like C# and they're -always- more fun to work with, the fact is that for fast, no hands holding code C++ doesn't have much competition. Realistically most companies have used C++ for a long time, they have code for it, their programmers are trained in it, and for gameplay scripting or anything of the sort that doesn't cause catastrophe if it loses any speed, C++ is already being defeated.

No real way around the fact it's here to stay unless something better comes along, even if computers get more powerful, AAA companies always strive to be like Hollywood, bigger and badder, so that kind of requires sticking with C++ for the time being.

Share this post


Link to post
Share on other sites

 

 

No real way around the fact it's here to stay unless something better comes along, even if computers get more powerful, AAA companies always strive to be like Hollywood, bigger and badder, so that kind of requires sticking with C++ for the time being. 

 

 

With so much being offloaded to the GPU and if physics cards ever take off, and with the CPU speeds, the question has to be asked, "is C++ really needed for anything else?" AAA companies also have budgets and timelines and I have to think at some point the hardware will be specialized and fast enough to where engines can be written without C++. If gameplay is the only thing remaining then managed languages/scripting is far easier and cheaper and more flexible than C++.

 

What ever happened to physics cards btw? They were all the talk a couple years ago but they don't seem to be taking off.

Share this post


Link to post
Share on other sites
I think C++ will stay where it is but its popularity won't improve. It will probably just remain... stable.

rpiller said, "What ever happened to physics cards btw? They were all the talk a couple years ago but they don't seem to be taking off."

My response: NVidia, a graphics card company, bought out PhysX, I think for their software. Then they now have GPU-accelerated physics or PhysX. I think the idea of physics cards is pretty much over now.

Share this post


Link to post
Share on other sites

There is no one language to rule them all.  You can write a comercial quality game in pretty much any language that you want.  Of course the artical says in the next three years.  Well the two next gen consoles have been announced and I'm fairly certain that the xbone and the ps4 currently require development to be done in C++ (not so much as require but probably the only tools currently available are in C++).  On the PC it may be different.  It may be that people even focus on web technologies in the future.

 

If you want to know which language to learn then there are a few different types of language that would be good to know:

 

A C variant language: C / C++/ D / Java / C#
A Functional Language: Haskell / Erlang / Scala / F#

A Lisp Variant: Common Lisp / Scheme / Clojure
A High level scripting language: Javascript / Go / Dart / Lua

A Low Level Assembly Language: x86 / Mips / Arm    (maybe do two of these a RISC Arm and a CISC x86 for comparison)

 

Not saying you should be a guru in all or even any of them.  But a working knowledge of each of the different styles of programming and their pros and cons will help you when it comes to problem solving and algorithm design which is the real bread and butter of programming.

Share this post


Link to post
Share on other sites

I'd like to see a complete rehash of C++ into a new language, honestly. I appreciate the work that's being done by the committee, but making a clean break and starting over would give us an opportunity to ditch a lot of the old baggage and get some much nicer means without sacrificing the ends.

Share this post


Link to post
Share on other sites

Well I'm not completely new to programming, but never started serious into game development. I played with C++ like 4 years ago, but since almost like 2 years now ( well, a year since I became serious in programming ) I've been programming in Java for Android. Also played with Python, Bash (I use Linux in one of my computers) but as I said, I just made a Pong clone I remember using Allegro and some C++ (well, C code using c++ classes xD) not really knowing very much of what I was doing. I've been digging out info, ebooks and printed books and C++ basics are easy to me, but the long list of common practices and techniques that are used professionally (like what I've asked in other thread about separating interface from implementation - pimpl) are all new to me, so I wasn't coding in C++, may be some other weird thing :D

Thanks for your advice !

Share this post


Link to post
Share on other sites

I have a problem with people comparing C++ to C#. The language in C# is really meaningless. It's more about the .NET framework than anything else. However C++ doesn't even come close to anything like the .NET framework built-in. .NET really changed the idea of how we look at things like this yet no one seems to accept that lol.

Share this post


Link to post
Share on other sites

With so much being offloaded to the GPU and if physics cards ever take off, and with the CPU speeds, the question has to be asked, "is C++ really needed for anything else?" AAA companies also have budgets and timelines and I have to think at some point the hardware will be specialized and fast enough to where engines can be written without C++. If gameplay is the only thing remaining then managed languages/scripting is far easier and cheaper and more flexible than C++.

I'm not really sure what your point here is, you make it sound as if as performance increases we will have "a bunch laying around" and can simply switch to less optimizable languages just as a time saver. Even as computing performance goes up there is always more to add, especially when it comes to triple A games, there's always more to add with physics, lighting, world size even, quality is always going up to keep pace with hardware. I mean really, animated films demonstrate we can make even better looking graphical effects for games but it just isn't feasible to do a lot of their techniques currently.

tl;dr: Regardless of machine performance, C++ is just the industry favorite "middleground" for a language. It's not as specific and ridiculous to code with as assembly but not as high level as something like Python either. That "difficulty slider" will always be there, it may just swap out contenders.

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