Why C++ for Unreal 4?

[=;132815]
.NET Native is lol. Bait for simpletons.
[/]

No. .NET Native is what MS should’ve done a long time ago. That’s the future of Windows development. It’s nothing to dismiss. I dislike and (obviously) distrust Microsoft. I would never choose to further tie my software to their ecosystem. That doesn’t change the tremendous, competitive impact .NET Native will bring to C# and Windows once it’s matured. This is also potentially destructive in due time, because it would logically create a larger divide between those developers who are equipped to code for all platforms vs. those who are, again, only becoming equipped (via C#) for Windows and Mono. That said, it’s not a big concern anymore to me. It’s not like it used to be before the rise of Google and Apple. Anyway, I’m still really surprised that MS hasn’t acquired Xamarin to slowly neuter it. I digress.

No. .NET Native is what MS should’ve done a long time ago.
[/]

native for what?

[=EruArnold;131539]

For VegasRich:

“I HATE macros. I can’t even count the times that some jack *** used a macro and didn’t add a brace, or some other little bull **** thing and it lead to hours of debugging hell.”
“I work in C#, C++, Lua, Java, or whatever gets the job done fastest. Any language is only as productive as the coder using it - if you’re unproductive then you’re unproductive. Understand: the problem is YOU.”

Given that “debugging” is a major part of programmer-productivity, this makes your 2 arguments logically-inconsistent with each other… :stuck_out_tongue:

[/]

My point exactly - certain language features harm productivity more than help it. Macros are actually a compiler feature more than a language feature, and in my opinion cause more grief than they are worth and the compiler won’t help you much here. At least with templates you get a better safety net. Use a safer paradigm, spend less time debugging. So, maybe not as inconsistent as you believed?

Mono isn’t going to be used, anytime, by any Linux individual who knows about the whole ‘mono’ war,and it was ugly.

Short story, its not going to agree with the Linux license, and if you need more proof its not legally tenable, then just bing for : mono groklaw.Nuff said :wink:

Oh btw, Fedora threw the whole thing out, in its default setup, and given how huge Redhat is, if that doesnt’ give people reason to pause on mono. nothing will :wink:

I know its just for scripting, but it applies nevertheless.

I’m not aware anything has changed in this ecosystem.

YOu used to ‘have’ to get mono from you know where, or it wasn’t considered legal. I somehow doubt much has changed. That was the biggest thing as I recall, the ‘novel’ challenge.

cheers
nl

To VegasRich:

I saw yesterday another talk with Stroustrup - here is his take on Macros and “De-Macrofication”(time-coded link), he shared your sentiments exactly…

I wouldn’t consider this a minor-issue, especially for UE4, which is HOPELESSLY-RIDDLED with Macros…
Stoustrup talks about tools for “auto-removing” Macros (~60%->~90% of them) - I don’t know what they would be replaced with - probably combinations of features (including Templates, and perhaps even Concepts-Lite?). I really dig where the whole “Concepts” direction is moving - this should allow better safety for templates and might be the final-nudge needed for maintainers of large code-bases for migrating/re-factoring their code…

I really hope that moving-forward Epic would seriously-considered doing such migrations for their code-base, if not for their user’s sanity then at least for their own… Migrating a code-base from C++11 into C++14 should be relatively straight-forward and natural.

To worm:

There has been much hype and enthusiasm about both IL2CPP and .Net-Native - From what I gather for now, most of it is yet unjustified.

For Unity, there are still out-standing/unresolved issues regarding system-components that can-not be “converted-away” (like threads and sockets), so they can’t eliminate the run-time completely - they will be shipping a distilled-down variation of their existing Mono for such cases (if you use these features). For the web-targeting, you can’t do threads anyways (for now), because Javascript is single-threaded, and you can’t use native-sockets (only web-sockets at best) - so if your game depends on such things, you can’t target the web, and IL2CPP will have a hard-time of helping you…

