I want Feedback from Epic about Mono for Unreal Engine

Wholefully agree, I’m happy that this is the consensus on the matter at Epic. My concern was the divide that bringing another language to the foyer would bring.

The divide between Blueprint and C++ Programmers is actually incredibly narrow considering how ‘different’ (for the user at least) the languages are, but the last thing I want to see is developers programming in different languages and making the barrier to programming even higher. If the engine is written in C++, it stands to reason that you’ll get the most power and proficiency out of is by using it’s native language. C# can never be more than an interface between itself and the engines C++.

As an novice programmer / indie, I’ve gotta say that C++ is still the biggest barrier keeping me from working in UE4. I was able to work in Unrealscript somewhat, I got up to speed with C# in Unity really quickly, yet after a month attempting to grasp UE4 C++ I still had next to no idea how to code anything.

Obviously folks in this community already experienced in C++ are happy and want Epic to focus on other things, but the point is to draw in more users. For all the hooplah over how much better an engine and deal UE4 is, nearly a year later Unity is still far and away the standard amongst indies and C++ is likely the main reason for that. C# or not, the lack of any supported scripting language is holding UE4 back.

Gave me a pretty good idea how to do simple stuff in C++. Did you view that playlist?

Anyway I hope that helps out some :slight_smile:

I am a professional .NET developer, I’ve been using the blueprints for a couple of months now and im thinking on giving C++ a chance. Still I don’t quite agree with your statements and I’m looking for someone to debunk my belief ^^
here is what I think about the all C# thing (correct me if I am wrong!):

  • C# is not just more enjoyable, it is far more productive. Anything that can be done in C++ can be done in C# in less time.
  • The reason why people still use C++ it is because they already have existing huge library that they would need to rewrite (costs too much).
  • Blueprints needs to be learned like C#, so it is effectively another language but it is useless outside of UE4
  • You already have the entire documentation and answer hub splitted in 2 (one for blueprints and one for C++), I think that the goal should be to replace blueprints with C#, not to add a third option.
  • Roslyn (the new compiler) is open source, cross-platform, and it will be released really soon, and with a partership (either with microsoft or xamarin) I think you could get what you need.
  • .NET framework (or still the mono version of it) makes a lot of things easier, just think about working with a file system, a database, HTTP messages, Cloud services
  • Does C++ has these features? LINQ, PLINQ, async/await, Dataflow
  • What about unit testing and dependency injection? it is at the same level?

I think that many of the people that talks about C# are actually talking about the Unity C# support which is missing 90% of the stuff.

The point isn’t “is C# better than C++”? but “is C# better than blueprints?”.
and of course, IT IS, in any way (even easier to learn).

I agree with most of what your saying. I’m in the same boat, an experienced C# .net developer. From what i have experienced so far is that the C++ learning curve just adds to the existing learning curve of UE as a Tool, Blueprints and Game development in general. Having C# would be a great way to put aside some of that complexity until your more familiar with UE and the API’s. I’ve had a play around with Mono for UE and while its still very much an alpha (or maybe pre-alpha) i was far more productive working in C# than i was in C++. C# has great tooling support like Resharper that also helps you discover what you need to learn as you code. C++ at the moment greatly lacks in the area of tooling. (good news is jetbrains is making resharper for C++)

The other thing that makes C# a great entry point is the fact that its very similar to other languages in syntax, Java, JavaScript and even PHP all have similar syntax. So chances are if you know one of them it will be easier to pick on C#. I look at some of the C++ syntax and go WTF is that?

In terms of C# replacing blueprints i think that’s a bad idea. Blueprints still has its place, Its a great place to start for someone with no programming skills at all. And they complement the programming languages well.

To me Mono for C# is about breaking down the complexity of learning so i can focus on learning what actually makes Unreal Engine, and that’s how all the parts fit together. Its also about being able to work in a development environment that helps you to right cleaner, better code. If Mono for C# was a mature product i would defiantly be using it right now as a starting point. That’s not to say i won’t learn C++ once i’m more comfortable with making games in UE. But having the easier to use language as an option opens up many doors for people. I put of learning UE because of the huge learning curve for a long time, until Unity screwed me over and now i’m glad they did. Its a far more enjoyable experience.

