Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
I picked the right time to leave Macs behind for good. All my favorite games to play are older titles. I love playing Empire at War and the Jedi Outcast games, and I will happily continue to do so and more on my Surface. I’d be pissed right now if I still used a MacBook.

I realized that I love the iPad and the iPhone is a very convenient device for me, but I can’t stand Macs, and I tried to like them several times too. I think it’s because I’m willing to put up with some walled garden aspects for tablets or phones, but for computers I draw the line. This right here is a perfect example as to why.
 
I bet if you had some volunteers with some basic direction on what to do, they can have all those games updated to work in 64-bit mode for free. Programmers are generally just lazy when it comes to updating their code and it doesn't help that companies cram them into a noisy room so they can't focus on anything.
 
When Catalina comes out, I guess I will create a clone of my Mojave iMac on an external SSD, and keep the dozen or so 32-bit games that I still have (Plants vs. Zombies is still a time waster for me!). Then, through as an external boot drive, I can keep working through the backlog of games that have built up. Still haven't got to BioShock 1 and 2 yet.... I still have some 16 bit games on my old white plastic MacBook running Snow Leopard (Diablo and Warcraft 2, for example). I love the old games!
 
I bet if you had some volunteers with some basic direction on what to do, they can have all those games updated to work in 64-bit mode for free. Programmers are generally just lazy when it comes to updating their code and it doesn't help that companies cram them into a noisy room so they can't focus on anything.

I agree apple programmers are super lazy, can't even support 32bit libraries in their OS.
I suspect this is Tim's fault, he crippled iOS devices with low amounts of ram so that the only way to add new os features is to remove old ones.
 
You know, it's kind of sad that Apple is so extremely willing to forgo backwards-compatibility these days, especially when it's been shown that they can do it really well when they want to (Classic Mode, and then the whole move from PPC to Intel, Apple handled backwards - compatibility pretty darn well in both of those cases). I'll probably end-up having to create yet-another VM so I can run certain 32bit Mac apps that I can't do without (until viable alternatives become available).

For those of you about to lose access to games you love, it really is time to move on to Bootcamp. It's (usually) pretty painless and most older games run just fine on Windows 10, so you'll almost certainly be able to continue playing the games you enjoy. You can download the Windows 10 ISO for free, install it, and run it un-activated while you decide if it's for you.

Games also run so much better under Windows that there really is very little reason to play any title natively on MacOS in the first place. Maybe someday that will all change, which would be wonderful, and until then it's great that ASPYR exists for those who, for whatever reason, really, really don't want Bootcamp. But still, if you are even halfway serious about gaming, just install Windows in Bootcamp. There are a TON of older Windows games (I suggest shopping on GOG first), that are still fantastic today and run quite well even on integrated GPUs. (A few years back I even setup Assetto Corsa with a Logitech G25 on an iMac with integrated graphics. Game runs darn well at a solid 30fps and 1080p with only a handful of quality tradeoffs. Pretty cool to see a Mac running a real racing sim with full FFB support.)
 
Last edited:
  • Like
Reactions: Avenged110
I find it hard to believe it would be that hard to compile it as a 64bit binary. I wonder what library they're using that's causing it to be a deal breaker, surely every once in a while they get a few sales

It seems fairly easy considering that with the latest free (!) DLC from E3 they’ve silently ported Borderlands 2 to 64-bit. They’re not even going to make any money off that...
[doublepost=1560826195][/doublepost]
Good. Glad to hear they are continuing support for 64 bit games. My Power Mac G5 is a 64 bit computer. Let me go and buy a game today. Oh wait, Apple discontinued my 64 bit computer.

Cry me a river on trying to run any software on hardware that old.

You’re aware that all intel Macs are 64-bit and macOS has transitioned to fully support 64-bit apps about 8 ****ing years ago?

The fact that any games ever since have been developed for intel Macs in 32-bit is basically incomprehensible to me. Especially since most of the Windows originals are available as 64-bit versions. Game developers are to blame entirely. All productivity software I have has made than transition so long ago, I forgot thinking about it.
 
