EditorExportPlatformIOS in Godot – Complete Guide

Welcome to this comprehensive tutorial on utilizing the `EditorExportPlatformIOS` class in Godot 4. As you embark on the journey of game development, understanding the nuances of exporting your creations to various platforms is critical. The iOS platform, with its vast user base, can be a lucrative avenue for your games. That’s why delving into Godot’s export capabilities for iOS devices is not just intriguing but essential for publishing your Godot games to the Apple App Store.

What Is EditorExportPlatformIOS?

The `EditorExportPlatformIOS` class is a vital part of Godot 4, a powerful and open-source game engine. This class is specifically designed for handling the export process of your games to iOS devices. It contains numerous properties that allow you to specify details about the iOS build of your game, ranging from icons and splash screens to signing identities and provisioning profiles. Understanding how to configure these settings is the key to a successful iOS game launch.

Why Should I Learn About iOS Exporting?

Developing a game is only a part of the game creation journey. To ensure your game reaches the hands of players, you must learn how to navigate the export and publication process. This is particularly true for iOS, where there are strict guidelines and criteria for submission. By mastering `EditorExportPlatformIOS`, you ensure your game conforms to Apple’s standards, potentially reaching millions of users who prefer gaming on the go.

How Does It Enhance Game Development?

Being equipped with `EditorExportPlatformIOS` knowledge streamlines the process of bringing your game from development to deployment on iOS devices. It’s not just about exporting a project; it’s about optimizing it for the specific ecosystem and its users. With the correct setup and understanding of Godot’s exporting tools, you can focus more on game development and less on the technicalities of platform-specific deployment. Let’s start uncovering all that this class offers to make your iOS game publishing as smooth and efficient as possible.

CTA Small Image

Setting Up Your iOS Export Preset

Before we dive into exporting, we need to configure an export preset specifically for iOS within the Gododt editor. This tells Godot how to package your game for iOS devices. You’ll access this through the “Export” menu in your project.

First, make sure to add an iOS export preset:

var export_preset = EditorExportPreset.new()

Next, you need to configure the preset with the necessary details like the unique identifier and the team ID:

export_preset.set('application/identifier', 'com.yourcompany.yourgame')
export_preset.set('application/name', 'Your Game')
export_preset.set('application/team_id', 'YOUR_TEAM_ID')

Adding Icons and Launch Images

Your game needs to make a great first impression, and part of that is having a stunning icon and launch images that adhere to Apple’s specifications. You can set up your icon and launch images using the following code snippets:

To set your game’s icon:

var icon_image = Image.load("res://icon.png")
export_preset.add_resource_with_path(icon_image, "icon.png")
export_preset.set('icons/iphone_2x', 'res://icon.png')

For setting up launch images:

export_preset.set('launch_images/iphone5', 'res://launch_image_iphone5.png')
export_preset.set('launch_images/iphone6', 'res://launch_image_iphone6.png')
export_preset.set('launch_images/iphone6plus_portrait', 'res://launch_image_iphone6plus_portrait.png')
export_preset.set('launch_images/iphone6plus_landscape', 'res://launch_image_iphone6plus_landscape.png')

Notice that each line refers to different resolutions. It’s crucial to have separate images for each resolution to ensure the best appearance across all devices.

Specifying Capabilities and Game Settings

iOS devices come with various hardware and software features that your game may need to access. It’s important to specify these in the export preset, for things like Game Center or in-app purchases.

To enable Game Center for your game, use:

export_preset.set('capabilities/game_center', true)

If you need in-app purchases:

export_preset.set('capabilities/in_app_purchase', true)

For custom game settings like orientation or status bar behavior, you can also configure these appropriately:

export_preset.set('orientation/portrait', false)
export_preset.set('orientation/landscape_left', true)
export_preset.set('orientation/landscape_right', true)
export_preset.set('status_bar/status_bar_hidden', true)

Building and Exporting Your Game

Once your export preset is fully configured, it’s time to build and export your game for testing or deployment to the App Store. With a couple lines of code, we can perform the necessary steps to create the .ipa file used by iOS devices:

To start the export process:

var export_task = EditorExport.export_task(export_preset, "res://export/", false)

And to check on the export task status:

func _process(delta):
    if export_task.step():
        print("Export in progress...")
        print("Export finished or failed")

