After all, Apple went out of their way to not support standardized cross-platform APIs like Vulkan.
After all, Apple went out of their way to not support standardized cross-platform APIs like Vulkan.
The reason I ask is because there are so many different graphics APIs, of which Vulkan is the one that has the lowest rates of direct targeting.
You’re looking at custom platform APIs everywhere but Linux. Windows and Xbox only officially supports DirectX (including console variants here), PlayStation have their own, Switch supports their own plus Vulkan (and most people don’t target Vulkan on there).
Even Metal has significantly more games targeting it due to iOS support. Before people say those are only mobile games, thats a severe underestimation of what games are on mobile.
So every cross platform game needs to support multiple APIs anyway, and even if you count every API , Vulkan is by far in last place.
Edit: I’ll also add that both macOS and Linux had lack of games when their only API was a cross platform one: OpenGL. yes, macs GL is outdated today but it wasn’t always , and just like Vulkan, very few games directly targeted GL anyway.
EDIT : Ok, I see, more details here : https://news.ycombinator.com/item?id=33742823
----
Also, not every game has to target every platform, especially when we're talking about radically different inputs / outputs !
I'm honestly surprised about Factorio going to the Switch (especially since they supposedly started working on it before the Steam Deck, which I could have seen as having been a «tech demo stepping stone»), considering how much Factorio relies on precise mouse clicking !
PlayStation supports GNM not Vulkan.
Afaik the switch is the only recent console to support Vulkan but it’s not preferred, instead using the NVN api. Not counting the SteamDeck since it’s a general purpose computer.
There aren't really any practical differences and if anything, Direct3D being official never stopped it from rotting away at a faster rate than OpenGL and Vulkan - older games relying on Direct3D, even D3D9 despite how widespread that one was, are way more to likely to be broken in modern Windows than games using OpenGL and gamers nowadays often end up using tools like DXVK (which implement Direct3D on top of Vulkan) to get their older games work properly even under Windows.
The main reason Direct3D is more widespread than OpenGL and Vulkan is that D3D was also available on Microsoft's consoles which were themselves very popular. It isn't a coincidence that games were as likely to use OpenGL as Direct3D (or even offering backends for both) at the past but somewhere around the mid-2000s when XBox and XBox360 consoles started taking off Direct3D also took off.
Unfortunately that meant DX9 had the most market share at the time and for many years after.
While I agree that consoles helped the adoption of DX10/11/12, I disagree that it was driven mainly by the popularity of the XBox.
The big reason IMHO, and it’s similar with Vulkan, is that GL was fractured with tons of vendor extensions, much higher variation of feature support etc… DX was a more stable and consistent target.
There’s also the renewed investment by Microsoft into DX at the time, with a lot of investment into abstracting the other parts of the OS. That was probably driven by the Xbox like you say, but I think it’s a subtle difference in that it became the better API surface to target vs GL+other audio and input libs, instead of the ubiquity of the consoles.
It isn't like applications have to support all of extensions or anything like that. If some functionality was provided by, e.g. D3D10 then the same functionality would also be provided by OpenGL + some extensions.
If anything extensions are a good thing because it is thanks to them that OpenGL wasn't stuck in OpenGL 1.1 that Microsoft provided with Windows and how a lot of new hardware functionality was exposed to applications before even D3D had access to it - without even being locked to a specific OS or OS version (like the Vista you mentioned). And unlike Direct3D you didn't had to do a D3D9->D3D10/11->D3D12 complete rewrite of your code, you just used the new functionality where that makes sense.
https://cdn.factorio.com/assets/img/blog/fff-370-quick-panel...
Supporting open APIs does matter, moreso if «everyone» can get onboard, allowing for momentum to grow in service of continued support and development.
The numbers have been run many times by game studios large and small: it only makes sense to support Windows/DirectX and the three major consoles. Maybe Metal if you're targeting iOS.
No open standards. Those only earn you Stallman good boy points and you can't pay your bills with those.
No one is using OpenGL or Vulkan to a significant extent any more.
Absolutely untrue. See also: Android.
Windows supports Vulkan just fine, but engine support is lacking. IMO Metal prevents it from being universal in engines such as Unity, so instead a lot of effort goes into DX11 as the lowest-common-denominator to emulate i.e. with shaders. As a result, DX12 AND Vulkan progress is held back IMO because shader performance is necessarily worse when you have multiple layers of inefficient transpiling instead of running SPIR-V everywhere.
To add to that, I don't think most mobile developers are going to Metal directly; a huge number of them make use of it through Unreal or Unity. With Unity, customizing the rendering backend is not really possible without an insane amount of internal knowledge about it (not to mention source access at the read-only level or above).
I think that Vulkan is not particularly behind as an API, it's closer to a usable "almost there" state in terms of developer access. If Unity threw their weight behind improving their shader compilation pipeline and building it around SPIR-V/Vulkan, I think it would rapidly become more universal.
Even then, none of these game engines are using direct authored shaders anymore, instead using shader graphs which are much easier to target any backend on.
In the case of Unity they also support WebGL which is much more limited than any of the other APIs and somehow WebGL isn’t holding those back.
Adding a Metal renderer isn't the big deal. As others have said, the deal is that they won't get enough revenue from Apple sales to justify the development and support of Apple hardware.
SGI and microsoft were in api-war between OpenGL and Direct3D (and the boids examples ha!). They started a collaboration to create 'Fahrenheit' (lowlevel) and Fahrenheit (XSG) Extensible Scene Graph. Microsoft was sandbagging, and simply working on Direct3D, bc of opportunity. Bc microsoft was still evil back then bc they had more power.
As far as I always understood, is that OpenGL and whatever was left of Fahrenheit and the coop became the Khronos group.
I have the beta disks still here somewhere
And, AFAIK, there's very little market even for games that don't require a high end GPU on Mac. My guess is the majority people who want to play games on a desktop/laptop just know to get a Windows PC.
There are lots of simple games in the App store, some ported from iOS, some indie games built on generic engines (Unity etc). The problem was Mac titles have to be continuously supported. Apple killed compatibility with older 32-bit games with Catalina which decimated my Steam library. I presume that's one of the reasons developers are not exactly flocking to mac en masse...
That’s not nothing, and arguably if you have a good game, you’ll be one of the shining few on the Max.
If you were a casual gamer, you'd be pretty satisfied on a Mac for that decade.
Things got significantly worse since the 32 bit support was dropped. Most companies aren't interested in going back to update a decades old game to support Mac gamers, so a ton of games that were available suddenly became unavailable. And with the M1, Bootcamp no longer works.
We'll have to see what the future brings. I never would have guessed things would have been as good as they were from 2009-2019, or that things would suddenly reverse as quickly as they did after 2019. So who knows what's around the next corner for Mac gaming.
For example, games like Factorio are incredibly niche and loved by people with builder/engineer mindsets (not necessarily working as engineers). Now you've got to ask yourself whether potential Factorio players are more or less likely to own a Mac, compared to the 3% (cited by another commenter) of all Steam users on Macs.
Also I wonder how this 3% figure was calculated. Is it based on monthly active users? I am a Mac user and I have Steam installed but I don't leave it running all the time because application itself is a dumpster-fire battery hog. I only start it up when I want to play a specific game, then I shut it down. Some games don't even require Steam to be running so I launch them directly without bothering to start Steam. Am I excluded from the monthly active users because I might go months without launching Steam, despite playing games regularly?
Develop your game for x86_32, suddenly Apple drops support and you have to rewrite your entire game again for x86_64.
Develop your game for OpenCL/GL, suddenly Apple drops support and you have to rewrite your entire game again for Metal.
Develop your game for x86_64, suddenly apple drops support and you have to rewrite your entire game again for ARM64.
That's without counting the fact that most games developed nowadays developed using Vulcan or DX12 which has to be rewritten to Metal.
People are installing Windows on their Macs to play games that used to run natively on MacOS. Imagine how bad the backlash if this happened on Windows.
Come to think of it, the fact that Fahrenheit -- next-generation "OpenGL" with a DX base and SGI-provided scene graph API -- failed probably set cross-platform graphics back years if not decades.
Doesn’t valve/the steam deck?
So sure, sure, Apple "went out of their way to not support standardized cross-platform APIs" that didn't exist even as an idea by the time Metal was released.