By supporting Direct3D 12, Godot gains support for multiple new platforms, such as:
- Windows Store (UWP).
- Windows on ARM.
- GDK.
- XBox —which can’t be supported officially by Godot, but for which Direct3D 12 support is essential—.
Depending on the complexity of the scene, effects used, etc., this first version of the renderer performs generally worse than the Vulkan one. In some tests, D3D12 has not been able to deliver more than 75% of the Vulkan frames per second. In some other, D3D12 has been able to outperform Vulkan by a small margin. Performance improvements will be ironed out over time.
Expect it to come in Godot 4.3
What’s with the xbox comment? Why can’t it be officially supported?
I’m not keen on the specifics but part of the reason W4 exists is because the Godot Foundation can’t just pass around console SDKs. Only publishers and larger companies can use them and they’re usually under NDA.
So your options are going to a publisher like W4 Games (which is an entity by Godot’s founders) to handle that for you, or you can try porting it yourself and going through all the legal shenanigans.
What about homebrew games? I thought xbox had something like that.
You can turn on “dev mode” in your xbox console to be able to mess around with it and run homebrew, but that still doesn’t mean you’re allowed to publish your game to Xbox I don’t think.
Xbox dev mode lets you run UWP apps but you don’t get the Xbox SDK or the lower-level APIs, nor can you publish it without getting access to the SDKs first.
You can’t get access to the SDK without a license. A license takes moments to get but makes it so you can’t just pass it around. Unreal is the same way but they have plugins to add the SDK support for unreal
I think it’s because you can’t build for Xbox without Microsoft signing the binary. This is one of the reasons the Godot team founded W4 Games.
They claim that they cannot support any consoles for legal reasons: https://godotengine.org/article/godot-consoles-all-you-need-know/
it is impossible for Godot to include first-party console support out of the box. Even if someone would contribute it, we simply could not host this code legally in our Git repository for anyone to use.
Maybe that’s true, I’m not a lawyer. But Godot’s founders own one of the companies that provide console support: https://lonewolftechnology.com/
It could be a conflict of interest or an honest way to provide console support in Godot while also being compensated for their work on Godot. After all, food on the table is not open source.
The full list of Godot companies providing console support is here: https://docs.godotengine.org/en/stable/tutorials/platform/consoles.html
Everything is locked down and filled with NDAs when it comes to console development. To access the xbox game development documentation - you need to sign an NDA (https://learn.microsoft.com/en-us/gaming/gdk/_content/gc/getstarted/gc-getstarted-toc). To access the SDK (https://www.microsoft.com/en-us/software-download/gdk) you need to be a “Registered Dev Center Partner” which requires a publisher, fee payment, and agreement (https://learn.microsoft.com/en-us/windows/apps/publish/partner-center/open-a-developer-account). BUT even more specifically section 3 of the public GDK license agreement (https://github.com/microsoft/GDK/blob/Main/LICENSE-EN-US.MD) gives an idea of what you are allowed to do with that SDK code once given access and you can only use the code for “internal” use and only make one copy for backup use. This isnt even getting into how using the GDK makes your app subject to the usage agreement (https://support.microsoft.com/en-us/windows/usage-rules-for-digital-goods-rules-83812b1f-1ecd-9a46-d3a7-ad1eadce49d1).
I wonder what 19 lines they removed. Could be breaking change!
Since when was directx open source?
I want to encourage people to value software freedom. I am unsure of the effect of supporting proprietary platforms has on that. This feels uncomfortable.
@tabular still, it’s just an api. Freedom is also ability to use windows if you want. Besides, what if someone wants to use ReactOS?
So dont use it?