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

Started by
54 comments, last by Satharis 10 years, 6 months ago

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.

Advertisement

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.

void hurrrrrrrr() {__asm sub [ebp+4],5;}

There are ten kinds of people in this world: those who understand binary and those who don't.

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 !

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.

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.
Satharis - I think you and rpillar both make good points regarding performance. However, let's not forget we are getting to a point where increased performance has diminishing returns. At one point, having three times the power could mean almost 3x the game. Now it means better shadows and that's about it.

Having the human resources to make high-end games is becoming a problem as well.
If CPU performance didn't remain a problem on PCs then AAA games companies wouldn't be pushing for things like the Mantle API to lower the cost of submitting work to the GPU.

There is always the ability to do more with what we've got, just that right now you can give up some of that performance to do things in an easier manner if you don't need that bleeding edge performance.

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.

Yeah, but 95% of all the better looking graphics will be from the GPU not the CPU leaving the CPU free to do most of the gameplay which can be written in a difference language than C++, even for bleeding edge games.

Physics is mostly still done on the CPU. I have to imagine that'll change at some point and be off loaded to GPU or another card (will be more common). Gameplay in a lot of engines are done with scripting languages already. A lot of engines aren't written from scratch these days and so they are reusing parts from old C++ engine code. When physics is removed from the CPU and someone (AAA) wants to write a new engine, I have to imagine they'd seriously look at doing it in a managed language to speed up the process and give them other benefits that comes with a managed language.

Also what really is AAA. I mean how many games on the market really push the hardware today? COD? Battlefield? In terms of volume of games that market is pretty small I think. I think there are diminishing returns in terms of it taking so much man power to get the assets out to take advantage of the extra CPU that the top end AAA market (which moves every 6 months or so) will only get smaller and smaller. I think it's already happening as "good enough" and budget issues seem to be setting in.

Will C++ always be there for the top end AAA games? Sure, but it'll almost become a specialty thing that not a lot of people will ever get into. It'll be a huge risk for companies that has a huge payout if you can pull it off, but many won't.

I think it's safer for a company to not go down the C++ route when making a game. Lower budgets using managed languages that better integrate with tools that are easier to make, make more sense financially I think, when "good enough" can still pay the bills.

Sure, gameplay can be written in a less efficient but simpler language (scripting languages)

But there will always be high performance code running on the CPU, since not everything can be run in parallel (and we dont have proper GPU programming languages that could be a integral part of the program itself anyways, just small snippets that can be uploaded, i guess)

It is unlikely that this nonparallizeable code would be moved onto yet another external computing unit since the CPU already has the right architecture to run such code (unlike the code we now run on GPUs)

I think a problem with all the new languages that pop up is that they sacrifice efficiency even though it shouldnt be necessary. I think thats what Khatharr meant by a rehash of the language - make it better but maintain the C++ ideology of not paying for what you dont need/use.

For example C++ code becomes fairly bloated when you try to apply compile time logic because of the template system which wasnt probably designed as a solution for the more complex compile time logic. This becomes even worse with the silly separation of code to headers and cpps which adds a whole bunch of copypasta. There are many things that could be implemented in a cleaner way (eg. threads, better primitive data type names like int<8> instead of char, allocation being done through a class rather than a magic keyword like with everything else etc)

o3o

Hi adyrhan,
Reading all replies and thinking about it, I'd first try to find out where you want to be/ what your goal is. "Entering the game industry" honestly isn't very explicit. If you want to go for the AAA route, do you want to be developing:
- tech, engine code
- shaders
- ai code
- tools
- gameplay
... Etc

Depending on your goal, I'd go for the most common/used/best language for that specific subject.
If you go for do it all yourself, find out what you want to deliver and chose the language that will bring you that. Etc, depending on where you want to go.

Hope this helps

Crealysm game & engine development: http://www.crealysm.com

Looking for a passionate, disciplined and structured producer? PM me

This topic is closed to new replies.

Advertisement