Why C++ for Unreal 4?

Yeah I agree but every so often you get that rare gem that can script. For instance, here our Technical Artist can code in C#, script in Maya (MELScript), help with shader code, etc.

Ideally though you don’t want the Audio/SFX guys touching any script but I do recall most of them were fully capable.

[=;18531]
Yeah I agree but every so often you get that rare gem that can script. For instance, here our Technical Artist can code in C#, script in Maya (MELScript), help with shader code, etc.

Ideally though you don’t want the Audio/SFX guys touching any script but I do recall most of them were fully capable.
[/]

I can do art and code C++. Maybe I’m not best at C++, but good enough to watch my self, and ready to go library in form of UE4 helps a lot. GC in UE4 resloves many possible issues for memory management, though you still want to watch yourself, and preferably delete objects manually when you no longer need them. Just to be safe.

For me, it is really not about what you can do. But what you want to learn.
As a side point, if start with “nooo it’s to hard I don’t know how to do it, let someone else do it for me”, then you probably never learn anything.

edit:
To be honest I also would prefer some other languague instead of C++. Header files drive my crazy, no built in reflection system also doesn’t help, some of syntax is just atrocious compares to C# (lambdas), lack of LINQ for collections browsing also can be PITA.

Important thing to realize that for gameplay programming we only use small subset of C++ functionality. If you are pro you can get all the power, but if you are not, can still produce working code without known any of more esoteric functionality of C++.

[=MonsOlympus;18454]
I dont think it matters what IDE or language it uses
[/]

To some it doesn’t, to some who actually want to do more than just bare minimum and are not afraid to put sweat and blood into it, it does matter a lot.

[=;18441]
I genuinely don’t want to hear about python, javascript, java nor c# where games (AAA games) are involved.
Go here Google Publishes C++, Go, Java and Scala Performance Benchmarks - ReadWrite,
see how some of the languages compare to C++.

Why would anyone choose anything but C++ for AAA game development is beyond me.

But it is not even about the performance.
The deeper you go with coding the more you starting realize that C# or Java are not only not easier but lots of things are far more difficult to do with them than with C++.

Guys, is C++ perfect? Absolutely not. Is it better for games development than C# or Java or any other modern language. Without any doubt.
[/]

The thing is we are NOT AAA developers, as much as I believe in the power of one person or small teams or even mid tier size teams. There is only so many hours in a day and only so much we can get through, whatever makes life easier for us… Games development is difficult and making the equivalent of Dragon Age 3 for a team of ten could take 5 years + although thankfully due to quicker iterations, scripting for junior engineers and better workflow in engines like Unity and now Unreal 4 things are a lot brighter for us.

Unity found merit in allowing small developers to have access to rapid workflow concepts, including rapid language choices. But this conversation is Moot anyway, Epic give us access to Blueprint’s, the engines in Beta and I think it’s nothing short of amazing. We have C# coming to UE4 anyway… It’s win win for .

The language choice is largely irrelevant to me, when you have staff eating away at your funds the only things I care about is making a good product, time and money. If said language stopped me from making a “good product” then it would become an issue.

[=;18581]
The thing is we are NOT AAA developers
[/]

I am and I’m pretty sure some others too.

[=;18581]
The language choice is largely irrelevant to me
[/]

To me is very relevant.
If I have a choice between mediocrity and excellence I go for excellence each and every time.
C#/Java/python and what not are mediocre languages allowing at best mediocre results. It is not for me.

[=;18584]
I am and I’m pretty sure some others too.

To me is very relevant.
If I have a choice between mediocrity and excellence I go for excellence each and every time.
C#/Java/python and what not are mediocre languages allowing at best mediocre results. It is not for me.
[/]

These languagues are not medicore, but they were never meant for creating high perfomance applications like games in first place.
C# is closest to it, with new native compiler. But when we will see this compiler in is whole another question, and it will probably be locked only to Microsoft platform anyway.

[=;18584]
I am and I’m pretty sure some others too.

To me is very relevant.
If I have a choice between mediocrity and excellence I go for excellence each and every time.
C#/Java/python and what not are mediocre languages allowing at best mediocre results. It is not for me.
[/]

I’ve got to admit, I’m intrigued… There isn’t that many AAA’s left out there, most of them use their own internal engines because it makes more sense to…

Which one are you with?