It’s essential to handle the export process with care, ensuring your information is accurate and following Godot’s progress callbacks to respond to success or failure appropriately. Congratulations, you’ve now gone through the basics of setting up and beginning the iOS export process using Godot 4! Next, we’ll get into more advanced features and troubleshooting tips to ensure your game lands on the App Store without a hitch.We’ll delve further into some advanced configurations and common issues that might arise during the export process. Navigating these aspects with confidence is paramount to a smooth, successful export of your Godot project.

Setting Up Signatures and Provisioning

For iOS, signing your app is mandatory. The app needs to be properly signed with a certificate and a provisioning profile that you’ll obtain from Apple.

Configure your provisioning profile and certificate like so:

export_preset.set('signing/provisioning_profile', 'res://your_provisioning_profile.mobileprovision')
export_preset.set('signing/certificate', 'res://your_certificate.p12')
export_preset.set('signing/certificate_password', 'your_certificate_password')

Handling Bitcode

Apple’s App Store may require bitcode to be included in your app. Bitcode is an intermediate representation of your compiled program which Apple uses for certain optimizations. Enable or disable bitcode for your export with the following:

export_preset.set('binary/include_bitcode', true) // Set to false to disable

Customizing Export Scripts and Files

Sometimes you might want to exclude certain files or customize the scripts that are included in your export.

To exclude unwanted files:


If you want to encrypt your script files use:

export_preset.set('script_encryption/enable', true)
export_preset.set('script_encryption/encryption_key', 'your_encryption_key')

Exporting for Specific iOS Devices

You may want to restrict your app to certain devices based on performance or design reasons. Specify them in the export preset:

export_preset.set('devices/iphone', true)
export_preset.set('devices/ipad', false)
export_preset.set('devices/arm64', true)

Localization and Internationalization

If your game supports multiple languages, you need to define localization settings:

export_preset.set('localization/export_translations', true)
export_preset.set('localization/release_locales', ['en', 'es', 'fr'])

Optimizations and Debugging

When exporting your game, you can choose to include debug symbols, which can help with debugging the app, or you can optimize for size or speed:

export_preset.set('binary/export_with_debug', false)
export_preset.set('optimization/size_level', 2) // Ranges from 0 to 3
export_preset.set('optimization/speed_level', 2) // Ranges from 0 to 3

Handling Common Export Issues

Users often encounter issues during the export process, such as provisioning profile errors or certificate mismatches. It’s essential to double-check that your export settings accurately reflect the certificates and profiles generated through the Apple Developer portal.

If you get an error concerning missing signing certificates, verify the path to your certificate:

export_preset.set('signing/certificate', 'res://correct_path_to_your_certificate.p12')

For provisioning profile issues, make sure the profile matches the one selected in the Apple Developer portal and it’s added to the export preset correctly:

export_preset.set('signing/provisioning_profile', 'res://correct_path_to_your_provisioning_profile.mobileprovision')

Moreover, sometimes Godot may not respond, or the export process might fail silently. On such occasions, let’s ensure Godot’s console is open (it can be viewed in the editor’s ‘Output’ tab) to catch any helpful error messages that can guide you in troubleshooting.

By covering these advanced topics and sample code snippets, you’re further expanding your skillset in Godot exports for iOS devices. Keep experimenting with different settings, and make sure to test your exports thoroughly to ensure your game behaves exactly as desired on all targeted devices. Happy exporting!Certainly! Knowing how to tackle these advanced components is as crucial as the basics. Let’s press on with more intricate code examples and explanations to further bolster your proficiency in exporting your Godot games for iOS.

Sometimes, you might want to automate the process of exporting so that you can integrate it into a build pipeline or for convenience sake. The Godot editor provides ways to perform such tasks through scripting which can prove to be invaluable.

Automating Exports Using Scripting

Imagine you’re setting up a continuous integration system that needs to export your game after every significant code push. You can automate the Godot export process through the command line or with a script:

EditorExport.get_singleton().export_project(export_preset, "res://export/", false)

This line will export the project using the configured export preset and place the output in your desired path. Remember, the third parameter determines whether the export is debug (if set to true) or release (if false).

When exporting from the command line, you can ensure you are exporting the project correctly by specifying the export preset name and export path directly within the command:

godot --export "iOS" "../path_to_export/your_game.ipa" --quit