For Microsoft, this only applies to mobile-apps, and as of yet, is NOT targeting non-MS platforms, so they are probably layering that solution onto some C++ system-components that they own/control in “their” platforms (plural). Also, the conversion is done as a service on their cloud, so, have fun with that… (Your bank-account is sure to dislike it…)

When 100% of .Net-code can be freely-converted into ANY platform, we would be able to discuss such solutions - till then…

Performance is a very tricky subject, and very easy to “cheat” with.
Will there be gins to be made - sure. There will be use-cases that benefit from that to varying-degrees.
But how much? What percentage of current/future games/apps would benefit much from that?
It is to early to say, but my guess is - much less that is currently “hyped” about…

Mobile-gaming has been booming for several years now, and Unity is at the fore-front of this space - I think that if scripting-performance was “THE” major issue, they would have solved it years ago - hardware is getting cheaper and faster, so this “performance-problem” - if it exists at all - is diminishing… Why now, then?
There are other factors at play here, and other explanations to consider - political and commercial ones would be my first avenues to check - not technical ones.

[=TheAgent;129744]
I have never used C++ in my life, coming from UScript, using C++ in unreal is pretty straightforward and easy, I don’t really care if someone else wants to use C# or something else. That’s pretty much their prerogative.
[/]

Thats what im saying too, APIs makes C++ feel like UnrealScript. But Unity made people addicted to C# that they afraid to even try C++

Epic Devs should really look-up for this lecture (once the recording comes up in a few weeks):
cppcon : Modernizing Legacy C++ Code
One of the speakers is really aewsome - I went through 3 courses she did that I got off from pluralgifht - I really like her style of teaching/explaining.

UE4 is already compiled using a C++11 compiler, so they might as well do it right all the way, and spare us the Macros nightmares…

[=EruArnold;134072]
Epic Devs should really look-up for this lecture (once the recording comes up in a few weeks):
cppcon : Modernizing Legacy C++ Code
One of the speakers is really aewsome - I went through 3 courses she did that I got off from pluralgifht - I really like her style of teaching/explaining.

UE4 is already compiled using a C++11 compiler, so they might as well do it right all the way, and spare us the Macros nightmares…
[/]

Macros, are used for code reflection (RTTI) and code generation. I have no idea, why you jumping on macros. C++ doesn’t have any build in decoration semantics for class, functions, properties, etc.

A well written, performant scripting language that level designers and artists can use without shooting themselves in the foot is also important, and C++ completely fails at that task due to its complexity.
[/]

No it doesn’t, they simply cannot program well enough to use it.

Are you factoring in fuel and insurance? Cos you should.

(In other news, never ever use a car analogy when talking about software. They always backfire.)
[/]

Nothing backfired. I am a guy who can afford to put fuel in my Ferrari and that’s why I drive it. You are obviously a guy who at most can afford to drive fiesta. Good luck with that!

Look, , you may be god’s own gift to programming. You may be able to code rings around Carmack, juggle the entirety of UE4 in your head at all times, and be able to write infinite loops that execute in under a second. But you may also just be someone with little experience and a lot of attitude, and to be frank? That’s the impression I’m getting from you here.

Programming languages are tools. Nothing more, nothing less. Some of them are more versatile than others, but claiming that any one of them is “the best” is just as misguided as claiming that since hammers are the best tools to drive nails into walls, noone would ever need or want a screwdriver. Yes, C and C++ are very performant. Yes, they’re usually the best choice to implement a graphics or physics engine. But that doesn’t mean they’re equally good to use for other tasks in game development. A well written, performant scripting language that level designers and artists can use without shooting themselves in the foot is also important, and C++ completely fails at that task due to its complexity.
[/]

C++ is better than any scripting language for any task. You simply must know how to use it. That’s all. You obviously can’t.

[=EruArnold;131539]
To :

You could also take your cars example, just put it in this kind of location:
IndianTraffic.jpg

You get the picture?

[/]

Yeah, I get it. It looks like mobile market to me and I’m in AAA industry not in mobile that’s why I would never ever drive my Ferrari in such place. It is simply not my kind of place, as I’m considering myself and the work I do as AAA and not mobile as the picture shows.

