Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Hi, I did a video about performance of Fortnite on iMac and MacBook Pro, check it out here:

Hey, thanks so much for contributing your video to my thread!

I'm just sad to hear that you even have performance hitches and dropped frames while playing with that beefy RX580 gpu!

That should not be.
 
  • Like
Reactions: MrUNIMOG
Yes, the machine still struggles at some point :( Trust me, on xbox one x it is much much better experience.

I remember the Fortnite from conference and I just can't believe that Apple approved such a poor port.
 
Yes, the machine still struggles at some point :( Trust me, on xbox one x it is much much better experience.

I remember the Fortnite from conference and I just can't believe that Apple approved such a poor port.


It is very frustrating, for sure. Although, to both Epic's and Apple's credit, the performance of the game has improved by dramatic degrees, from what it was when I first started playing. It's just very clear where the optimization money and talent has been applied first - consoles and PCs. In a way, I guess the development of Mac Metal and Mac Fortnite can be said to be stories told concurrently, by that I mean since Fortnite came along as Epic was changing over to Metal, it was bound to show all those Metal growing pains as development has gone on. That, and Fortnite is in Beta...
 
  • Like
Reactions: MrUNIMOG
Yes, I can agree. The port at the beginning was a disaster. Now is better but still away from Windows and consoles.

I'm not really into games programming but I think if they put more resources to it, they will probably find a way to increase the performance using Metal 2.

I really hope that they will improve it in the future.
 
Yes, the machine still struggles at some point :( Trust me, on xbox one x it is much much better experience.

I remember the Fortnite from conference and I just can't believe that Apple approved such a poor port.

The conference talk concentrated on discussing the work required for the iOS version of the game and was given by someone who worked on the iOS & PC/Console versions but not directly on the macOS version. The macOS version of Fortnite has a different history and considerably different performance and feature set as it is graphically identical to the PC version, whereas the iOS game is understandably a lot simpler graphically. Even Xbox has lower graphical fidelity than the High and Epic options on macOS/Windows.

There wasn’t the same focus on the macOS version of UE4, never mind Fortnite, during 2017 as we worked on more high-end iOS support (i.e. bringing the desktop-forward, aka VR, renderer to iOS).

While you won’t see it in the current version of Fortnite there are pretty big changes coming in the UE4 4.20 that should help Mac Fortnite considerably when integrated into the game - I can’t tell you when as I don’t know. I am personally hoping to keep plugging away at Mac/PC differences over the rest of this year as we move to support macOS Mojave and get Apple’s new tools working with UE4. The GPU vendors and Apple are also looking at the performance differential and we are working with them to eliminate it, but it doesn’t appear to have a single straightforward cause so far which means I can’t and won’t make promises I can’t keep.
[doublepost=1528996937][/doublepost]
It is very frustrating, for sure. Although, to both Epic's and Apple's credit, the performance of the game has improved by dramatic degrees, from what it was when I first started playing. It's just very clear where the optimization money and talent has been applied first - consoles and PCs. In a way, I guess the development of Mac Metal and Mac Fortnite can be said to be stories told concurrently, by that I mean since Fortnite came along as Epic was changing over to Metal, it was bound to show all those Metal growing pains as development has gone on. That, and Fortnite is in Beta...

This is very true. The macOS version of Metal and our support for it have matured together. That means Fortnite shows where time and attention have been focused in the past, but it can’t tell you where the focus will be in the future. ...
 
Last edited:
Yes, I can agree. The port at the beginning was a disaster. Now is better but still away from Windows and consoles.

I'm not really into games programming but I think if they put more resources to it, they will probably find a way to increase the performance using Metal 2.

I really hope that they will improve it in the future.

I’m actually glad you did the video. Maybe now I can get some proper time (i.e. months, not hours*) to work on Mac Fortnite - obviously don’t hold your breath!

(* I’m an engine team programmer not dedicated to Fortnite so I only spend short spells attacking individual bugs unlike the dedicated game team engineers. There are dedicated Mac engineers but as with all things there is more work to do than time and people to do it.)

When I started at Epic (2013) the Mac version of Fortnite ran at ~40% of PC using OpenGL. By the time of the closed Alpha we’d dragged it to more like ~60% of PC, still using OpenGL. Metal got us to 70-85% and we have been hovering around that ever since. The in-game stalls and hitches have several causes, one is shader compilation because UE4 is heavily invested and designed around the DX11 shader compilation model which means it performs poorly with DX12/Vulkan/Metal/OpenGL which all have a more explicit model that requires developers do more work to make it efficient. The other is the number of graphics resource allocations that game makes each frame, which has always hurt Metal where some drivers deal with it very poorly*. You should see significant improvements to both of these issues once the UE4 4.20 engine release is merged into Fortnite as they are what I’ve been spending my time on.

We don’t need to adopt new features so much as I need to be given the time to work with the GPU vendors to understand the remaining performance differential. Until I understand what the problems are adding more feature support will just cause performance to regress further vs Windows. I know that kind of quiet, unseen and unsexy work is held in extremely poor regard with people only interested in visible and exciting ‘new’ shiny marketing tick boxes, but it’s what actually gets results.

(* Anyone who mentions the MTLHeap feature without understanding the CPU and GPU performance penalties of using MTLFence should take a moment before posting - I would use these features if they were faster for UE4, but because of the way the higher-level engine code works they are much slower at the moment. The higher level code is sacrosanct and I am not permitted to change it, nor could I do so by myself because of the sheer scale of the changes that would be needed)
 
Last edited:
I’m actually glad you did the video. Maybe now I can get some proper time (i.e. months, not hours) to work on Mac Fortnite - obviously don’t hold your breath!
That's not so reassuring to know that Epic won't dedicate more than a few hours here and there to work on the Mac version of their flagship game.
I would use these features if they were faster for UE4, but because of the way the higher-level engine code works they are much slower.
Does this have anything to do with what's said at 57:40 here?
 
  • Like
Reactions: MrUNIMOG
That's not so reassuring to know that Epic won't dedicate more than a few hours here and there to work on the Mac version of their flagship game.

There are individuals dedicated to the game, including the Mac version, but I’m not one of them. I am engine programmer so I only tend to spend an hour or two or a day or two looking at any particular project, even Fortnite. I am not suggesting and I should not be interpreted as saying that this is all the programming effort Mac Fortnite receives from the whole company as that’s not the case. Plus, my comment is exaggerated for comic effect - I wasn’t being entirely serious ;)

Does this have anything to do with what's said at 57:40 here?

Yes. Moving to MTLHeap and MTLFence is something I want to do, but it isn’t easy to get right in UE4, which is why it hasn’t happened yet. More thought is required on this problem and that is something we hope to be applying ourselves to this year, but there’s many a slip between cup and lip.
 
Last edited:
I’m actually glad you did the video. Maybe now I can get some proper time (i.e. months, not hours*) to work on Mac Fortnite - obviously don’t hold your breath!

(* I’m an engine team programmer not dedicated to Fortnite so I only spend short spells attacking individual bugs unlike the dedicated game team engineers. There are dedicated Mac engineers but as with all things there is more work to do than time and people to do it.)

The point of the video was just to show how the Mac version of the game performs on relatively good, up to date machines.
While you won’t see it in the current version of Fortnite there are pretty big changes coming in the UE4 4.20 that should help Mac Fortnite considerably when integrated into the game - I can’t tell you when as I don’t know. I am personally hoping to keep plugging away at Mac/PC differences over the rest of this year as we move to support macOS Mojave and get Apple’s new tools working with UE4.
I would love to do another one if Epic and your colleagues would improve the performance of the game.
I really hope that Fortnite and other Mac games will have increase performance on Macs.
 
  • Like
Reactions: MrUNIMOG
The point of the video was just to show how the Mac version of the game performs on relatively good, up to date machines.

Of course.

I strongly suspect that the initial hitching when the game first starts (i.e. before and during the jump from the BattleBus) is due to shader compilation which is very CPU dependent so the beefier iMac with higher clocks and more hyperthreads will perform better than the MacBook. The DX11 API didn’t expose just how *slow* bytecode->GPU shader compilation is, the vendors spent millions of dollars hiding it by making their drivers multithreaded and incredibly complex, whereas Metal/DX/Vulkan just expose all the pain to application developers. That leads to a big mismatch between UE4 and the next-gen APIs. I wrote a system to deal with this for OpenGL but it wasn’t scaling so for iOS Fortnite I replaced it and the new system should be enabled and fully configured in macOS builds imminently. There is a lot of behind the scenes work to get it running as well on the larger, more complicated Mac build of the game though.

Some of the in game frame loss on the iMac will be the same shader compilation problem and some will be resource reallocation. I’d expect the stalls due to resource allocation to improve once the Fortnite ships on the latest UE4 engine version in the coming months as I’ve rewritten the Metal code in light of the performance problems Fortnite and Obduction highlighted.

There is an underlying delta to Windows as well, which you didn’t have the tools to investigate in your video. That’s what I’m most interested in eliminating now.

I would love to do another one if Epic and your colleagues would improve the performance of the game.
I really hope that Fortnite and other Mac games will have increase performance on Macs.

It should be “when” not “if” we improve Mac Fortnite. I can’t promise specifics or dates but there is a desire to make improvements, only the timing and degree are imponderable.

It galls me personally that my former colleagues at Feral are closer to Windows performance than I am with UE4. Admittedly they have more staff and thus man hours to spend on each title for the Mac specifically than I’ve been able to, but still... I have my personal and professional pride at stake!
 
Of course.

I strongly suspect that the initial hitching when the game first starts (i.e. before and during the jump from the BattleBus) is due to shader compilation which is very CPU dependent so the beefier iMac with higher clocks and more hyperthreads will perform better than the MacBook. The DX11 API didn’t expose just how *slow* bytecode->GPU shader compilation is, the vendors spent millions of dollars hiding it by making their drivers multithreaded and incredibly complex, whereas Metal/DX/Vulkan just expose all the pain to application developers. That leads to a big mismatch between UE4 and the next-gen APIs. I wrote a system to deal with this for OpenGL but it wasn’t scaling so for iOS Fortnite I replaced it and the new system should be enabled and fully configured in macOS builds imminently. There is a lot of behind the scenes work to get it running as well on the larger, more complicated Mac build of the game though.

Some of the in game frame loss on the iMac will be the same shader compilation problem and some will be resource reallocation. I’d expect the stalls due to resource allocation to improve once the Fortnite ships on the latest UE4 engine version in the coming months as I’ve rewritten the Metal code in light of the performance problems Fortnite and Obduction highlighted.

There is an underlying delta to Windows as well, which you didn’t have the tools to investigate in your video. That’s what I’m most interested in eliminating now.

It should be “when” not “if” we improve Mac Fortnite. I can’t promise specifics or dates but there is a desire to make improvements, only the timing and degree are imponderable.

It galls me personally that my former colleagues at Feral are closer to Windows performance than I am with UE4. Admittedly they have more staff and thus man hours to spend on each title for the Mac specifically than I’ve been able to, but still... I have my personal and professional pride at stake!

Good luck with everything! Thanks for sharing your knowledge and providing details on this topic. :)
 
  • Like
Reactions: MrUNIMOG
I just wanted to come and say thank you to Mark for his extremely useful and insightful comments on the behind the scenes process at Epic. Playing Fortnite on the Mac has been a real rollercoaster - sometimes good (enough), sometimes a disaster. I'm glad to hear people are working on it and that the problems are real but fixable.
 
A performance too far

That was very interesting, and is a clear indication to any Mac players that no matter what system they have they need to be running Fortnite through Bootcamp. At least until Mark and his colleagues can manage the optimisation to MacOS.

[EDIT: In the light of comments below, I withdraw my endorsement of this video. I'm afraid I'm still learning about all this stuff.]
 
Last edited:
  • Like
Reactions: MrUNIMOG
That was very interesting, and is a clear indication to any Mac players that no matter what system they have they need to be running Fortnite through Bootcamp. At least until Mark and his colleagues can manage the optimisation to MacOS.

Complaining about not supporting OpenGL shows a fundamental lack of awareness of just how advanced, and thus demanding of graphics APIs, the UE4 renderer is. That grinds my gears - his OpenGL Mac can’t play RoTR etc. either. That Fortnite uses a cartoony ar style doesn’t make the renderer simpler!

He is also complaining about runtime shader pipeline creation hitching which I’ve also explained. I would hope future builds are far better off than older ones but absolute perfection is not achievable in Fortnite because of the way UE4 is structured. I can’t wait for the day when our game teams start using DX12 and/or Vulkan and encounter the same issue on PC...

Finally telling people not to play the game on macOS is not the answer. Nothing good will happen if there are no macOS players!
 
  • Like
Reactions: MrUNIMOG
(…)
Finally telling people not to play the game on macOS is not the answer. Nothing good will happen if there are no macOS players!

Youre asking a community of incredibly competitive players to play with image freezes, FPS issues... Now I see it more clearly than ever; Developing the engine or participating actively in the development of a game doesnt imply playing it. Theres no quality checks. It also bothers me to see the abandonment of the official forums of Fortnite. A thread opened in February, it has 23 pages and only here was an answer obtained giving to understand that you are not conscious (no one to be exact) of the problem, that nobody were not working on it, and that it was not a priority. I understand that it is not easy, but one of the games with so much economic return has means to spare. It is incredibly shameful.

Playing Fortnite over macOS in this state IS NOT a solution.

:facepalm:
P.D: Sorry for my bad english, ive use a translator in some parts.
 
Youre asking a community of incredibly competitive players to play with image freezes, FPS issues... Now I see it more clearly than ever; Developing the engine or participating actively in the development of a game doesnt imply playing it. Theres no quality checks. It also bothers me to see the abandonment of the official forums of Fortnite. A thread opened in February, it has 23 pages and only here was an answer obtained giving to understand that you are not conscious (no one to be exact) of the problem, that nobody were not working on it, and that it was not a priority. I understand that it is not easy, but one of the games with so much economic return has means to spare. It is incredibly shameful.

Playing Fortnite over macOS in this state IS NOT a solution.

:facepalm:
P.D: Sorry for my bad english, ive use a translator in some parts.

I personally can't enjoy playing the games I work on, including Fortnite. I need a year or two of not playing to avoid having anxiety and stress completely spoil them - the pressure in this industry is *incredible*.

I don't have much knowledge of the Fortnite forums or community management - but take it from me - I know about these issues! As stated I've worked on mitigations for the in-game hitching not all of which are integrated in the released builds. I can't promise perfection but don't for a moment state that no-one is working on this.

If someone wants to play competitively and feels that running under Bootcamp is currently advantageous then they should, but if no-one plays the macOS version at all then there'd be no point improving it. Epic don't want to follow Frontier's lead with Mac Elite Dangerous but if everyone takes this guy's "advice"...

At whatever company and regarding whichever game the macOS version has to justify further investment in isolation - it cannot siphon off resources from more successful Windows/Console/Mobile versions.
 
Last edited:
I was sure UE4 supported DX12 and/or Vulkan on the PC. :eek:

We (Epic) haven't shipped a game on Windows with DX12 or Vulkan yet - you have the same runtime PSO creation problem there as you do on macOS Metal. Console is a bit different because you can compile shaders all the way down to the hardware offline but Mac/PC need an intermediate to support different GPU vendors.

More to the point, Fortnite's current macOS build does not contain a properly pre-populated PSO cache whereas the iOS version does. That's why iOS doesn't hitch whereas the macOS suffers terribly. This state of affairs displeases me as the new PSO cache was a lot of effort. Hitching can therefore be significantly improved in a future build - though absolute perfection is not possible because the PSO cache is never 100%.
 
Complaining about not supporting OpenGL shows a fundamental lack of awareness of just how advanced, and thus demanding of graphics APIs, the UE4 renderer is. That grinds my gears - his OpenGL Mac can’t play RoTR etc. either. That Fortnite uses a cartoony ar style doesn’t make the renderer simpler!

He is also complaining about runtime shader pipeline creation hitching which I’ve also explained. I would hope future builds are far better off than older ones but absolute perfection is not achievable in Fortnite because of the way UE4 is structured. I can’t wait for the day when our game teams start using DX12 and/or Vulkan and encounter the same issue on PC...

Finally telling people not to play the game on macOS is not the answer. Nothing good will happen if there are no macOS players!

Don't worry, MrMacRight's technical knowledge is basically non-existent and his YouTube channel is clickbait garbage. He has zero interest in actually addressing the performance issues, and would rather create endless "Fortnight sucks on Mac!" videos.
 
  • Like
Reactions: MrUNIMOG
Finally telling people not to play the game on macOS is not the answer. Nothing good will happen if there are no macOS players!

If it's any comfort, many of the Mac players I've spoken to are adamant that they will not be departing from playing on MacOS. This is because they can't afford a gaming PC, or because they don't want to install a Windows partition (for whatever reason), or because they don't play the game frequently enough to make it worth the bother of investigating alternatives.

Personally, I alternate between MacOS and Windows for playing. Sometimes I just don't want to go through the hassle of booting up in Windows, which has given me problems in other respects; or I need to keep MacOS open for other reasons. Or sometimes I'm just doing a session where I want to finish challenges, etc, and the hitching isn't really a big issue.
 
  • Like
Reactions: MrUNIMOG
We (Epic) haven't shipped a game on Windows with DX12 or Vulkan yet - you have the same runtime PSO creation problem there as you do on macOS Metal. Console is a bit different because you can compile shaders all the way down to the hardware offline but Mac/PC need an intermediate to support different GPU vendors.

More to the point, Fortnite's current macOS build does not contain a properly pre-populated PSO cache whereas the iOS version does. That's why iOS doesn't hitch whereas the macOS suffers terribly. This state of affairs displeases me as the new PSO cache was a lot of effort. Hitching can therefore be significantly improved in a future build - though absolute perfection is not possible because the PSO cache is never 100%.
Pardon my ignorance, but what does PSO stand for in this case – Particle Swarm Optimization?

https://en.m.wikipedia.org/wiki/Particle_swarm_optimization
 
  • Like
Reactions: MrUNIMOG
Pardon my ignorance, but what does PSO stand for in this case – Particle Swarm Optimization?

https://en.m.wikipedia.org/wiki/Particle_swarm_optimization

Pipeline State Object. It specifies the full set of shaders and associated render states that the GPU needs to produce the final GPU-specific program that will do whatever evil rendering or compute work the programmer wants it to do. GPUs combine stages into such objects to optimise away redundant work and to direct work to the most appropriate bit of hardware - the silicon isn’t as neatly separated as the conceptual shader stages make it appear.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.