[=;18531]
Yeah I agree but every so often you get that rare gem that can script. For instance, here our Technical Artist can code in C#, script in Maya (MELScript), help with shader code, etc.

Ideally though you don’t want the Audio/SFX guys touching any script but I do recall most of them were fully capable.
[/]

Scripting language for non-programmers (artists, rule designers, testers…) for productivity is fully naive fantasy. Whatever they use, non-programmer people are not able to design and debug program structure, and their code is simply full of patchworks and bugs - ultimately wastes programmers’ time. And if you’re running a large team, then you probably want best people in their profession. And best people (artist or whoever) usually never give a **** on any other profession - such as scripting.

I know a few of people can do both of code and art, but that’s pretty exceptional case.

And, CG TAs are different. Because their script is not their product. Whatever they put on their script, it will not be shipped to customers. It will break only their system. What they ship is just rendered images. I wouldn’t care whatever script they use for their own work, but for the product? That’s pretty harmful.

The only way to make them to work properly on final product stuff is providing declarative and static authoring tool which performs full validation on everything to prevent their bugs. That’s what GUI editors do.

In that context, a programming language should be chosen only for programmers.

Ah, if only the budgets were big enough to staff only engineers (but they never are). Then Designers could just focus on ‘planning’ the game.

And sadly, I’ve seen programmers introduce way worse bugs then designers. Designers are within a ‘sandbox’ and are firmly restrained. But the programmer can wreck great havok in C++. For the average AAA project I am that guy that gets pulled in to fix those buffer overruns, data race conditions, NaNs, and memory stomps (sometimes for optimization but not often). I would estimate many, many man hours are wasted away putting out fires

Granted, some of this might get alleviated if people didn’t have such strong egos in my industry and would let someone peer review their submits

[=;18584]
I am and I’m pretty sure some others too.
–SNIP–
C#/Java/python and what not are mediocre languages allowing at best mediocre results. It is not for me.
[/]

I have trouble picturing too many AAA studios that would hire someone with such a closed minded perspective on tools.

[=Serapth;18613]
I have trouble picturing too many AAA studios that would hire someone with such a closed minded perspective on tools.
[/]

C#, Java or Python (or any other similar scripting languages) are sometimes pretty nice tool, but obviously improper to some cases. If I have an ultimate tool which can cover everything, why should I waste my time to look up others which cannot cover everything?

[=drawtree;18620]
C#, Java or Python (or any other similar scripting languages) are sometimes pretty nice tool, but obviously improper to some cases. If I have an ultimate tool which can cover everything, why should I waste my time to look up others which cannot cover everything?
[/]

Actually, and please dont take this as an insult, but any programmer having the perception that C++ “is an ultimate tool” needs to broaden their horizons. I certainly wouldn’t hire a candidate that showed a lot of the animosity towards languages I’ve seen in this thread. For the record, I am not talking about void in the slightest. I disagree with his conclusions, but his decisions are at least informed. Many of the other comments frankly smack of parroting the whole “C++ is uber” party line that is so common amongst beginning game developers.

Even in the world of game programming, single language pipelines are virtually non-existent. Even look at Unreal which is about as C+±centric of any of the engines out there and you will see plenty of different languages used. C# is used as part of the build process, various shading languages are used, Blueprint they even make pretty heavy use of batch/bash programming. This is because you pick the best tool for the job. The ultimate argument going on here is if C++ is the best tool for the job of gameplay programming, and many believe it’s not, which is why you have a C# project being undertaken. That every single game engine offers some level of scripting support ( CryEngine has LUA, Unity has C#/JavaScript/Boo, Hero Engine has HSL, Havok uses LUA, Gamebryo uses LUA ) and those engines have powered dozens of AAA titles. Most of the art pipeline is programmable in Python. Hell, an entire AAA game ( Eve Online ) was written in (stackless) Python, while Civilizations 5 game logic was implemented in it.

There is no one ring, er… language to rule them all.

EDIT: Oh, and C# and Java are not scripting languages, although the lines can certainly get blurry.

[=Serapth;18613]
… with such a closed minded perspective on tools.
[/]

Nope, not closed, but firmly made up based on over a decade of experience.
I am not ‘dissing’ any languages, but for game development C++ is the best choice.
Sure you can write game in virtually any language.

The big question is, why would you if you have C++?

