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

Enhanced Export Flexibility with Customizable Templates for Various Graphics APIs #10688

Open
therabug opened this issue Sep 8, 2024 · 2 comments

Comments

@therabug
Copy link

therabug commented Sep 8, 2024

Describe the project you are working on

I am working on a 2D RPG game using Godot. This game requires optimized performance and efficient file management for deployment across various platforms, including desktop and mobile devices.

Describe the problem or limitation you are having in your project

Currently, Godot's export options do not offer granular control over the inclusion of specific graphics APIs. This limitation results in larger file sizes and potentially less optimized performance, especially when targeting different platforms. For instance, mobile platforms might benefit from Vulkan, where as desktop platforms could be optimized with OpenGL. Without customizable export templates, managing these requirements becomes challenging.

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

The proposed feature is the addition of customizable export templates for different graphics APIs in Godot. This would allow developers to create and select export templates tailored to specific platforms and rendering requirements:

Compatibility (Desktop): A template that includes only OpenGL for desktop applications.
Mobile: A template optimized for Vulkan.
Forward+ Rendering (Desktop): Templates for Vulkan and DirectX, specifically for Windows builds.

Reducing File Size: Excluding unnecessary graphics APIs and features from the export will minimize file sizes.
Improving Performance: Tailoring the export templates to the specific needs of different platforms will enhance overall performance.
Enhancing Platform Compatibility: By optimizing the export process for various devices, the feature ensures better compatibility and performance.

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

User Interface: In the Godot editor, add options for configuring export templates based on the graphics API. This could be presented as a dropdown menu or configuration panel.

Example Configuration:

ExportSettings {
    Platform: "Desktop"
    RenderAPI: "OpenGL"  // Options: "OpenGL", "Vulkan", "DirectX"
}

Export Settings Panel: Add a section labeled “Graphics API” with checkboxes or dropdowns to select between OpenGL, Vulkan, and DirectX.

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

While some aspects of this feature could be partially managed with scripts or plugins, having native support for customizable export templates would streamline the process significantly. Scripts and plugins may not provide the same level of integration and ease of use, making native support more practical and efficient.

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

This feature should be core rather than an add-on because it directly impacts the fundamental export process. It is crucial for optimizing game performance and file sizes across different platforms. Integrating it into the core of Godot would ensure that all users have access to these capabilities without needing additional plugins or tools, making it a fundamental part of the game development workflow.

@therabug
Copy link
Author

therabug commented Sep 8, 2024

Alternative solution #10689

@Calinou
Copy link
Member

Calinou commented Sep 18, 2024

Feature build profiles can already perform this, but you'll need to uncheck the unused rendering drivers manually. Also, you can't exclude specific rendering methods right now due to missing buildsystem options (e.g. to compile only Forward+ or only Mobile).

Automatic detection could be achieved with relative ease, based on the project settings and the rendering drivers/methods that are allowed to be used by the current project. Which rendering drivers/methods are considered to be allowed is defined by the "fallback" project settings that are enabled (e.g. #8006).

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

3 participants