[Feedback] Rocket on OS X

Yesterday I tried to build our C++ Rocket-based game on OS X. I found and fixed multiple problems and I thought that if I wrote them here then it would be useful to many people.

  1. Rocket requires OS X Mavericks to work. Even though Rocket itself runs on Mountain Lion, the service that you’re required to use to generate the Xcode project (.xcodeproj) will fail. I wish I had written down the error message but it’s along the lines of “Cannot find (null). Please upgrade (null) or use a previous version”.

  2. After upgrading to Mavericks, the service no longer appears in the Finder services menu. Also fun is the fact that Rocket apparently only registers the service once so I had to go and find and delete the files inside ~/Library (I am not in front of my Mac here else I’d tell you specifically which files!) in order for Rocket to register the service again.

  3. Something that is missing from the documentation (but is obvious with hindsight!) is that Rocket requires you to have the Mono framework installed. Once you have the option to generate an Xcode project, you’ll only get errors until you download and install the Mono framwork.

  4. At this point you’ll actually be able to open the Xcode project. If, however, you’re actually using C++11 features at this point then you may end up in limbo - just like me. The UnrealBuildTool.exe tries to compile all of the files but isn’t setting the compiler options correctly. It needs to specify “-std=c++11 -stdlib=libc++” but, right now, it either sets none or sets just the former. The net result is that it won’t be able to find the header and other features such as std::function will be missing too. It even complains about some parts of Epic’s own header files too!

FYI - I have the latest Xcode - the latest everything. I try to keep my Mac completely up to date.

The Mac version needs more work to be usable - but it’s almost there! If Epic need any help with Mac testing then I’m here to help. :slight_smile:

If you’re thinking about getting Rocket working on your Mac - so long as you aren’t using C++ projects then I think you’re fine. If you are then it doesn’t currently work AND please make sure you have upgraded to Mavericks before installing Rocket. Doing so will let you avoid some of the teething pain that I went through last night. :slight_smile:

Thanks for your feedback.

The documentation here: https://rocket.unrealengine.com/docs/ue4/INT/GettingStarted/index.html does say that you need to use Mavericks and install Mono, but I suppose we need to make this information more obvious and easier to find. I’ll see about what can we do to improve services registration.

As for C++11, we do use some of its features and I’m pretty sure we’re setting all the compiler settings that allow this. Could you give me some example of C++11 feature that is supported by Apple’s Clang, but does not compile correctly in Rocket project? Or, even better, an example of Epic header that Clang complains about?

I just found it in “Minimum and Recommended Specs” which wasn’t an obvious place to look. I checked the Release Notes and other places but didn’t think to check that section - if the latest MBP can’t run it then not many Macs can. :slight_smile:

I can’t tell you right now which Epic headers complained but I can tell you how to reproduce the errors - add this to one of your project’s cpp files:

#include 

It will complain that it can’t be found. I suspect that I could make it work if I were to change that to be:

#include 

…but that would be incorrect. :slight_smile:

It looks like it’s using libstdc++ (from GCC) and not libc++ from LLVM/Clang.

Yes, you’re right. I just double checked and indeed, we don’t pass -stdlib=libc++ to Clang. I’ll fix that right away (but you’ll have to wait till next beta for this, sorry :/). Many thanks again.

Well, at least it’s fixed! I’ll just have to contain my enthusiasm for Mac builds until then. :slight_smile:

Oh, one more piece of feedback - it’s extremely CPU intensive even when doing nothing. For example just loading Rocket and getting to the window where I can choose to create a new project or open an existing one using 30% of my resources - that’s more than an entire core being used for (seemingly!) nothing. :slight_smile:

For various reasons right now the editor is constantly redrawing all its windows, even when nothing changed. And it’s not only on Mac. This is something I hope we can optimize in near future.