On a personal note, I’m waiting for the OMNI rage, or anything that resembles the functionality Thats when the VR rage will get overshadowed
is far more advanced than a mere level scripting language. It has already been used in the AAA open-world title Sleeping Dogs (as well as Sleeping Dogs Definitive Edition) and Triad Wars (which ended up being cancelled). It was used by a team of approximately 160 people from all disciplines: mission design, gameplay design, programming, UI, audio, and art. And the scripts touched everything from missions, to cutscenes and dialogue, to minigames, and various other gameplay systems.
Moreover, the full script source of 1700 classes and 8500 scripts took about 3 seconds to compile from scratch.
There’s a few more unannounced AAA titles currently being developed using Skookum but here’s some more information:
/about/#sleeping-dogs
I don’t think that there is going to be a C# for UE4, since it’s a bad idea to implement it via wrappers instead via Blueprints. Also a language like F# or Skookum Script that have a great amount of code noise reduction, may be better than C# anyways.
Thanks for the info. I will give it a try.
Unfortunately switched to Unity, as couldn’t get to grips with C++.
Maybe something I was doing wrong, but found the compilation time in C++ really off-putting.
Also, it felt kinda buggy - sometimes errors would come up that I’d spend an age trying to figure out, only to find if I closed and re-opened the editor they’d be fixed.
I’m new to game programming, but a fair amount of years in other programming languages.
Anyone else had a similar experience?
The majority of people with `programming abilities´ did learn Java or C# which basically use identical syntax.
Same here … C++ looks like ASCII art to me.
I just wanted to jump in and say a few things
C++ may seem very complex and very hard to learn when you first see it but while it is very complex it is not that hard to understand it.
I have some knowledge on c#,
I have been programming only with Blueprints in UE4 and recently I decided to learn C++ in UE4 and it only took me about 2 weeks to learn it and understand it. I also transfered most of my game’s code to C++ and I am currently doing more complex logic in C++.
I think blueprints helped me to get better understanding of the Ue4’s structure.
So give C++ a try it is not that bad
I also look into C++ currently, but I do have a hard time with it. In C# i would quickly set up some threadpools and dynamically delegate work which i then would make accessible throught blueprints in a couple of lines. Think about doing this in C++ and how long it would take, if it is even possible.
Here’s the first function that stared at me when I opened visual studio today:
AUniFacilityFurnishing::AUniFacilityFurnishing()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
USceneComponent* MyRoot = CreateDefaultSubobject<USceneComponent>(TEXT("Root"));
RootComponent = MyRoot;
Collider = CreateDefaultSubobject<UBoxComponent>(TEXT("Collider"));
Collider->AttachTo(RootComponent);
RotatorWidget = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("RotatorWidget"));
RotatorWidget->AttachTo(RootComponent);
}
Here’s an approximation of what it would probably look like if it were implemented in C#:
class AUniFacilityFurnishing
{
AUniFacilityFurnishing()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
USceneComponent MyRoot = CreateDefaultSubobject<USceneComponent>(TEXT("Root"));
RootComponent = MyRoot;
Collider = CreateDefaultSubobject<UBoxComponent>(TEXT("Collider"));
Collider.AttachTo(RootComponent);
RotatorWidget = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("RotatorWidget"));
RotatorWidget.AttachTo(RootComponent);
}
}
Truly terrifyingly different. I don’t know how C# programmers would ever be expected to adapt
FRunnable / FRunnableThread. Honestly, I don’t think it would be all that hard. There’s a little legwork to get yourself started but it’s almost all in the organisation of your thread management, not fighting with the language.
Same here with C++. But I won’t go back to Unity.
If you want a powerful engine/editor that even indie devs could make use of, then go with UE4 and endure crappy C++. If you want an actual object oriented programming language, but can live with a very simple (maybe too simple) engine/editor, then go with Unity.
I chose to endure crappy C++ since it ain’t really difficult, but only a pain in the ***. I’m developing for desktop, so the performance bar of BP won’t hit too soon. I may end up being able to use more BP than C++. I pulled the 4K Hammer (monitor) to deal with the size of the BP nodes. Obviously I would still prefer something text based, though.
Unreal.js is a great way to bridge the gap for people that don’t want/ don’t like to work with C++/BP
So… where’s the header of your example?
In my point of view the complexity of c++ is not that difficult to pass over. But the thing that I don’t like at c++ is the lack of intelisense ( who says it has, he didn’t programmed in c#) and the extra information you type in .h files witch it’s writing the same thing twice and on top of that the compilation errors are too generic and it takes time to find the culprit. All of this combined takes a lot of extra time that is so precious for one like me (i have a daily job and a family) so for the time being I do all the programming using blueprints and only specific complex code in c++. We leave in a era of speed and c++ it’s not the fastest way to develop (no offence to anyone).
Didn’t include the header because it wasn’t relevant; judging by your post, I can tell you don’t spend much time in C++ - I could have defined and declared it in the header.
This is my biggest, but is easily remedied by using something like Visual Assist X. At the end of the day though, Intellisense and autocomplete really isn’t that important. (VAX’s refactoring / jump to stuff on the other hand is excellent, and a godsend in a solution as large as UE4’s engine/editor source).
Separate header and implementation files are optional, and good practice from an efficiency point of view (because of the nature of the compilation process; C# falls down in this respect, and it’s a lengthy and technical discussion as to why). If you want to write both declaration and definition in the header file and format your code like you would in C#, nothing is actually stopping you from doing so.
Only if you’re not familiar with the errors; whilst they do tend to be a bit more obtuse, the errors are generally specific enough that the culprit is easy to locate. For non-linker errors, VS gives you the offending line, just like it would in C#.
Useful hearing other’s opinions. Sounds like I should just persist a bit longer to get through the initial pain period. I struggled with the same things as @miketgv, but reassuring that the same issues don’t appear to annoy those more familiar with the language.
The languages are not that different, in fact c# is inspired from C++ and it was created as an alternative to Java. If you get the hang of it it’s not that hard, in fact it feels more powerful and I think it is more powerful then C# but the problem that hits me hardest it’s, like I said in my previews post, the time it takes to write the code not because of the complexity or because of the language, just because the tools(Visual Studio) doesn’t help you as much as it does for C# (or it’s just me)… maybe it’s because I don’t use it at work and the lack of “training”/ time spent in it is not that great comparing to C#(8 hours per day starting 2.5 years ago).
Also @ambershee, Visual Assist X it’s not a free tool and I don’t want to spend money for something that Microsoft should fix. Regarding the time I spent in c++ it’s no more then few pages of code (a game Instance class, a BaseCharacter -> Actor class, a BaseWeapon -> Actor class , a BaseBullet -> Actor class, a Character Controller class that I inherit in blueprints), but after struggling with some errors I decided to create the game entirely from blueprints and only use c++ if I need something specific or complex that would take to much time to do in blueprints… maybe after I finish I will transfer all the logic in c++ to increase performance… but I’m not there yet.
Returning to the main subject of the thread I wold love to see a C# plugin that could be used in blueprints to write your own custom things in it and then use it like a macro or a function in blueprints flow graph.
You’re arguing that your free tools are inadequate?
Surely you’re using Resharper for C# which also isn’t free?
Nope, take this scenario: If you write code fast in c# when you hit “.” intelisense immediately shows suggestions and most of the times it will high lite the needed function or property and immediately after that I hit tab an completes the code. If you try this on c++ you’re out of luck… I use Visual Studio Community edition with no plugins (excluding unreal engine plugins). I tried to set up intelisense like Epic suggests but still after you hit “.” or write “->” the suggestions list will appear after several seconds later sometimes after I write myself the whole name of the property or function… If I only succeed to make this to work I will write code in c++ like there is no tomorrow
@ambershee I’m not arguing that my free tools are inadequate, just pointing out that for other languages it can be done without paying $$$ for a tool that should be already integrated in the package. But I’ve tried the trial version of Visual Assist X and yes is faster then VS intelisense but still it doesn’t show the suggestion list immediately so that’s why is a no go for me… Why buy something if I still have to write the whole word by myself or wait 2 3 seconds to show the list and then select the needed function/property.
Ah yeah that’s true, you do pretty much need Visual Assist X for that whereas Visual Studio does a better job out of the box for C#. Still most C# devs use Resharper, or so I thought. Where I worked everyone used it for all its added value compared to vanilla-VS. And other extensions too.
You do have to accept the fact that UE4 is a huge code-base though. Even if C# was supported it doesn’t mean that you would get quite the instantaneous intellisense speed that you’re used to from coding smaller applications.
There’s no way to work with UE4 without using Visual AssistX; it’s 20 years of code in there, even VAssist sometimes crashes.
Yeah, that’s true… well I guess I have to get used with it the way it is… Maybe it’s for the best , I’ll learn all the functions/properties and who knows, in a few years I’ll can code in notepad (joke). But anyway, thanks for your answers.