And as for the C++ code examples? You simply don’t understand what Bjarne is trying to explain.

[=;134417]
No it doesn’t, they simply cannot program well enough to use it.
[/]

Show me a AAA that requires its level designers and artists to know C++. Yes, they cannot program well enough, but that’s not why you hired them in the first place. The time these people need to get up to speed on the ins and outs of pointer handling is time they aren’t spending making levels, or creating art assets, and thus it’s a waste of time for them (because they’re not doing what they spend years learning how to do) and for you (because they’re not doing what you pay them to do).

I am project lead for FreeSpace Open. The only reason that project is still around 12 years after FS2 was released is because we incorporate a very flexible, very performant scripting language that level designers can use without risk of crashing the engine, and which is easy enough to learn that doing so isn’t a big investment in terms of time.

[=;134434]
Nothing backfired. I am a guy who can afford to put fuel in my Ferrari and that’s why I drive it. You are obviously a guy who at most can afford to drive fiesta. Good luck with that!
[/]

And good on you. You’re still too enamored with C++ to see where it’s not the right tool for the job, thus bringing me back to the “Lots of attitude, no experience” thing (Also, just for the record? I ride a bike to work. Because why use a car when your office is only 7km away from where you live?)

[]
C++ is better than any scripting language for any task. You simply must know how to use it. That’s all. You obviously can’t.
[/]

I’ve been writing C++ for 6 years by this point. It’s a great language, and I love it to bits, but it’s not the appropriate tool for quite a few tasks; game scripting among them.

[=The_E;134465]

I’ve been writing C++ for 6 years by this point. It’s a great language, and I love it to bits, but it’s not the appropriate tool for quite a few tasks; game scripting among them.
[/]

Because you shouldn’t do game scripting, but game programming.
Why would I use tool which is slower by order of at least couple of magnitudes, requires adaptation, plugins, interop, etc, etc. if I can use power house which far better and UNACHIEVABLE results with C++? Why would someone want to use it? One answer comes to mind, because that someone doesn’t know it well enough (can’t learn it) and that someone is not as productive in it as he is with that slo-mo creature of his.

And don’t expect non-programmers to do programmers job!

Yep, that’s about right.

P.S.
I’ve been using C++ for over a decade now. Nothing beats it, especially in game industry.

[=;134488]
Because you shouldn’t do game scripting, but game programming.
[/]

I’m sorry, what? Yeah, sure, I as a programmer should do programming. But my buddy over there, who’s a writer and mission designer, he should be creating content, not learning how memory management works. So, in order to let him do the job, it’s my job to give him the tools he needs to get the job done. And part of that toolset is creating an open, data-driven system that he can use without the risk of breaking something.

[]
Why would I use tool which is slower by order of at least couple of magnitudes, requires adaptation, plugins, interop, etc, etc. if I can use power house which far better and UNACHIEVABLE results with C++? Why would someone want to use it? One answer comes to mind, because that someone doesn’t know it well enough (can’t learn it) and that someone is not as productive in it as he is with that slo-mo creature of his.
[/]

You are arguing from a very weird position. Here’s a story from my experience working on FreeSpace. Our scripting system, which uses a LISP-lookalike language, is a giant heap of code that, to the uninitiated, looks weird and inefficient. But, guess what happened when we tried to actually profile it? It turns out that this entire system, even under the most complex load we can find, never registers as more than a small blip in our profiler. There are big missions out there, with hundreds of events, and this system? It usually takes less than .1% of frametime to run. Could this be faster if our mission designers were using C++? Possibly. Would the increase in speed be worth the hassle of trying to teach all these people how to do C++? Hell No. We, as coders, can spend our time better optimizing the systems that actually matter in determining frame execution time, and our game designers can spend their time better doing what they do. stays happy.

You, on the other hand, seem to expect non-programmers to learn how to be programmers for the sake of optimizing that .1% of frametime. That’s kinda weird.