For me the best example of failure of C# is Visual . Since it has been rewritten fully in C# (VS2010), downpour of complaints about its poor performance couldn’t stop - and still continues. Just look at what VS 2013 is now. It simply cannot deal with code. It’s nothing but sluggish and unresponsive. Why? Why people who invented C# cannot make a normally behaving software, and struggle for years now to improve its performance in the language they’ve created?

The truth is that managed languages due to technicalities will never be able to outperform natives.

I am not a language zealot. I am over a decade long professional programmer and I worked with number of different languages.I also always try to pick best tool for the job. For my job (making AAA games) C++ is best tool in my opinion.

If in the future there will be a language better than C++ I will not cling to C++ but try to learn that new language. I will not moan, complain or try to by being “passively aggressive” insult people who actually work with it and provide proves of its superiority.

If C# or Java were better for writing games than C++ I would most certainly use them. But they are not. That’s why I use C++.

Sorry I’ve not read any post’s in this thread. All i can say is ‘What the… Why C++? That in it’s self explains large amounts about your understanding of realtime code’, Realtime is exactly that REALTIME. Math functions the base of any good engine are far faster in C++, Threading is far better in C++, Yep you have no automatic memory control and garbage collection but with a little extra effort you want it for realtime anyway. Your far better of rolling your own memory allocation and threading. Why C++ lol, If anyone knows of a faster code base let me know, I’ve been asking for a C++ replacement for years. Lets face it it’s like what 20 years old now, Someone for the love of God come up with something faster and ill be the first inline.

I don’t get why people want high level scripting languages when, if those same people would pull the finger out (and I’m not talking about their mouth) they’d realise that c++ isn’t all that bad. If they feel its a step up, well then they need to step up and bat. Games making isn’t, and shouldn’t be for tards. If you are that lazy go do something else. c++ is perfect for this application. I don’t want to come across as harsh but for goodness sake you can’t expect to make a AAA game without some kind of learning and pushing yourself a bit.

[=KingBadger3D;18697]
Realtime is exactly that REALTIME. Math functions the base of any good engine are far faster in C++, Threading is far better in C++.
[/]

I’m glad we can all agree that the engine should be re-written in Fortran.

[]
I don’t get why people want high level scripting languages when, if those same people would pull the finger out (and I’m not talking about their mouth) they’d realise that c++ isn’t all that bad.
[/]

I’ve been doing C/C++ for roughly 20 years, it’s not that people are unwilling to learn C++, most of us who want other language options already have extensive experience with C/C++. We just don’t prefer it for game logic, that’s it. I personally much prefer flavors of LISP, Haskell, Scheme, etc, because those are the languages I can work the fastest in, not C++.

Time is the most valuable thing in my life, and anything that saves it is important to me. I’ll sacrifice 1% performance for it.

[=VFe;18738]
I’m glad we can all agree that the engine should be re-written in Fortran.

I’ve been doing C/C++ for roughly 20 years, it’s not that people are unwilling to learn C++, most of us who want other language options already have extensive experience with C/C++. We just don’t prefer it for game logic, that’s it. I personally much prefer flavors of LISP, Haskell, Scheme, etc, because those are the languages I can work the fastest in, not C++.

Time is the most valuable thing in my life, and anything that saves it is important to me. I’ll sacrifice 1% performance for it.
[/]

Couldn’t agree more…

[=;18690]
Nope, not closed, but firmly made up based on over a decade of experience.
I am not ‘dissing’ any languages, but for game development C++ is the best choice.
Sure you can write game in virtually any language.

The big question is, why would you if you have C++?

For me the best example of failure of C# is Visual . Since it has been rewritten fully in C# (VS2010), downpour of complaints about its poor performance couldn’t stop - and still continues. Just look at what VS 2013 is now. It simply cannot deal with code. It’s nothing but sluggish and unresponsive. Why? Why people who invented C# cannot make a normally behaving software, and struggle for years now to improve its performance in the language they’ve created?

The truth is that managed languages due to technicalities will never be able to outperform natives.

I am not a language zealot. I am over a decade long professional programmer and I worked with number of different languages.I also always try to pick best tool for the job. For my job (making AAA games) C++ is best tool in my opinion.

If in the future there will be a language better than C++ I will not cling to C++ but try to learn that new language. I will not moan, complain or try to by being “passively aggressive” insult people who actually work with it and provide proves of its superiority.

