• Ever wanted an RSS feed of all your favorite gaming news sites? Go check out our new Gaming Headlines feed! Read more about it here.

DarthBuzzard

Banned
Jul 17, 2018
5,122
If it could be done with a snap of a finger, sure I'd love this. C++ isn't my preferred language and I really hate how restrictive blueprints are space-wise. They're just a pain to manage.
 

Zeenbor

Developer at Run Games
Verified
Oct 25, 2017
74
I use UE4 and Unity daily on different projects and have years of professional experience working on many different types of projects and platforms. They both have their advantages. I personally prefer UE4 because it's a performant engine and is mostly complete out of the box, whereas Unity is very much in flux and uses many marketplace solutions to round out its feature set.

That being said, UE4 would definitely benefit from a C# wrapper simply for the ability to cooperatively work on the same script asset. Right now, a single developer has exclusive access to a BP script because it's binary and can't be merged via P4, SVN, Git, etc.
 

Bjones

Member
Oct 30, 2017
5,622
they created a really user friendly Set of libraries for c++. It's not nearly the same as doing a c++ project from scratch.
 

Deleted member 2620

User requested account closure
Banned
Oct 25, 2017
4,491
fwiw, you can diff and merge Blueprints in the UE4 editor itself

of course, I didn't know this when I started and I haven't bothered turning on Git support in my projects yet lol

If it could be done with a snap of a finger, sure I'd love this. C++ isn't my preferred language and I really hate how restrictive blueprints are space-wise. They're just a pain to manage.

They offer plenty of tools for organization, IMO, but they don't do a lot to stop people from making wild spaghetti
 

Zeenbor

Developer at Run Games
Verified
Oct 25, 2017
74
fwiw, you can diff and merge Blueprints in the UE4 editor itself
Still doesn't solve being able to work in the same script at the same time as other developers - you have to move to C++ to gain this basic necessity. This is a major UE4 flaw IMO.
 

tuxfool

Member
Oct 25, 2017
5,858
I mean, C++ in UE4 abstracts pretty much all of that stuff away. It even has a garbage collector that works in pretty much exactly the same way as C#'s!

The problem is that it's all implemented in these huge macros that inject all this extra functionality into your code at compile-time, and it's a very fragile development environment (especially with regards to intellisense, which barely works at all in vanilla Visual Studio). If they can implement that in a more elegant way (maybe a backwards-compatible superset of C++, like what TypeScript is to JavaScript?) then they'll be golden.
It has a garbage collector, and it has the same function as the one in Unity, but they don't work in the same way.
 

Deleted member 2620

User requested account closure
Banned
Oct 25, 2017
4,491
Still doesn't solve being able to work in the same script at the same time as other developers - you have to move to C++ to gain this basic necessity. This is a major UE4 flaw IMO.
Agreed. Given that you can copy-paste blueprint nodes as plaintext, a "store as text" option would be really nice.
 

Akronis

Prophet of Regret - Lizard Daddy
Member
Oct 25, 2017
5,450
if Epic was smart they'd switch to Rust

lol
 

tuxfool

Member
Oct 25, 2017
5,858
Do they not? I thought they both kept count of how many references there are to an object, and periodically removed everything that no longer had anything pointing to it.
CLR and java use a tracing garbage collector. it determines if an object has to be freed checking if it is reachable from some root object. If an object cannot be reached it is freed. Lower level (and generally less sophisticated) c++ garbage collection is reference counting. But each object has to count how many things reference it.

They're both garbage collectors but people used to refer to the former when saying Garbage Collector, Reference counting was a different form of memory management. There are a few other differences, IIRC CLR also has the concept of generations, where it presumes objects are short lived and small and allocates a separate pool for longer lived objects, which after a certain generational threshold the short lived objects are promoted to the long lived pool which is a lot less aggressively managed. You could think of it as a external memory manager process that tries to keep memory tidy, whereas reference counting has objects more directly involved in the process of freeing memory (and the user is more responsible for keeping memory contiguous).
 
Last edited:

TrashHeap64

Member
Dec 7, 2017
1,675
Austin, TX
I'd really like some sort of scripting engine. I love UE4 and my entire game is built on Blueprints which is awesome. The C++ is much more difficult to work with than something like C# or GDScript. I haven't found an immediate need to use code on my projects but the option would be nice.
 

lucionm

Member
Jan 10, 2018
182
I have programmed some fun prototypes using only Blueprints in the UE. It's great.