I'm confident that it's gotten harder to play games in macOS over the past 4 years. Back then, we had fairly up-to-date OpenGL, proper Nvidia support, and no looming 32-bit deprecations. Now Apple is asking for trouble with their war on open graphics standards and all this compatibility-breaking nonsense.

There are plenty of tests out there showing Mac-compatible games running worse in macOS than in Windows, and often it's not something the FPS meter can capture. I'm not a gamer, so idc usually, but every now and then I want to play CS:GO and have to reboot into Windows cause it's that bad in macOS. And it used to run fine 4 years ago.
People that say that playing games on Mac has become hard wasn't here ten years ago. :p

OpenGL was up-to-date on Mac until a several years ago, but it was and is severely lacking and in dire need of a replacement. Apple provided that with Metal. While many would have preferred Vulkan, simply because it was bound to become a standard, Apple gave us Metal instead. This was a good thing, since Metal came out almost two years before Vulkan, which gave it a huge headstart. At the same time, Metal is supported on WAY more units than Vulkan is. Mac developers have also taken Metal up just fine, and all new game releases support Metal. That Mac games run worse than their Windows equivalents was true - But only for OpenGL games. A properly ported Metal game often runs as good as, or better, than their DirectX12/Vulkan counterpart - And there are quite a few of those already.
 
They've already done Civ V as of last month...
Not on Steam.
[doublepost=1560844153][/doublepost]
I'm confident that it's gotten harder to play games in macOS over the past 4 years. Back then, we had fairly up-to-date OpenGL, proper Nvidia support, and no looming 32-bit deprecations. Now Apple is asking for trouble with their war on open graphics standards and all this compatibility-breaking nonsense.
What worries me is that Apple seems to increase the pressure on developers to switch to Metal. They put a lot of stress on the deprecation of OpenGL in the recent corresponding WWDC sessions. That makes me believe that the days of OpenGL support might be over more quickly than we hoped.

It seems fairly easy considering that with the latest free (!) DLC from E3 they’ve silently ported Borderlands 2 to 64-bit. They’re not even going to make any money off that...
Dropping support for BL: TPS puzzles me as well, since it shares pretty much all of its codebase with Borderlands 2. But I wouldn't be surprised if Aspyr actually ported BL2 to 64-bit at a loss, because... (see below)

The fact that any games ever since have been developed for intel Macs in 32-bit is basically incomprehensible to me. Especially since most of the Windows originals are available as 64-bit versions. Game developers are to blame entirely. All productivity software I have has made than transition so long ago, I forgot thinking about it.
You are oversimplifying this: productivity software almost always has a significant post-release revenue stream, in the form of paid updates or (unfortunately increasingly) subscriptions. Games do not have this possibility. Or can you name any instance where you had to pay for a game update (except for the Universal Binary version of Halo)? In addition, Games sales more often than not drop significantly shortly after release so that there are rarely noteworthy profits after a couple of years.

Also, that most Windows originals are 64-bit is simply not true. There are still many games, even large and noteworthy ones, which are just 32-bit. Just a few years back, 64-bit Windows games were even much rarer. Pretty much all of the games for which Aspyr drops support here are only available in 32-bit version under Windows.
 
Last edited:
  • Like
Reactions: MrUNIMOG
People that say that playing games on Mac has become hard wasn't here ten years ago. :p

OpenGL was up-to-date on Mac until a several years ago, but it was and is severely lacking and in dire need of a replacement. Apple provided that with Metal. While many would have preferred Vulkan, simply because it was bound to become a standard, Apple gave us Metal instead. This was a good thing, since Metal came out almost two years before Vulkan, which gave it a huge headstart. At the same time, Metal is supported on WAY more units than Vulkan is. Mac developers have also taken Metal up just fine, and all new game releases support Metal. That Mac games run worse than their Windows equivalents was true - But only for OpenGL games. A properly ported Metal game often runs as good as, or better, than their DirectX12/Vulkan counterpart - And there are quite a few of those already.
I was here 10 years ago. OpenGL was treated properly, and games worked great, especially all the Valve ones. Nobody cares if Metal is better. Devs seem to just be responding by dropping macOS support entirely or letting their Mac versions take a performance hit. Or Dolphin uses Vulkan with an adaptor to Metal (someone above mentioned it), which is also slower than the Windows version. No standard is going to be much better than another, just a question of who adopts what.

