Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add minimum performance a12 capabilities option to iOS exports #8289

Closed
lostminds opened this issue Oct 29, 2023 · 6 comments
Closed

Add minimum performance a12 capabilities option to iOS exports #8289

lostminds opened this issue Oct 29, 2023 · 6 comments

Comments

@lostminds
Copy link

Describe the project you are working on

A game exporting to iOS using the Mobile renderer

Describe the problem or limitation you are having in your project

As described at length in godotengine/godot#74227 the mobile renderer is currently not supported on all iOS devices. As long as this is true, it's a bit risky to distribute a game using the 4.x mobile renderer on the iOS app store, since some people may be able to buy it but then not play it. Resulting in refunds and bad reviews.

Describe the feature / enhancement and how it helps to overcome the problem or limitation

The only way to guarantee that a device can run a game using the mobile renderer I've found is currently setting the UIRequiredDeviceCapabilities key iphone-ipad-minimum-performance-a12 key in the info.plist for the xcode project. This means the game will require an iPhone XS (2019) or later. This will properly restrict incompatible devices for running or purchasing the game as it's checked by the App Store, avoiding the situation above. This is a little overkill, since the mobile renderer will run on older a11 devices, but unfortunately there seems to be no way to set that a11 is required.

Another option is to set the minimum required iOS version to 16, which will include A11 devices, but unfortunately some devices support iOS16 but not Godots mobile renderer (some iPad pros and some others?), so it's not a guarantee it'll work for everyone with this requirement.

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

The export configuration for iOS exports already has a required capabilities section for two other required capabilities, wifi access and push notifications. I'd propose simply adding one more setting there, for example capabilities/a12_gpu_performance that when enabled adds the UIRequiredDeviceCapabilities key iphone-ipad-minimum-performance-a12 in the info.plist of the exported xcode project.

Screenshot 2023-10-29 at 12 21 42

And add documentation/tooltip explaining that this will restrict export to newer devices (iPhone XS or later), but ensure compatibility with vulkan renderer features.

If this enhancement will not be used often, can it be worked around with a few lines of script?

You can just export to an xcode project and then manually modify the info.plist file. This however requires you to know about this capability key, know how to modify it in XCode and remember to do it again on every export from Godot. Exposing and setting it in the Godot export settings would make this much easier.

Is there a reason why this should be core and not an add-on in the asset library?

Exporting is part of the core editor features

@bruvzg
Copy link
Member

bruvzg commented Oct 29, 2023

Another option is to set the minimum required iOS version to 16, which will include A11 devices, but unfortunately some devices support iOS16 but not Godots mobile renderer (some iPad pros and some others?), so it's not a guarantee it'll work for everyone with this requirement.

We have min. version exposed for macOS export, so probably it should be the same for iOS export.

This is a little overkill, since the mobile renderer will run on older a11 devices, but unfortunately there seems to be no way to set that a11 is required.

I guess we can add an option to set A12 performance requirement (and probably equivalent iPhone 15 Pro / A17 one as well for future use), but keep them turned off by default.

@lostminds
Copy link
Author

and probably equivalent iPhone 15 Pro / A17 one as well for future use

I guess you mean the iphone-performance-gaming-tier key then? Yeah, sure. Even if that's not currently needed for compatibility it (and the a12 one) could also be used just to ensure sufficient performance so you know your game will perform well even if the compatibility issues are fixed in the future.

@akien-mga
Copy link
Member

This is implemented by godotengine/godot#84162 which should be merged for 4.3.

@scripturial
Copy link

scripturial commented Nov 15, 2023

So does this effectively mean that Godot 4 no longer supports the 2019(?) iPad? I feel like that should be documented somewhere. People probably need to know that this tickbox needs to be ticked if iOS is one of your targets?

@Calinou
Copy link
Member

Calinou commented Nov 16, 2023

So does this effectively mean that Godot 4 no longer supports the 2019(?) iPad?

It works if you use the Compatibility rendering method. The Mobile rendering method is high-end-oriented and is quite buggy on Android due to the state of Vulkan drivers there, so most of the focus for mobile development is on Compatibility these days.

@akien-mga
Copy link
Member

Implemented by godotengine/godot#84162.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants