Official C# Support?

Wow, this is great! I didn’t know something like USharp or mono-ue existed. I do worry about the impact of garbage collection though, which I hear about all the time when it comes to Unity performance.

I am sure most people know this, but the new Live Coding feature in 4.22 and above has radically improved compilation time for c++.

Like I can change a few lines and see it in editor in 8 seconds.

There are some big caveats (like not adding new properties) but overall it is pretty much a game changer.

Unity’s garbage collection is garbage (lol) just because they use an ancient one.
From Mono 2 or something. they refused to pay Xamarin licenses to update to a newer version.

push for real c# support in 2019… i just don’t get it why epic gets pimples using modern languages like c# or typescript/javascript i also like c++ for the aesthetics in code but there are so many advantages by using c#

1 Like

I see no advantages of using C# if you already have Unreal C++ with reflection and garbage collection, blueprints, Python.
It would be only overcomplicating engine development. Especially for editor tools and low-level systems, the only efficient choice is to use the same language as an original codebase.

What would actually interesting is a custom scripting language, a middle-man between C++ and blueprints. Simplified syntax, tailored for engine already allowing you to use C++ and source code. “Binary/asset” nature of blueprints can become problematic if team grows and starts to create a lot of systems/features in blueprints. It’s becoming harder and harder to collaborate and refactor things.
Custom scripting language would be excellent for technical designers, but it shouldn’t be seen as replacement of C++ for writing core tools/systems.

Only good thing about C# would be that I wouldn’t have to write those god-awful-help-the-compiler-because-its-dumb-header files. When programming with C++ I find myself writing less small functions simply because keeping the implementation and header files synced is such a stupid chore, instead I just tend to write long functions that just do the stuff.

Only? Are other things better in C++? Excuse me but very long compilations, lack of possibility to remove c++ class in editor and bad code readability (due to macros and type def and so on) aren’t good things.

I imagine most/all of the epic devs code in C++ so can’t imagine there’s much enthusiasm to add another language.

In all honestly the C++ in UE4 really isn’t that hard to grasp if you can code already in a different language, just got to get your head round some differences like pointers and when to use :: instead of . .If you’ve got vax it usually corrects it for you anyway if you use wrong symbol. If you want an actual real programmer job at a big company in the gaming industry they usually want C++

This isn’t me being a ‘arn’t I so clever’ boast, quite the opposite, I’m not a professional programmer and I’m a bit of spanner and I can get my head round it. Nowhere near the level of someone like Mr Xavier but enough to make gameplay code and do what I need to. You can do it too if you just try :slight_smile:

Try one of Tom Looman’s C++ tutorials and you’ll realise its not as scary as you thought it might be.

Those aren’t big enough of issues to warrant for a C++ and C# interop layer in my opinion.

Nobody says about difficulty. The speech is about convenience and c++ has some problems with it.

I look at CryEngine and watch how long they’re taking to wrap their engine into C#.
It’s far from being “done” and they’re on it for YEARS already.

Not sure if worth the effort.

I see nothing convenient in having 2 programming languages serving exactly the same purpose. And the entire community knowledge would split, making harder to find information for “your” language. And now some people would write plugins in C++, some in C#.
A language is just a tool.

The long compilation time in somebody’s project isn’t directly caused by used language. It depends more on build tools provided with the engine.
Unity only recently introduced proper incremental compilation for C#, previously small projects could compile for minutes every time. And launching Play In Editor is incredibly slow in Unity, partially because resetting scripting states (they’re fixing it finally).

Unreal Build Tool only rebuilds what gets in the dependency chain of changed code files. You can have a huge project and you won’t notice slower compilation while the project grows. Big codebase won’t slow down editor operations.
Also now we have Live++ integrated, so you can recompile changes in .cpp even while the game is running.

Yep, C# syntax is much cleaner and it’s initially unpleasant to switch to the older language, but t’s not a reason to overcomplicate the entire engine.

C++ syntax isn’t a problem. Just make possibility to delete and rename c++ files in UE editor and we will endure other inconveniences.

writing code in the same language as the engine is written seems pretty convenient to me…

So what happens if they add c# but you still cant delete files from within the editor?

seems a daft reason to want a whole language added whem it takes all of about 10 seconds to delete the file outside the editor.

1 Like

Just lets hope Epic invents integrated scripting solution that do not require some sort of external runtime hell and other heavy bloat, it is enough already that word is gone mad with node.js and Electron bloat.

I say we vote to revive Unrealscript everyone loved that :wink:

maybe that was just me…

UE4 has Python already. I don’t like Python, but I think it can be extended to game scripting system.

On the other hand, I don’t care for any typed script/code since I discovered Blueprints. All is needed is the ability to version Blueprints, maaaybe diff them.

With the way things are with UE4 development, efforts and resources should be spent on improving and enhancing what’s already in the engine, not adding stuff only Unity migrants will be using, IMO.

People coming from unity don’t care about scripting language.

What they want when they ask “can we have Csharp plox” is to use some dotNET dll they downloaded from somewhere the same way it can be used in unity and don’t care that this would massively decrease in editor performance like have always happened to unity.

Nope. Python has been integrated only for scripting editor action, batch processing assets, etc. The same way is used in content creation apps or many other industries.
Many things can be done either with Python or blueprint editor utilities.

Python can’t be used for game scripting since its execution is extremely slow. It’s like 40 times slower than C++, seriously.
It’s perfect language for writing script-based tools and server tools. It wasn’t designed for scripting demanding realtime applications.
Nativized blueprints could be like 2-4x slower and this still you’d think about implementing a critical part of scripts in C++ (tick or any other frequent updates).

Let’s face it - for indies and small teams a game being x2 slower than it could have been if written in C++ is not a big deal because of the types of games they make. AAA studios, who make crazy complex games that also require top performance, have C++ savvy staff (who also most likely to use Blueprints along the way too).

I don’t really see why there are still requests for C# to be in UE4 when there are a lot of other more critical things that are not in the engine or half-baked.