You know what's hilarious, some games' Windows versions run better in Wine in macOS than the Mac version does regularly.
[doublepost=1560846572][/doublepost]
I picked the right time to leave Macs behind for good. All my favorite games to play are older titles. I love playing Empire at War and the Jedi Outcast games, and I will happily continue to do so and more on my Surface. I’d be pissed right now if I still used a MacBook.

I realized that I love the iPad and the iPhone is a very convenient device for me, but I can’t stand Macs, and I tried to like them several times too. I think it’s because I’m willing to put up with some walled garden aspects for tablets or phones, but for computers I draw the line. This right here is a perfect example as to why.
Doesn't sound worth just so you can play games
... except you still can with Boot Camp
[doublepost=1560846864][/doublepost]
For those of you about to lose access to game you love, it really is time to move on to Bootcamp. It's (usually) pretty painless and most older games run just fine on Windows 10, so you'll almost certainly be able to continue playing the games you enjoy. You can download the Windows 10 ISO for free, install it, and run it un-activated while you decide if it's for you.
Agreed, this is worth just to not deal with BS when trying to maintain Mac games. Except I personally went with Win7.
 
Last edited:
It's not as simple as selecting the 64-bit target and recompiling. (I'm simplifying here...) The code will have many memory-mapped data structures where an integer is expected to be 32-bits. When integers are suddenly 64-bits, all of the addresses and offsets are no longer correct as they were set with the expectation that an integer was 4 bytes. Additionally, things like the graphics subsystem will need to target 64-bit drivers instead of 32-bit, and these things are usually not 100% the same across the entire API.

The size of an int is the same on 32 bit vs 64 bit. I am also not sure what you mean by “targeting 64-bit drivers”, but sure. Point being, CPUs have been 64-bit for more than a decade now, and programmers that don’t account for architecture in their code are plain and simple incompetent. Making your code compliant for both 32 and 64 bit arch is trivial, unless you have some very special requirements.
[doublepost=1560849867][/doublepost]
I'm confident that it's gotten harder to play games in macOS over the past 4 years. Back then, we had fairly up-to-date OpenGL, proper Nvidia support, and no looming 32-bit deprecations. Now Apple is asking for trouble with their war on open graphics standards and all this compatibility-breaking nonsense.

If anything, developing a metal backend is simpler than trying to debug OpenGL for all Mac configurations. Not to mention that most games use an engine, and al major ones support Metal already. All games I play currently support Metal and run very well. Also, this year saw plenty of high quality Metal releases.
 
  • Like
Reactions: MrUNIMOG
You seems to have forgotten that OpenGL was always 2 years behind or more on macOS. And performance were never as good as on Windows. Metal right now can get nearer Windows DirectX performance than OpenGL on Mac ever did.
 
  • Like
Reactions: MrUNIMOG
And it's really easy to port games developed for Vulkan to macOS with MoltenVK (https://moltengl.com/moltenvk/).
It adds another layer of complexity, and it is far from ready to support most AAA games. 'Really easy' is a vast overstatement.

I was here 10 years ago. OpenGL was treated properly, and games worked great, especially all the Valve ones.
What? Apple has always been way behind the official specifications on OpenGL, and as you said games were always extremely slow on Macs. And Steam didn't arrive on Mac until 2010.

Nobody cares if Metal is better.
I am glad that you don't speak for all iOS, iPadOS, tvOS and macOS developers, and all of their customers. Low level API with a significant boost and support over the old deprecated API? You are likely the only one to miss that.

Devs seem to just be responding by dropping macOS support entirely or letting their Mac versions take a performance hit.
Who has dropped macOS support due to Metal? All major porting companies are doing Metal releases just fine.

Or Dolphin uses Vulkan with an adaptor to Metal (someone above mentioned it), which is also slower than the Windows version. No standard is going to be much better than another, just a question of who adopts what.
So far Valve is the only AAA developer who has released anything using MoltenVK, so I am not really expecting any high end porting companies or developers to use it long term.
 
