Wheres my C# :(? I cant stand C++ or VisualScript

I love UE4 but i absolutely hate coding anything in it.

Since it went free i kept trying back and forth between Visual Script and C++ and its july now im ready to call it quits,no point wasting more months on it.

C++ is just impossible, takes too much time to compile, crashes my engine way too often, huge waste of time and grief/frustration, and the UE APi is quite ugly so many macros and such.
Visual Script on the other hand removes all complexity but its annoying to code bigger things in it, wires everywhere, simple comparisons like vector1.z == vector2.z makes go nuts i have to break vectors/rotators/transforms into smaller pieces and rewire its confusing and unintuitive, and the worst is that its limited to UE4 and i dont want to learn it, they should have chose a scripting language, VS or not it takes a lot of time to learn and master, hence VS is a waste if you want to do anything outside UE4.Also visual scripting has slow performance probably worse than C# as far as i read.

I dont want to go back to Unity, has less features,stuff like particles and materials are very weak, but it supports C#(my first language) everytime i go into a script editor feels so good to work there, everything makes sense, easy to prototype with code completion and description.

Idk visual script is limited and not my style dragging/araging wires all day i cant imagine gameplay in visual script like i can in C# code idk why, and when i went to C++ it felt like a minefield, a terrible language with no reflection and very few GOOD tutorials, with bad documention.

This is how id love to do it - YouTube

Its sad ive even read people are against C# integration.

Beyond the API or language differences (real or perceived), there’s far more direct integration between the Editor and C# in Unity. Unfortunately that level of integration won’t be coming to UE4. C# in UE4 may mean not having to deal with extraneous stuff like header files or code macros. But the real simplicity of C# in Unity, the part that makes it very close to a scripting or macro language, that part won’t ever transpire…

“There is another key point to consider: C# in UE4 more closely resembles C++ in UE4 than it resembles C# in Unity. Unity users coming from a background working with the componentized C# behavior model with Unity’s MonoBehaviour framework will find that UE4 doesn’t follow that model and therefore the emergence of UE4 C# support isn’t quite the hoped-for panacea.”

Honestly, just the compile times alone are a reason to use C# for scripting and discard visual scripting.
Everytime i change 1 value hit compile wait 20seconds + to get an error or my engine crashes for unknown reasons, C++ should be only for the engine backbone and source, whoever wants to add extra functionality or fix bugs can do so, but the gameplay programming needs to be done in C#.

C++ is really bad, i see the industry got trapped by this language, even if there were a replacement no one would use due to the massive ammounts of code that already exists.
I gave C++ a chance its not going to happen, im still surprised the industry uses that ****** language as a standard.
I wish id learn more about UE4 and actually make a mini game sometime, i love everything about it except the way you code in it.

I think if they would implement C# tons of people would start using it, that program in unity currently and dont want to learn C++ or the useless visualscript.That would be a huge gain for Epic, but isee theres no desire for that reading that thread.

The industry isn’t ‘trapped by the language’, there genuinely is no practical alternative. If you want to write an efficient piece of software like a game that’s portable to as many different platforms as possible, you’re going to be working with C++.

This said, if all you want to do is change a single value, you should be working with instances in the editor, not changing them in code. You can expose any variable to the editor and change it either inside the editor, or at run time without the need to recompile code. This is a workflow problem, not a programming language problem.

C++ is antiquated and clunky, it compiles into fast an efficient executables though. This makes it hard to learn and slow to develop in but it produces very fast code. The UE API is fine, the documentation is sparse in places but quite descriptive for the commonly used features.

C# is a well designed modern language, it’s executables are not as fast as C++. It’s easy to learn and more productive due to its more modern syntax features.

Both languages have there advantages and disadvantages. So it’s really subjective to the coders needs. So no matter what people argue about on this subject, no one person will ever have a 100% correct reply For c# vs C++.

I can understand if you like C# more than C++, but what is really bugging me about what you said is, that C++ is the reason why your Engine crashes so often.
And, don’t take me wrong here, but this is not C++ fault, it is yours. IF it was C++, then everyone of us what have this problem. If i don’t screw up a pointer
by accessing it while its NULL, i don’t get crashes. And even these “crashes” are only breakpoints.

As long as your code is clean and you know what you are doing, you don’t get crashes. The only thing that you normally suffer from is the API/Docs and the fact
that the logic you had in your system is simply not working/wrong, so you have to rethink how you should do this.

And this is totally normal. Even reworking a system once it is finished is a complete normal step!

Get yourself together and learn C++ before stepping into UE4. Then you will have an easy time with it. And UE4 uses so less C++, that you normally should be fine
if you know what a Cast, Pointer, Constructor, Struct and MemberFunction is. And then the UFUNCTION and UPROPERTY. That is all. I have nether used much more
when creating gamelogic. And even most of this is similar to C#.

If you want to be a good developer and maybe also work as a coder, you need to get along with nearly every language someone throws at you.

C++ is not antique, it get updated quite infrequently lately, it simply lower language then C# which does not have management. Fact it crashes is not cause of C++, when you have executable C++ does not exist in it anymore, it already been converted to CPU machine code and if something goes wrong in machine code, it crashes. UE4 uses C++… because it is written in C++.