But scripts and commands aren’t only about exporting – they’re about setting up everything correctly before you take that step.

Applying Advanced Settings Before Export

Sometimes you need to modify advanced settings that affect performance and functionality right before you export.

For example, you might want to change physics settings for the iOS export to tailor performance:

export_preset.set('physics/2d/thread_model', 2)

Or you might want to add high-resolution renderers for better visual fidelity on devices that support it:

export_preset.set('rendering/quality/intended_usage/framebuffer_allocation.mobile', 3)

Even small tweaks like enabling or disabling Virtual Keyboard automatically can make a big difference in user experience:

export_preset.set('display/window/handheld/virtual_keyboard_enabled', true)

Localized Path For Resources

At times filtering assets based on locale is necessary to manage different localized versions of the game efficiently. Use the export_filters to include or exclude specific directories or files:

export_preset.add_pattern_to_filter("res://localized/en/*", false)
export_preset.add_pattern_to_filter("res://localized/es/*", true)

In this instance, files within the ‘res://localized/es/’ directory are excluded from the export, which could be tailored further per locale.

Configuring Plugin Scripts and GDNative Libraries

For games utilizing native code with GDNative or requiring specific plugin scripts, proper configuration is essential:

export_preset.set('plugins/plugin_name.enabled', true)
export_preset.set('plugins/plugin_name/path', 'res://addons/plugin_name')

Similarly, for GDNative libraries that have to be included in the export:

export_preset.set('gdnative/singletons', ["res://gdnative/library.gdnlib"])

Handling Custom Export Templates

Lastly, you might be using custom export templates rather than the standard ones provided by Godot. This might be because you have custom modules or engine enhancements that need to be included in your final export:

export_preset.set('custom_template/release', 'res://custom_templates/ios_release.zip')
export_preset.set('custom_template/debug', 'res://custom_templates/ios_debug.zip')

Incorporating these advanced snippets into your export setup process will provide you with the flexibility and power needed to get the most out of your iOS builds. The export tools in Godot are robust, allowing you to tailor the process meticulously to fit the unique needs of your game and audience.

Remember, each game is unique, and your export process might need to be equally so. Through scripting and command-line exports, you can automate and customize this process, saving time and reducing human error, which is especially useful for larger projects or teams. With this tutorial at hand, you now have a greater understanding and control over exporting projects in Godot for iOS – an essential arsenal in the journey of a skilled game developer.

Where to Go Next in Your Game Development Journey

Now that you’ve sharpened your skills with the `EditorExportPlatformIOS` class in Godot 4, it’s the perfect time to continue growing and applying your newfound knowledge in game development. We believe that hands-on practice and continuous learning are key steps to mastery.

We at Zenva are thrilled to support your journey with our Godot Game Development Mini-Degree, where you can dive into crafting cross-platform games. This mini-degree encompasses a wide range of topics that will solidify your command over the Godot 4 engine and expand your abilities to create immersive 2D and 3D gaming experiences. Embrace this opportunity to take your skills from beginner to professional, building a portfolio-worthy suite of games along the way.

Should you seek an even broader collection of content to propel your game development career, explore our extensive array of Godot courses. Each course is a stepping stone towards your goal, whether it’s refining your expertise in a particular area or exploring new facets of the game development arena. With Zenva, the path to becoming a well-rounded game developer is at your fingertips. Keep learning, keep creating, and let your passion for game development grow without bounds.


As we wrap up, remember that exporting your game to iOS is more than just a final step; it’s a gateway for your creative work to reach audiences around the world. By mastering the intricacies of `EditorExportPlatformIOS` in Godot 4, you’re ensuring that your game not only comes to life on Apple’s rich platform but also stands a chance to shine amidst a sea of apps. Every line of code, every export setting you’ve learned to manipulate, brings you closer to seeing your game in the hands of eager players.

This knowledge, combined with the expertise that our Godot Game Development Mini-Degree offers, is a potent mix that will no doubt elevate your status as a game developer. Keep building, keep refining, and above all, keep sharing your vision through the games you develop. We at Zenva are committed to being part of your lifelong learning journey, offering guidance, wisdom, and resources every step of the way. Happy developing, and see you in the App Store!

Python Blog Image

FINAL DAYS: Unlock coding courses in Unity, Godot, Unreal, Python and more.