I agree apple programmers are super lazy, can't even support 32bit libraries in their OS.
I suspect this is Tim's fault, he crippled iOS devices with low amounts of ram so that the only way to add new os features is to remove old ones.

I wouldn't call it lazy, I'd call it the software version of planned obsolescence.
Think about it: Apple keeps pushing the App Store on the Mac, putting in Windows style pop-ups for software not from the App Store, each OS update breaks more and more older software. They practically want software to break so you end up buying an App Store version or use the iOS version via marzipan and getting some form monetization that way.
 
What? Apple has always been way behind the official specifications on OpenGL, and as you said games were always extremely slow on Macs.
I know it's hard to believe in these days, but when Apple adopted OpenGL back in MacOS 9, they actually were up-to-date, and they managed to include new versions in a timely fashion in the early days of Mac OS X, with often just a few months between the new OpenGL specifications and their implementation. They began to fall behind around the release of Leopard, when the gap between updates of the specifications and the implementation in OS X began to grow.

And there in fact was a (very brief) window in time when Apple adopted multithreaded OpenGL and a bunch of games actually performed faster under OS X than under Windows.

Who has dropped macOS support due to Metal? All major porting companies are doing Metal releases just fine.
Because it's their business model. If they wouldn't adapt, they would perish. But if you look at first-party conversions, you will notice that Mac support has quite dwindled. While in the OpenGL days it was relatively easy and feasible for developers like Flying Wild Hog (Shadow Warrior) or 4A Games (Metro series) to support OS X, they all dropped the Mac like a hot potato when Apple went proprietary. Frontier Development (Elite Dangerous) also explicitly mentioned Metal as reason for ending Mac support.
 
Last edited:
Good news everyone! If you software engineers are looking for a new job Aspyr is hiring! And I forgot they're in Austin!


I picked the right time to leave Macs behind for good. All my favorite games to play are older titles. I love playing Empire at War and the Jedi Outcast games, and I will happily continue to do so and more on my Surface. I’d be pissed right now if I still used a MacBook.

I realized that I love the iPad and the iPhone is a very convenient device for me, but I can’t stand Macs, and I tried to like them several times too. I think it’s because I’m willing to put up with some walled garden aspects for tablets or phones, but for computers I draw the line. This right here is a perfect example as to why.

You can still use your older Mac to play these games. You just won't be able to if you upgrade to Catalina. I have 2 PowerMacs that I could use to play older games, but I'm not much of a gamer.
 
Cry me a river on trying to run any software on hardware that old.

You’re aware that all intel Macs are 64-bit and macOS has transitioned to fully support 64-bit apps about 8 ****ing years ago?

The fact that any games ever since have been developed for intel Macs in 32-bit is basically incomprehensible to me. Especially since most of the Windows originals are available as 64-bit versions. Game developers are to blame entirely. All productivity software I have has made than transition so long ago, I forgot thinking about it.
I'm having a hard time recalling specifically, but weren't the first Intel Macs built using 32-bit Core chips? So not all Intel Macs were 64-bit? Or did you just mean that all modern Intel Macs are 64-bit?
[doublepost=1560869156][/doublepost]
Warcraft III better have Catalina support, or I am so DONE with Blizzard. ;-)
Are we talking the remaster or the original? The remaster is almost guaranteed, and I'd say there's about even odds Blizzard patches Warcaft III and Diablo II to work with Catalina. Come to think of it... I haven't checked, are we sure they won't already?
 
  • Like
Reactions: MrUNIMOG
I know it's hard to believe in these days, but when Apple adopted OpenGL back in MacOS 9, they actually were up-to-date, and they managed to include new versions in a timely fashion in the early days of Mac OS X, with often just a few months between the new OpenGL specifications and their implementation. They began to fall behind around the release of Leopard, when the gap between updates of the specifications and the implementation in OS X began to grow.

Yes, there was a time when Apple was truly committed to OpenGL and was seriously involved by proposing extensions and new standards (they authored OpenCL after all). Unfortunately, OpenGL fell victim to bureaucratic hell, the ARB committee was unable to take decisions, the progressive initiatives were killed off (Longs Peaks - that API would have been beautiful!) and instead OpenGL 3 was a mess. Apple was also involved in Vulkan, before it became clear that it will become an API completely unusable by anyone but most hardcore programmers.

It is unfortunate that we have this fragmentation right now, but Metal is the easiest and most well designed graphics API I have ever seen, and backporting your renderer to Metal is much easier than trying to make your OpenGL app behave properly under all implementations.
 
  • Like
Reactions: MrUNIMOG
The size of an int is the same on 32 bit vs 64 bit. I am also not sure what you mean by “targeting 64-bit drivers”, but sure.

This is not strictly true. In C (and I'm pretty sure C++) the size of an "int" is not defined. So if I declare a variable, int foo, it could be 32-bits. When switching to a 64-bit target, int could be redefined as 64-bits. If I have a data structure and I'm expecting foo to be at a specific byte index, the increased size of the ints would cause incorrect behavior. C corrected for this ages ago by defining <stdint.h>, where instead of saying int foo you would say int32_t foo or int64_t foo so that there would be no ambiguity.

When I said "targeting 64-bit drivers", it would have been better to have said a "64-bit library" (of which drivers would be a subset here), but the terminology escaped me at the time of writing.
 
  • Like
Reactions: MrUNIMOG
. While in the OpenGL days it was relatively easy and feasible for developers like Flying Wild Hog (Shadow Warrior) or 4A Games (Metro series) to support OS X, they all dropped the Mac like a hot potato when Apple went proprietary. Frontier Development (Elite Dangerous) also explicitly mentioned Metal as reason for ending Mac support.

I suppose you never used OpenGL if you say it is “easy” to port a game to Mac. Sure, the API is the same, but the behavior is quite different. So the games so ported usually run like crap. Anyway, these companies probably use their own renderer and are too lazy to support an additional renderer backend. It’s their loss I’d say. If you have a DX12 renderer, porting to Metal is trivial for most parts.

This year there are a lot of heavy hitters with excellent performance on Mac platform running on Metal. Divinity Original Sin 2(touch-bar support), Civ 6 and recently released Total War: Three Kingdoms are prime examples.
 
  • Like
Reactions: MrUNIMOG
I suppose you never used OpenGL if you say it is “easy” to port a game to Mac. Sure, the API is the same, but the behavior is quite different.
"Easy" is probably not the best description, but OpenGL being an accepted and well-documented standard absolutely made it easier to find programmers proficient with that API, and to find tips and tricks to handle its peculiarities.

If you have a DX12 renderer, porting to Metal is trivial for most parts.
Not really. Even if Metal, Vulkan, and DX12 share some conceptual similarities, there still are massive differences. Metal in particular differs from the other two by handling a couple of things very unlike these.
 
  • Like
Reactions: MrUNIMOG
This is not strictly true. In C (and I'm pretty sure C++) the size of an "int" is not defined.

True, but for all practical purposes sizeof(int)==4 across all Mac platforms. Not that it’s relevant to the topic really. That’s also why I said that I consider any programmer that would make implicit assumptions about ABI incompetent.
[doublepost=1560894874][/doublepost]
"Easy" is probably not the best description, but OpenGL being an accepted and well-documented standard absolutely made it easier to find programmers proficient with that API, and to find tips and tricks to handle its peculiarities.

You see, this is something we disagree on. In my opinion, an experienced graphics programmer is proficient across all the modern APIs, because they are based on the sane principles. And Metal is so simple that an experienced OpenGL programmer will need just a couple of hours to pick up the API. Vulkan and DX12 are more difficult to get into since the API is less friendly but still, the core concepts are the same. Shaders are a bigger issue but then again, current cross-compilers make it manageable.

And as to accepted and well-documented standard... very few OpenGL programmers would have bothered to read the spec and even if they did, it won’t help much. The core problem with OpenGL is not it’s overly complicated spec or strange API model, but the fact that it doesn’t map well to the hardware anymore and haven’t done so in years (yes, it’s much better now with 4.6). So writing OpenGL based software in practice means testing across all platforms and drivers, finding confusing slowdowns, trying to figure out idiosyncratic driver behavior and coding around it. With OpenGL, it’s very easy to shoot your self in the foot even if what you are doing is based on the spec. With a modern API, the core promises are already part of the API itself.

Frankly, the only player who really still cares for OpenGL is NVIDIA since a) they have the money and massive driver teams to fine-tune their drivers for individual software and b) it allows them to push CUDA down people’s throats as the “more efficient” API.


Not really. Even if Metal, Vulkan, and DX12 share some conceptual similarities, there still are massive differences. Metal in particular differs from the other two by handling a couple of things very unlike these.

Sure, tessellation/geometry shaders use a different model. Still, don’t see much of an issue here for a well-designed engine.
 
Last edited:
  • Like
Reactions: MrUNIMOG
Simply put, porting an older codebase designed for Windows 32bit to be 64bit clean on macOS/Linux is rarely as easy as you think. The old WWDC video of Steve Jobs saying it is as easy as ticking a check box in Xcode is pure fantasy.

True, but for all practical purposes sizeof(int)==4 across all Mac platforms. Not that it’s relevant to the topic really. That’s also why I said that I consider any programmer that would make implicit assumptions about ABI incompetent.

I really want to reiterate the following from MasConejos (slight corrections in bold):

It's not as simple as selecting the 64-bit target and recompiling. (I'm simplifying here...) The code will have many memory-mapped data structures where a POINTER/LONG/ULONG is expected to be 32-bits. When POINTER/LONG/ULONG are suddenly 64-bits, all of the addresses and offsets are no longer correct as they were set with the expectation that a POINTER/LONG/ULONG was 4 bytes. </snip>

While 'int' does not change in size on POSIX or Windows when moving from 32bit to 64bit, all pointer types change in size (e.g. sizeof(void*) == 4 to sizeof(void*) == 8). Moreover on Windows the 'long' & 'unsigned long' types are 4 bytes on both 32bit & 64bit, but on POSIX systems (like macOS) 'long' & 'unsigned long' are 8 bytes in 64bit configurations. The differences between long/ulong are especially irritating unless you find a way to mass correct them because they tend to be spread throughout the code.

There are more subtleties to the difference between the 32 bit and 64 bit ABIs & APIs than you might imagine, especially across different platforms.

The fact that any games ever since have been developed for intel Macs in 32-bit is basically incomprehensible to me. Especially since most of the Windows originals are available as 64-bit versions. Game developers are to blame entirely. All productivity software I have has made than transition so long ago, I forgot thinking about it.

Windows games didn't consistently make the switch to 64 bit until the PS4/Xbox One-era where the console version was already 64 bit. Any title that had to support Windows XP was limited to 32 bit because almost no-one used the 64 bit version of XP - OEMs would always install the 32 bit version for compatibility reasons. This didn't really get resolved until Windows Vista & Windows 7.

All it takes is a dependency on some old version of Havoc, PhysX, Unreal, whatever. Then you first need to move to a newer library, which in turn will introduce lots of breakage.

If you have the source code for the library then you can usually cope, with the above caveats that you'll have work to do. If you don't have the source code then it becomes much harder and may be impossible. Upgrading to a newer engine version of UE3 or Unity for example will typically be *much* harder than upgrading a physics or video library simply because more can change.
[doublepost=1560900546][/doublepost]
OpenGL was up-to-date on Mac until a several years ago, but it was and is severely lacking and in dire need of a replacement.

I disagree with this and it also misses a broader and more important point.

Apple didn't really keep pace with the OpenGL specification in the lead up to the PPC->Intel transition and from that point on were routinely a year or so behind advertising support for new specifications - at least in part due to Apple's timing of major OS releases. Sometimes it would take another major release before those features actually worked well enough to ship games.

Worse, the OpenGL standard itself never caught up with Direct3D after D3D 8 which introduced the first shaders & became the industry standard for 3D graphics in games. The original ARB board collapsed in the early 00's and the Khronos board that formed to take over couldn't make the comprehensive overhaul needed to compete with Direct3D - hence why we ended up with Metal & Vulkan.
[doublepost=1560902869][/doublepost]
You see, this is something we disagree on. In my opinion, an experienced graphics programmer is proficient across all the modern APIs, because they are based on the sane principles. And Metal is so simple that an experienced OpenGL programmer will need just a couple of hours to pick up the API. Vulkan and DX12 are more difficult to get into since the API is less friendly but still, the core concepts are the same.