We’re up to C++14, actually :wink:

The thing is that Visual Studio doesnt even support FULL C++11, and only like half of c++2014 , even the 2015 version. To use full C++11 and C++14 you need to use clang or GCC.


I wouldn’t mind some C# stuff because I am lazy and it is a lazy language where you can pretty much test on the fly.

In C++ you have to think about what your writing, write a whole lot more in one go then test.

That’s my take on it anyway.

OP: Seriously do not be afraid of using C++, it is easy when you get used to it. Especially UE4’s framework!

OP was mainly making his argument around painstakingly long compile times and you guys are talking about his inability to adapt to Unreal’s API.
These long compile times are terrible.

I think you are approaching this all wrong. The language you’re programming in doesn’t matter, in fact if you’re a programmer, and you cant program in multiple languages then you really need to learn programming from a fundamental level. Not a language one. To be brutally honest, i think you need to relearn everything you’ve learned up in till this point in time and apply the techniques you learned into multiple languages. Think of programming as a general language and the programming languages as the languages dialects, each dialects have different syntax(grammar). This is important to understand that, it’s not a specific language you are having trouble with, its that you are having trouble with programming as a whole. At least by the way you wrote this thread, im led to believe so.

C++ is not impossible, i use it every day, in UE4 and not in UE4. (My compile times are not that bad at all ue4, even when rebuilding the engine from source, maybe you are in need of a new pc ?) The fact you say its crashing way to often really hints to the notion that you don’t understand memory management and programming in general. Like i said above you really need to learn fundamentals of programming in general. Like for example, whats actually happening when you create a variable independent from the language.

The ue4 api isnt ugly, its by far one of the more prettier api’s i’ve worked with in terms of game dev and api’s in general. yeah there are better laid-out apis, but the ue4 api isn’t the problem. its your lack of understanding.

To be brutally honest, you should feel that way no matter the editor or language, just because your programming in C# doesn’t magically change anything, it’s all in your head. I’m not trying to be rude or tell you that you don’t know how to program i just honestly think you need to understand the basics of programming, in general. not just what’s in this language or that language.

I will agree that there are few good tutorials and bad docs, but theses are both changing as time goes on.

The first compile of everything takes a lot of time; from then onwards you’re just compiling individual modules, and your game module shouldn’t take more than a few seconds. I just tested the (commercial scale) game project I currently have open and it took 10.27 seconds, which isn’t exactly long at all. It can also be compiled from within the editor, whilst the game is running. If you have small changes like variable value tweaks, you should set these things up to be editable from within the editor and without the need to recompile.

The OP’s problem (and potentially yours) is his workflow. You need not suffer regular, long compile times.

Switching to C# isn’t going to make an 11 second gameplay module compilation much quicker.

When you make ANY change to the game module it only takes 11 seconds? Is that including a new class or method?

I am lucky to get it down to 30s per time! Sometimes it just hangs and takes 1min - 2min. Something tells me I bought the wrong CPU last year :(.

Totally agree here. Epic have done wonderfully to allow us to do this.

I tested the compile time by adding a new class from the editor. For the record, I’m using an i7-4790k, which isn’t the most expensive processor out there, probably one of the best you can get for around £200 :slight_smile:

It would seem that an awful lot of people are coming to UE4 expecting there to be a button they can press labelled “Make Awesome Game”.

You can try commercial script solution for UE4 such as ‘Skookum’… yes search for it in the search box above.

With no optimisation? I wouldn’t go that far, it’s ironic we talk about performance when Unity is targeted at a market with lower specs for both PC / Console and Mobile. It’s never been the scripting API that’s been cause for concern (even with the severely outdated Mono version and GC with that version), it’s always GPU bound issues causing performance problems.

Even if C# is slower, it’s never EVER made a difference…

Although I can see why Epic decided not to go for it.!

A) You can just use Blueprints, figure out the logic and API references then convert it into C++… So it’s not like you have to deep dive into anything blind.
B) It adds a massive layer of complexity to the engine, having to have a layer of abstraction deeply routed into everything causes a serious slow down in terms of engine development. (No new shinies…)!!
C) It’s not as bad as some think, a lot of what makes C++ hard in UE4 (Mem Alloc / GC) is mainly dealt with… Which is nice.!

I’ve no issues with the path they’ve taken, although C# is absolutely fine… There’s nothing wrong with it (bar Mono’s licensing)… Uhh!

Ahh this thread gave me a laugh.

Never really understood the programming language wars. They all have their good points and their bad points.

As SaxonRah said earlier, if you understand programming principles then any language shouldn’t be a problem. Not sure what they teach the kids now these days. If someone told me that I needed to use some new language, I’d tell them there would a slight delay in creating the artifacts required as I am learning, but that slow period should only last a month or so. The real learning is the API, only through use will I get to know how it works.

Think of programming languages just like you would any spoken languages. Sometimes certain things can be expressed more elegantly in one language over another. That doesn’t make it better or worse. Interestingly research is saying that the way you think is affected by the language you are using to think in. Maybe this is what happening with people that struggle with C++, are still thinking in C#.

I completely agree and if BP’s pretty much do everything a developer needs, they can whistle like they farted in a lift and never touch a line of code :)…

Not sure why there is dislike for BP?