If C# or Java were better for writing games than C++ I would most certainly use them. But they are not. That’s why I use C++.
[/]

From 4 pages of posts, all I’ve seen you be, is a god d@mn zealot. You don’t just advocate C++ as a superior choice to other languages, you made it your alpha and omega.

You want to have the most power possible to make the best games, etc.? Learn Assembly and write in nothing but assembly. A recent engine written in 100 % assembly is in the works for the Nintendo 3DS and have amazing 60fps 3D performance. Sure, it will take 10x longer to write whatever it is you need to write, but it will run approximately 40x faster than anything you could ever write in any other higher level language in existence. Your argument now crumbled.

People are not whining or moaning because they need to learn something new. C++ is just not taught as much as any more. It’s usually C# or Java. A lot of those who learned C++ so many years ago says that people today can’t learn C++ any more because they were not around when computers were invented and Hardware Architecture was taught like a d@mn religion! Please take your C++ crusade elsewhere because you are brining nothing positive to this discussion whatsoever and your posts have generally been nothing but in bad taste.

Now that that’s out of the way, I have something else to say which I noticed that z0id seemed to relish in:

Use Cases.

Use Cases are actually useless if the requirements are clear. This was taught to be my an industry professional of about 20 years. You don’t actually need use cases for anything if your requirements are clear enough. Which is why a lot of the performance talks of language versus language is useless. If the Requirements are clear-cut then you won’t need anything else to determine the right tools for the job.

[=;18573]
To some it doesn’t, to some who actually want to do more than just bare minimum and are not afraid to put sweat and blood into it, it does matter a lot.
[/]

The only thing I would put that much effort into is my own language, I simply use other peoples languages and never contribute to their betterment, though UScript and Blueprint I did/do make that effort because C++ is less important to me as a gameplay programmer. I just fail to see your argument anymore, youre saying C++ is better because its an industry standard yet APIs are all over the place and never adhere to any single standard, web technology is very pervasive in todays industry and there are alot of programmers who know multiple languages, languages that VS doesnt support. I personally love Sublime Text it is super fast and whilst it might not be considered an IDE it is better off for it, for the reasons you mention and more, VS has always been slow even before the C# additions I guess this just made it worse so you just gave us an extra point against using C++ with VS.

I hope youre actually as good a programmer as you make out, I’ll be looking forward to seeing your AAA title. In the mean time I must return to vector calculus and player physics, its alittle slow going because of C++ even though my maths is decent.

[=;18569]
To be honest I also would prefer some other languague instead of C++. Header files drive my crazy, no built in reflection system also doesn’t help, some of syntax is just atrocious compares to C# (lambdas), lack of LINQ for collections browsing also can be PITA.

Important thing to realize that for gameplay programming we only use small subset of C++ functionality. If you are pro you can get all the power, but if you are not, can still produce working code without known any of more esoteric functionality of C++.
[/]

All off this, well said Its great to hear that. For me if we know C++'s weaknesses we might be able to improve on it in the future rather than just accepting blindly, C++ has come along way just since I originally began using it but in comparison UScript came further but C++ has made alot of headway the past few years and is looking to improve more. C++ just seemed to stagnate for awhile there.

These kind of threads are always interesting as they grow along. To me it seems we have the c++ folks who are probably all pretty happy they can get in there and tinker with their fav language. Then there is all the folks who use and know C#, javascript , python ,lua etc and are not so happy with having to learn or relearn c++ and many may even have come over from Unity where they were happy coders and now have to start a new. So that group is a little disappointed and maybe a little frustrated having to learn something new. Then there are the rest of the folks —basically a blank slate who do not know know much of anything …and are off to learn c++ or at least that is their plan for now.

                               Now I am certainly more in the last group so I have no real zeal for c++ or any other language. Since I have really been blown away by the possibilities of UE4 and the entire package --I plan along with learning blueprints plan on starting on learing c++ .  Since its all new anyhow ---- to me its not such a bad thing what Epic did here. 

                               Its seems to me alot of this conversation is really just where folks find themselves as to how they care or don't about c++ and UE4. And maybe if I was not such a noob I would know which arguements were better --but for now I am on the c++ side. Smiles. 

                                And if anyone wants to chime in with resources ie books, tutorials etc worth checking out to learning c++ ---- please share them. 

Rich