If wishing only made it so. As someone who works in games development I've rarely seen any of this to be true.

Metal, Vulkan & DX12 do all share some similar principles but their differences are non-trivial and take quite some time to really, truly understand. The implications aren't always clear from the documentation - you have to use the APIs in anger to be able to debug & profile them and see how the differences affect the underlying hardware.

Plus most games developers learn one API, which due to market dominance is almost always D3D, and then whine/whinge/moan like crazy about the differences if they are ever asked to even *consider* the design or capabilities of one of the others. Sometimes I wonder if this is actually one of the main reasons why original developers are loathe to support anything beyond the big-three platforms (Windows, Xbox, Playstation) which either use D3D or support something sufficiently low-level that you can implement a near identical approximation.

Sure, tessellation/geometry shaders use a different model. Still, don’t see much of an issue here for a well-designed engine.

The absence of geometry shaders is a pain in Metal, but not insurmountable provided the use cases are stupidly simple - which they are in UE4. The differences in tessellation however *are* insurmountable in some circumstances - no amount of engineering can overcome the fundamental limitations of Metal's approach vs. the industry standard D3D/VK/GL implementation. There is simply no way to seamlessly support Metal tessellation with DrawIndirect which isn't a problem with UE4 but will be for most other modern titles.

Shaders are a bigger issue but then again, current cross-compilers make it manageable.

The differences in shader language design and capability are by far the biggest problem. I've spent so much of my time at Feral & Epic working on HLSL->GLSL/MetalSL translation. The imperfections and performance penalties both subtle and gross have been an unending struggle and this is the cause of the vast majority of performance delta between Windows and macOS.

UE4's hlslcc library and the Khronos/LunarG/MoltenVK SPIRV-Cross library really show the problems pretty well and they can do an OK job - but neither are as good as writing all your shaders by hand for each target platform - and that's impossible to do for a real AAA-game that has to launch across multiple platforms. As a practical reality you've got to pick one shading language to work in and accept that translations to the others will be imperfect.

And as to accepted and well-documented standard... very few OpenGL programmers would have bothered to read the spec and even if they did, it won’t help much. The core problem with OpenGL is not it’s overly complicated spec or strange API model, but the fact that it doesn’t map well to the hardware anymore and haven’t done so in years (yes, it’s much better now with 4.6). So writing OpenGL based software in practice means testing across all platforms and drivers, finding confusing slowdowns, trying to figure out idiosyncratic driver behavior and coding around it. With OpenGL, it’s very easy to shoot your self in the foot even if what you are doing is based on the spec. With a modern API, the core promises are already part of the API itself.

Frankly, the only player who really still cares for OpenGL is NVIDIA since a) they have the money and massive driver teams to fine-tune their drivers for individual software and b) it allows them to push CUDA down people’s throats as the “more efficient” API.

We're broadly in agreement here. The problem with OpenGL was that it was a cruel and unforgiving mistress. It had rubbish debugging tools & validation support until 2011/2012, poor quality driver implementations, an API full of legacy decisions that made it hideously inefficient and a terrible implementation of shader support.

And it's really easy to port games developed for Vulkan to macOS with MoltenVK (https://moltengl.com/moltenvk/).

While I also think this is a vast overstatement, I've had chance to revise my opinion on MoltenVK. It will need a lot of work to be able to support a modern engine like UE4 (it lacks a lot of functionality I've implemented in UE4's MetalRHI backend) but as and when that work is done it should be pretty good. The shader translation component especially has come along very nicely over the last year or so. Provided the implementation is fleshed out and gets used in anger and optimised it should eventually be pretty close or perhaps even as good as a native Vulkan driver would be, with the notable exceptions of Geometry & Tessellation support which will remain problematic. This of course assumes that Apple keep updating Metal in-line with Vulkan.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.