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.
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++.
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.
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
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!
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#.
Probably, I know C++ but haven’t bothered writing any code yet as I’m new UE4 and game development. In fact I’d suggest that people go pick up a book that describes gaming design patterns. I read such a book earlier this year just as I started to learn UE4, and it helped me understand the choices Epic have made when designing the engine. I didn’t even know what a “tick” was back then.
Recently I was trying to zero out the momentum of the player’s character, and it was amazing how good the blueprint node search is in helping me do that. I kept trying each potential function, until I found the one that worked. Was quite surprised how quickly I was able to debug my way into making it do what I wanted.
When I recall the work I was doing 12 years ago into programming software for PDAs- now that was difficult. Stupid Windows CE framework…
I wish the tools I use in my day-to-day work was this intuitive.