The argument about performance i don’t think is a real issue. You can right poor performing blueprints and even poor performing C++ code. In the end its situation. There are always going to be restrictions that you need to be aware of. If you know performance is critical to you then stick to C++. Otherwise pick the method that will make it easier for you to learn and develop in. That might be Blueprints, C++ or C#. But for a lot of people out there its C#.

All i say is lets look at what it does bring to the table. A bigger audience never hurts.

I’d just like to toss out the fact that people have confirmation biases towards any languages they already know. If you seriously consider yourself to be a professional developer and you plan on doing it for the rest of your life, you should embrace every new (to you) language and jump at the chance to learn a new one. You will be amazed at how much you’ll learn in the process, make yourself a better developer, and be able to get much higher salaries in the long run.

doubt that :slight_smile: Never seen C#/Java/C++ in the same request

I would hire guy which know C++ and C# over anyone who know just C# or Java. Just sayin.

Whatabout Java + Hibernate / C# + Entity over C++ + Java + C#?

if the solution is just to learn C++ then what is the purpose of blueprints? I’m not against C++, i’m against the blueprints system, too complicated if compared with C#, no advantages in using it

what I want to say is that it would be great to know everything but we just can’t. And C++ seems too big of a challange for a lot of people while blueprints gives you not enough advantages by learning it.

Since when you need Hiberante for game development ?

You see. You miss the point. Different industries have different requirements, and one of the gamedev is knowing C++.
On the other hand learning C++, will teach you more about how things works, not just taking for granted they works.

I won’t go into this debate. The long story short is that blueprints are much easier to understand for non programmers. And if you consider yourself an programmer, you should not have any troubles learning C++. Especially in unreal streamlined version.

Since when you need Java and C# for game development?
You said that you would hire a person that know both C++ and C#, but I’d rather prefer C++ and AMP.
But again, im NOT against C++, i’m against blueprints

Then there is no point in having a blueprint system

Nobody had any problem with C# in Unity, since that you are going to learn something, why would you choose the blueprints if there is something better, more usefull (even outside of UE4) and that require the same level of effort?

It seems to me, you never tried to teach total layman, coding.
People pickup blueprint instantly (connect few nodes and it’s working!). No to so much when they have to type code.

Well yes. Solely on reason, because I’m pretty sure such person will want to learn new things. And C++ gives good basics, for learning large family of languages.

Anyway. C# in UE4 by Epic is not going to happen. To many people are adamant against it.

Blueprints work great for the high level interactions of your game, with C++ doing the heavy lifting. Blueprints are not there to replace code, they are there to augment it. While it is totally possible to create a game with nothing but blueprints, doing so has limits. Blueprints are extremely easy to understand from a programming perspective, they are basically a node based C# scripting language.

Don’t think of them as a full solution if you are making a large game, let the code do all of the work and use blueprints for simpler tasks. A hybrid approach works extremely well.

Also C++ in UE4 is not as bad as you think, once you learn the API you will find UE4 code half way between C# and raw C++, a lot of the work is done by the compiler (such as GC). I also have a C# background (app development Forms/WPF mainly) and used blueprints for the first few months while I was learning UE4. Recently I decided it was time to learn the API and I am really glad I did, I can see why Epic made the C++ decision and I agree they made the right choice. Once you get over the complexity of the language, you will see it is not as bad as it may seem.

I like the blueprints system, I currenty use it. I did some C++ years ago and im perfectly fine with it and im not a bit against it.

Let’s make it easier: if there were 2 choices for scripting (just scripting, not programming) and those choices were blueprints and C#, and you don’t know either of them, what you would go for?
I think that everyone would choose C# for the reasons states above (takes the same time to learn both blueprints and C# if we use it only for scripting, blueprints knowledge is useless outside of UE4, C# is far more productive).

Once again, I’m NOT suggesting to remove C++, im suggesting to replace blueprints with C#

Let me remind you that blueprint already replacing scripting language called UnrealScript which been used since first Unreal game. Goal of blueprint is to let artists to do some scripting without them learning any syntax and just draw the graph which is a lot simpler task and a lot easier to learn. I guess Epic though that those people who prefer coding will go to C++, which UE always had but only for licensed developers and where APIs don’t really change there and it’a lot better then UnrealScript

You are comparing C# with blueprints and I don’t think that’s right at all. Blueprints are very very easy. Anyone can dive into them. Artists, level designers, programmers, hobbits(!) and hobbyists. Most next gen engines I’ve seen being used do support visual scripting in one way or another (Cryengine, Snowdrop, etc.) . It has becomed sort of a standard because no matter what are you are touching, visual scripting will always be easier to pick up than text scripting if you have no programming background. It’s not that C# would be harder to learn, but some people would just like to stay from code completely if it’s not their area. No matter how easy or hard it would be. Visual scripting breaks that barrier.

Anyways, text-based scripting language wouldn’t be a bad idea for an intermediate point between blueprints and c++. Cryengine uses LUA for that matter as well as having FlowGraph for visual scripting. Unreal does support LUA as an experimental feature. Their forum thread on that explains they ENCOURAGE the creation of plugins for different scripting languages meaning they do acknowledge the preference of using code for scripting rather than blueprints but I don’t see them supporting C# officially any time soon since people are already working on implementations (that would basically trash whatever work people have achieved so far) and there isn’t an urgent/red alert/deadly need for this feature as of now.

Anyways, C++ doesn’t do bad at all as a scripting language, and before you decide to crucify me for saying that, UE4 uses macros heavily, manages garbage for you, has pretty much any function in blueprints as a simple function in C++, and allows you to expose variables and functions to blueprints very easily. At least to me, after all of this, UE4 C++ is much simpler for scripting gameplay than regular C++ and reminds me a lot on how UnrealScript used to work.

Also, you should look into the SkookumScript Plugin. Seems like that is going to do a killer job when it comes to scripting and it has already been production proven.

I’m a full time .NET Developer, and it honestly only took me a week to ‘catch’ up to the C++ workflow. First of all, UE4’s C++ is a lot easier than normal C++. Garbage collection is done for you, and it comes with a ton of helper classes and functions , and you don’t need to use the C++ std library at all. For me the only real frustrating part - is dealing with header files. I hate those things! :slight_smile:

Also, Blueprints are not just for artists - they are great for seasoned programmers too. You can test out features of the engine really quickly with blueprints, and make quick changes, which is why I use them for visual aspects of my code as I am tweaking this part of my game constantly. Not only that, there is alot more you can do with blueprints if you understand programming.

Lastly, I find it kind of silly all these C# developers coming in here complaining about lack of support for their current favorite language… I mean really if you are a good developer you should be able to pick up most languages pretty quickly (and its not likely you are picking up UE4 for one quick project where the investment wouldn’t be worth it). You will spend more time learning and understanding the framework then you will ever syntax. And everyone has a ‘favorite’ language, why should it even be C#? Why not Javascript? Ruby? Python? All popular languages.

I just can’t see the point of blueprints, it is exactly the same thing as writing code, with less feature and more confusion. You declare variable, use get/set, call functions/events, pass parameters, where is the difference?
if you simply add some “decoration” to your code, like changing font and add some background color you will get the same thing! The only difference is that there is no point in learning it.

btw I choosed C# for the benefits I posted earlier, of course javascript/python/java or whatever language you want would be better than blueprints.

Nobody had any problem with unity C# and that’s a really old version of it, so you can’t say that designers are scared of it. Infact they won’t move from unity cause they don’t know either C++ or blueprints.
And you can’t say that “you can quickly test with blueprints” cause even the Xamarin plugin for UE4 showed that you can have near-istant build.

it is not about “favorite language” but the best language for your goals, and not every languages have same the same features. @Awdogsgo2heaven since you are a .NET developer wouldn’t you like to be able to use LINQ and Tasks?

While we’re at it, why don’t we get rid of the material editor too, it’s really no different than writing your material in an HLSL fragment shader, right?


if using the material editor is as easy as “writing your material in an HLSL fragment shader” then yes, of course.