[]
And don’t expect non-programmers to do programmers job!
[/]

Exactly. Why are you?

[=The_E;134507]
I’m sorry, what? Yeah, sure, I as a programmer should do programming. But my buddy over there, who’s a writer and mission designer, he should be creating content, not learning how memory management works. So, in order to let him do the job, it’s my job to give him the tools he needs to get the job done. And part of that toolset is creating an open, data-driven system that he can use without the risk of breaking something.

You are arguing from a very weird position. Here’s a story from my experience working on FreeSpace. Our scripting system, which uses a LISP-lookalike language, is a giant heap of code that, to the uninitiated, looks weird and inefficient. But, guess what happened when we tried to actually profile it? It turns out that this entire system, even under the most complex load we can find, never registers as more than a small blip in our profiler. There are big missions out there, with hundreds of events, and this system? It usually takes less than .1% of frametime to run. Could this be faster if our mission designers were using C++? Possibly. Would the increase in speed be worth the hassle of trying to teach all these people how to do C++? Hell No. We, as coders, can spend our time better optimizing the systems that actually matter in determining frame execution time, and our game designers can spend their time better doing what they do. stays happy.

You, on the other hand, seem to expect non-programmers to learn how to be programmers for the sake of optimizing that .1% of frametime. That’s kinda weird.

Exactly. Why are you?
[/]

I disagree with your reasoning, and I believe that doesn’t matter what arguments would I or anybody provide, you would still know that you by using slow scripting languages are getting better performance (or irrelevant gain in it).

I think differently and employ/work with people who actually don’t have to learn C++ because they already know it and no time is wasted on teaching them.

But that’s just me and my way of doing things.

C++ is good for some tasks and blueprints too. Main gameplay can be done with both, I prefer c++ but it’s just me. I’m a programmer, maybe that’s the reason.

However, in my opinion, things like, already mentioned missions, moving doors, all level design things should be done with blueprints, because performance of such "one time "things isn’t really critical.

[=;134434]
Nothing backfired. I am a guy who can afford to put fuel in my Ferrari and that’s why I drive it. You are obviously a guy who at most can afford to drive fiesta. Good luck with that!
[/]

So that’s where your earlier “analogy” came from. You just confirmed in this sentence it made no sense whatsoever. It’s nothing more than a status symbol. You are not driving a Ferrari because you need the performance, you drive it for fun and because you can afford it.

A programming language isn’t entertainment. Anyone can afford C++. It’s a tool to work and like any tool it needs to be the right one for the job.

Found this link which might be appropriate for this discussion: http://bjorn.tipling.com/if-programming-languages-were-weapons

Anyway, wow did I have a wall-o-text to add here, but, maybe some of the funny in the link above is good enough. There’s a lot of really smart people in this thread, giving good arguments and well thought out reasoning. Just seems to me that there might be little more to add on the topic, and perhaps a better outlet would be in order. Maybe clearing up some answerhub questions or tutorials? That could make for a more effective debate. I mean…seems pretty clear that a larger portion of the anti-C++ debate comes from people who don’t primarily program in it…so, let’s help them make it their go-to language. Right?

[=Gigantoad;134653]
You are not driving a Ferrari because you need the performance, you drive it for fun and because you can afford it.
[/]

I drive it because:
it is fun,
its status
and gives fantastic performance.

[=Gigantoad;134653]

A programming language isn’t entertainment.
[/]

C++ can be if you know it well enough.

[=Gigantoad;134653]

Anyone can afford C++. It’s a tool to work and like any tool it needs to be the right one for the job.
[/]

Yep, and game programming is done best in a language which gives you best possible performance whilst allowing you to be productive. C++ is that language. C++ IS the language of gaming industry.

[=;134705]

Yep, and game programming is done best in a language which gives you best possible performance. C++ is that language. C++ IS the language of gaming industry.
[/]

How about gameplay programming? You know, opening doors? I brought the example up before, including the usefulness of blueprints. You never adressed it.