Why haven't you added C# as a supported Programming Language?

C++ Is too hard for beginners, but C# is just the king of game-scripting. You could say: We don’t care, we already know C++ so it’s not our problems. But really, it’s a important Programming Language that every modern engine in the world needs.

There are a few C# plugins that are being developed. Someone did a performance test on USharp and it was comparable to C++ in performance, but the plugin is still under development, and still uses some C++ methods to work…
https://www.reddit.com/r/unrealengin…c_with_unreal/

Here is a video explaining recent state:

Worth noting that Epic bought the SkookumScript developers and are considering adding a scripting language. However, if you read that post from Tim Sweeney you’ll notice they are against adding C# support, and if Tim is saying that then it probably will never happen.

Sure you can use unofficial C# support but honestly I would never recommend someone use an unpaid volunteer’s plugin for such a fundamental layer of their project. Look at MonoUE, it got pretty hyped up and seemed to have good support but now it’s basically dead. I guarantee the same happens with others like USharp. This is not a one-and-done job for a solo dev, C# is something that needs support from Epic itself to have any chance of being taken seriously. Since Epic is never going to do that, I suggest moving on and living with C++/BP or switching to a different engine.

1 Like

Is C++ not that hard to learn?

That’s like asking: is driving not that hard to learn? It’s easy for some and hard for others. In any case, it’s not required to have an in-depth C++ knowledge to be able to comfortably use it in unreal.

For general game-play programming in Unreal you don’t need to know much that C# developers don’t already know. However you need to know about the UE4 macros which has nothing to do with C++ in general.

Often people that have worked with C++ briefly in the past get scared of memory management etc. but if you use the UE4 classes and macros memory management has already been taken care of.

You can think of UE4 C++ as a superset of the language, similar to how you can think of C++ as a superset of C. What you get in UE4 C++ is a lot of nice features that bring it much more in line with something like C#, especially when considering memory management.

UE4 C++ is “hard”, not so much because of the language itself, but more because of the complexity of the engine API and its lackluster documentation. Compared to the nice “flat” feeling of an API surface like Unity’s, UE4’s API is built on layer upon layer of inheritance in a massive hierarchy. It can be difficult to even know where to look in that hierarchy for what you need, and if you find it there may not be any documentation besides the source code.

However, UE4 C++ is also easier in some ways than Unity C# because you are given a very thorough architecture to start with. An analogy might be that the challenge in UE4 C++ is like searching around a large messy room for shapes to fit in the holes in your puzzle board. The right shapes probably already exist, you just need to look around for them. Unity C# is more like a jigsaw puzzle. All the pieces are sitting out in front of you, but you need to figure out how they all come together. There is no framework for you to build on. In a lot of ways developing in UE4 C++ feels like modding, where as developing in Unity C# feels like working from scratch. I think many people discount how helpful a preexisting architecture like UE4’s can be. There is a lot of hidden work that has already been done for you.

The answer is simply that UE4 is intended to be as platform agnostic as possible - but C# is not necessarily portable to all platforms without additional third party support, and that’s adding layers of unreliability into the mix that don’t want to be there.

Skookum script was killed and then nothing happened. It doesn’t seem like they’re actually working on this scripting language…