4 ms·
> maybe we establish an abstracted platform that they target and then each respective platform can support that? There is active and intentional hostility by m
by zanny 8y ago
> maybe we establish an abstracted platform that they target and then each respective platform can support that?
There is active and intentional hostility by many platforms to avoid this happening. Making cross platform development harder makes sense if you want to hold developers hostage in your environment and make the effort to work anywhere else a substantial investment.
Apple, Microsoft, Sony, and Nintendo all do this. It was really a sea change for Nintendo to support Vulkan on the Switch. Sony said they would, but never did. Microsoft adamantly uses DX as a lock in tool for the Xbox. Apple made Metal to make cross compatibility between iOS and anything else a huge pain.
At least for games, right now, you cannot do anything but write custom handler code for the Xbox and PlayStation. SDL doesn't support them, their devkits are proprietary, and the Switch is only better because Icculus ported SDL to it. You want to use Vulkan because it has the most API surface, but it only works everywhere but Xbox because there is no Vulkan -> DX wrapper.
So if you want a write once run everywhere game the best combo is SDL + Vulkan working on Windows, Android, and Linux natively. On iOS and OSX with MoltenVK wrapping the Vulkan. On Switch by PMing Ryan Gordon for the secret Switch SDL. But never on Xbox or PS4 in any form, there is no way to be compatible with them.
Which is probably why DirectX is still so entrenched. UWP + DX11 means Windows (7+) and Xbox support, DX12 means Windows 10 and Xbox One support. DX11 is now also starting to mean Linux and maybe even OSX support. That covers more of the market than SDL and Vulkan does despite it all being proprietary and Microsoft only because... thats where about half the market is by itself.
That all being said most of this is moot. Almost no modern game is being made in isolation. Everything is using Unreal 4 or Unity (or hopefully even Godot). All of those are available to varying degrees of completeness everywhere. You don't write your shaders in HLSL, you write them in your engine wrapper shader language. Once your game is done you then chose to press the deploy button to whatever systems you want. But then it turns out these humongous code monsters called game engines end up having a lot of esoteric bugs and breakages across platforms that drive developers not to support anything but high volume targets - ie, the consoles and Windows, maybe Android and iOS.
- pjmlp 8y agoThing is, go to any GDC, IGDA or IGF event and you will rarely get developers talking about feeling hostage of the platforms. Most will happily discuss about issues with publishers, game design ideas, making a successful game and how to take advantage of the IP to branch into other areas like movies or toys, and taking advantage of the hardware to the max in some cool ways, demoscene style, how to get that exclusivity deal offer from publishers. Even Vulkan on the Switch feels like testing waters, as Sony did with GL ES 1.0 + Cg on the PS 2, as the main 3D API is NVN. It is quite easier to check this by going through the talks available publicly on the GDC Vault.