Taking advantage of the audience of you indie dev looking at the topic ... It may seem pretentious but in past days I programmed (blueprint) a very interesting (and more or less original) Game Mechanic (FPS-Puzzle). Unfortunately I am not good at making anything beautiful, so if anyone here is interested ... get in touch.
We can do it together :) I intend to create more than 90 levels with this idea!
 

monketron

Member
Oct 27, 2017
2,842
Seriously, do devs still avoid learning about a tool because of the language it's written on? This makes no sense.

It makes perfect sense. If you have 10+ years experience in C# you aren't gonna pick a tool that's in another language when there's one you can use in the language you're comfortable in. It's just human nature, not just that but your manager probably isn't going to want to waste time and money on you while you 'retrain'.
 

behOemoth

Member
Oct 27, 2017
5,611
All that talk reminded me how Naughty Dog had their own language based on lisp. They ditched it because Sony encouraged to share Code between the studios.
 
Oct 27, 2017
3,586
CLR and java use a tracing garbage collector. it determines if an object has to be freed checking if it is reachable from some root object. If an object cannot be reached it is freed. Lower level (and generally less sophisticated) c++ garbage collection is reference counting. But each object has to count how many things reference it.

They're both garbage collectors but people used to refer to the former when saying Garbage Collector, Reference counting was a different form of memory management.

Okay, I've just checked the docs, and apparently we're both wrong. Neither Unity nor UE4 use reference counting, they both use tracing to determine which objects can be removed. The difference seems to be that UE4's implementation is a whole lot more optimised.

Anyway my point was that you don't have to worry about memory management in C++ with UE4!
 

SeanBoocock

Senior Engineer @ Epic Games
Verified
Oct 27, 2017
248
Austin, Texas
Okay, I've just checked the docs, and apparently we're both wrong. Neither Unity nor UE4 use reference counting, they both use tracing to determine which objects can be removed. The difference seems to be that UE4's implementation is a whole lot more optimised.

Anyway my point was that you don't have to worry about memory management in C++ with UE4!

Sure you do. Even if you were working in a completely managed environment/language, you have to worry about memory allocation and how objects are referenced. Unreal's garbage collection implementation relies on their reflection/runtime type system and you can still just as easily leak memory you have allocated via new/malloc.
 

tuxfool

Member
Oct 25, 2017
5,858
Okay, I've just checked the docs, and apparently we're both wrong. Neither Unity nor UE4 use reference counting, they both use tracing to determine which objects can be removed. The difference seems to be that UE4's implementation is a whole lot more optimised.

Anyway my point was that you don't have to worry about memory management in C++ with UE4!
Lol. I didn't know that about UE4.

I wouldn't go so far as to say you don't have to worry about it. The paradigm is different, but even in the CLR and java you can leak memory. And you can hammer it in such a way that it starts to hurt performance in ways that are hard to determine.
 
Oct 27, 2017
3,586
Sure you do. Even if you were working in a completely managed environment/language, you have to worry about memory allocation and how objects are referenced. Unreal's garbage collection implementation relies on their reflection/runtime type system and you can still just as easily leak memory you have allocated via new/malloc.

Okay, you don't have to worry about memory management with C++ in UE4 any more than you do with C# in Unity (unless you want to)!
 

justiceiro

Banned
Oct 30, 2017
6,664
Yeah, but not a game dev. Started on a basic-like language, then Java, then php for my first job, then c#, then c/c++, where I'm still am. Around 15 years, when you add all up. And while some transitions were smother than others, there is always knowledge that I can apply, if not down right need it. I remember helping interns develop python scripts, they would thank me for days, but I never actually developed anything in python before, I just gave a suggestion of what I would have done in Java.

There were also times where my lack of knowledge in non-related languages cost me a interview or even a job. Some companies just assume everyone knows python and can work with makefile no matter the technology you are working on.
Nah. JavaScript as close to a "bad" language as it gets, but I really don't hate it because of that. Usually it's the frameworks and tools you have to work with what's problematic. At least for me. Node.js is fine, Typescript is transpired but not too complex so it gets a pass, it is not ideal, has some insane stuff but far from shit.

Frontend work? The amount of engineering around the fact that the web was never meant for these fucking apps creates an environment that is hell to work with. This is true for Node too but it's the frontend where hell gets loose.

It works the other way too. Swift is the best application language I've ever worked with and the way Apple has been handling UIKit and SwiftUI lately just completely scares me away.
Yeah, this is a argument I can get behind.