Initial reactions as a mac user: not awesome.

So...

I've read https://wiki.unrealengine.com/Unity3D_Developer%27s_Guide_to_Unreal_Engine_4

...and I thought to myself, why not, this sounds like it'll be an interesting thing to play with. Let's give it a whirl shall we?

I have to say, nothing but disappointment here.

Here's a quick list of things that weren't awesome:

  • The engine has gone out of its way to make using 'blueprints' the preferred way for scripting.

However, the power of having the source for the engine and being able to 'debug' issues directly only applies if you don't actually use blue prints.

Blue prints are cool, but only when you actually write C++ for them to use. I'm so completely not interested in writing flappy bird using the blueprint system.

To be fair, you can add C++ classes, but the tutorials are all geared for blueprint users.

  • It's full source right? So you can drop in say, C-plugins and directly invoke them using C++, which is far far more awesome than unity? Right?

Only, the guide for doing that (https://wiki.unrealengine.com/Linking_Static_Libraries_Using_The_Build_System) contains barely enough information to do it, and the actual project that uses it (https://github.com/BobGneu/Flathead/blob/master/Source/Flathead/Flathead.Build.cs) uses a completely different way of linking that (surprise) doesn't work on macs.

The editor also hard crashes if you have a malformed Plugin/Foo directory, so there's no way to even debug what you might be doing wrong.

  • Let's make a hello world application!

Well... When you find the basic logging documentation (https://wiki.unrealengine.com/Logs,_Printing_Messages_To_Yourself_During_Runtime#In-Game) it says you can print a message using:

GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("%s"), "Hello World"));

Create a new component, and actually write some C++, for about 15 seconds I was actually starting to get excited; but no, the logging doesn't actually work: http://imgur.com/el1mqxM

...and then the editor crashed again.

So, clearly something isn't going according to plan, but the documentation says to use printf format, and last time I checked:

printf("%s", "Hello World"); 

Shouldn't cause your application to crash.

  • In the vague hope that perhaps the automation was meaningful, I looked into that.

I tried looking to see how you could compile your project from the command line, or you know, maybe run some tests or perhaps even just build the project at all

...but seems like none of that stuff works on macs.

  • Finally, in the hopes I could customize the build system directly I looked into that, and dang me if the automation tool isn't written in C#.

So... I get to jump from Unity (C# CLR for everything) to UE4, where I have to use some ridiculous visual DSL (blueprints) to write code, write some small parts of it in C++, write build systems in C#, and rebuild the entire engine to link plugins into it?

To say that I'm disappointed thus far, from this amazing engine, is rather an understatement.

Looking at the questions page, it seems very very few mac developers use the engine; are there other people out there on mac using this?

Do you have some thoughts on why it might be worth sticking with it, despite the crashes and terrible tooling?

I'd love to love this engine, but I'm just walking away shaking my head right now.

Posted Mar 15, 2015, 3:59 PM UTC

05
MorleyInsane•

Blueprints are being stressed as a majority of the people using the engine don't know how to write C++ or read the api docs. There are very few C++ tutorials, yes. I totally agree and wish there were more. However, this engine requires a very high level of know how for programming. Unlike Unity, you have class access to almost everything. Unity kinda holds your hand through the process of programming providing higher levels of access at a cost.

Also I think it's important to remember a few things:

  • The "terrible tooling" has consistently created hugely successful AAA games.

  • Blueprints are, in fact, programming. They just allow for a visual style of it.]

  • API Docs is all you need if you have the experience. If not, blueprints is a great place to start.

  • Mac isn't the most stable platform at the moment (as well as linux). These two platforms are relatively new and with an engine of this complexity, bugs crashes and leaks take time to sort out.

Sorry if this came off as rude, that was not my intention. But give it time and patience. These is quite a learning curve compared to Unity, but entirely worth it, I promise.

13
kylawlDev•

The engine has gone out of its way to make using 'blueprints' the preferred way for scripting.

Blueprints and C++ are both first class citizens, you can even hotswap C++ just like you do in Unity with C#. The C++ documentation isn't very good, that is true. Your best way to know what to do is to use the engine code to help you along.

If you want the C# experience in Unreal. The mono guys have an up to date version of mono integrated into Unreal. I have not tried it but it looks cool, and it's not the old stale garbage runtime and gc that Unity won't update. https://mono-ue.github.io/

It's full source right? So you can drop in say, C-plugins and directly invoke them using C++, which is far far more awesome than unity? Right?

If you have the debugger attached, you'll see some log output with info about why the plugin failed to load. That said this is an annoying process, it should handle this shit better.

Also, you do not need to recompile the engine or statically link your plugins into the engine. The plugins are fully isolated and can be loaded by the binary distribution of the engine from the Epic Launcher.

Let's make a hello world application!

So in the case of your FString::Printf, I would try wrapping "Hello World" in a text macro too TEXT("Hello World). I bet that will also fix your crash because of some out of bounds memory read. C++ doesn't have a nice string type like C# so you need to wrap strings in that TEXT() macro in order to keep everything safe between utf-8 and ascii.

In the vague hope that perhaps the automation was meaningful, I looked into that.

Those commands should work for you. I used a shell script on Mac that kicks off a build before starting the editor. I also do not invoke the unreal build tool directly but instead use Build.command.

Engine/Build/BatchFiles/Mac/Build.command ProjectName Development

In the end UE4 not as safe as Unity, no doubt. It will get better, it had gotten a lot better. But it will never be as safe as Unity.

Big picture stuff:

Unreal's features and tools are world class and scale for very big games. Unity has no material editor to speak of and it's animation system is inferior garbage. It technically doesn't even have a state machine (most people use play maker, but thats not free and it's still inferior).

The Unity community is huge, there are lots of resources everywhere. But it's doesn't take long before you become a trailblazer because the community is also not as experienced. The Unreal community has a lot of very senior people form many AAA studios all over the place. They contribute fixes and new features back to the engine so it's always getting better in ways we want because we make the changes.

Unity is a bouncy castle playground where people can make lots of great games but there is a glass ceiling. You can't make your game faster or better or even fix a bug once you hit that ceiling without paying.

Unreal on the other hand is a real castle, it comes with an awesome mote and sharks, but shit can kill you. But when you get into a real battle, you're sure as shit going to survive. You can make anything from flappy bird to gears of war, and once you get the hang of it, it's 95% as easy as Unity. The other 5% is the plague, but if you stay clean you'll survive.

Goofy analogies aside, your complaints are totally valid and I encourage you to post your feedback to the feedback forums https://forums.unrealengine.com/forumdisplay.php?24-Feedback-for-Epic It's the only way it will get better.

Hope this helps

edit: formatting

6
ShawnReardon•

You don't know how to do something so it's the engines fault. I don't know how to do anything and it is entirely my fault. Try a little less whining and more Google.

5
Antiuniverse•
...FString::Printf(TEXT("%s"), "Hello World")...

You need the TEXT() macro around the "Hello World" string you're passing in varargs as well, otherwise it has the wrong bit width.

On the subject of Blueprint: That term actually encompasses a lot of related functionality beyond just visual scripting. For me, being able to implement new subclasses with modified properties in a data-driven way, without leaving the editor, and without having to endure a compile/link cycle, is the far more useful portion of the concept.

For what it's worth, I have avoided implementing any logic in visual scripting, and I don't feel like I'm missing out. But I'm not the target audience; I am very comfortable with C++, and my "tutorials" are looking at the engine code and the sample project code.

As for plugin building: I don't think the fact that you're having difficulty with that has as much to do with being on the Mac platform as you're assuming. I've seen tons of complaints about the build system being difficult to comprehend on the forums. You should try searching and perhaps posting there if you have specific questions.

3
drekmonger•

Blueprints are way, way more powerful than you're giving them credit for. Dismissing them as a method to make flappy bird is doing injustice to Epic's accomplishment here....this is the only visual scripting system I've aware of that's worth a hill of beans. It's actually fun to use. I wish someone 10x smarter than me would ported over to a platform with more general application.

Not that it's going to make you feel any better, but the Windows version of the editor isn't exactly the paragon of stability either. Either you appreciate everything that's in the engine and are willing to suffer through the crashes and pitfalls, or not. I wouldn't hold my breath waiting for stability to become epic's focus, not with the deluge of new features still in the pipe.

3