godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.05k stars 65 forks source link

Import licensed content from Unity asset store and Unreal Engine marketplace #9644

Closed tiagomoraismorgado closed 2 weeks ago

tiagomoraismorgado commented 2 weeks ago

Describe the project you are working on

This feature request entails the ability to import and utilize content from the Unity Asset Store and the Unreal Engine Marketplace within the Godot game engine. Both Unity and Unreal Engine have extensive marketplaces where developers can purchase or download assets such as 3D models, textures, sound effects, scripts, and more, to use in their projects. However, these assets are typically licensed for use specifically within their respective engines.

Enabling the importation of assets from these marketplaces into Godot would require addressing several technical and legal considerations:

Compatibility: Godot would need to develop or integrate tools that can interpret and import assets created for Unity and Unreal Engine into its own format. This would involve understanding the structure and format of assets from these engines and converting them into a format that Godot can understand and utilize. Licensing: Unity Asset Store and Unreal Engine Marketplace assets are often subject to specific licensing agreements that dictate how they can be used. Some assets may have licenses that permit use in other engines, while others may not. Godot would need to ensure that importing and using these assets complies with the terms of their respective licenses. Technical Challenges: Assets in Unity and Unreal Engine are optimized for their respective engines, which may use different rendering pipelines, material systems, or scripting languages. Converting these assets to work seamlessly in Godot could present technical challenges, especially for assets that rely heavily on engine-specific features. User Experience: Implementing this feature would also involve designing a user-friendly interface within Godot for browsing, purchasing (if applicable), and importing assets from the Unity Asset Store and Unreal Engine Marketplace. Overall, while the idea of accessing a wider range of assets from other engines is appealing, implementing this feature would require careful consideration of technical, legal, and user experience aspects. Additionally, it's essential to respect the rights of asset creators and ensure that their work is used in accordance with their licensing terms.

Describe the problem or limitation you are having in your project

Expanding on enhancing the amount of available content from Godot, let's delve deeper into various aspects:

Community Engagement and Collaboration: Encouraging the community to contribute to the development of plugins, extensions, and assets can significantly enhance the available content. Platforms like GitHub can facilitate collaboration among developers, allowing them to create a wide range of resources, including scripts, shaders, 3D models, textures, and sound effects. Documentation and Tutorials: Improving the documentation and creating comprehensive tutorials can help users understand the capabilities of Godot better. Detailed guides on how to create different types of content, along with best practices and tips, can empower both beginners and experienced users to create high-quality assets and content. Asset Stores and Marketplaces: Establishing official or curated asset stores and marketplaces within the Godot ecosystem can provide users with easy access to a wide variety of content. These platforms can feature both free and paid assets, allowing developers to monetize their creations while providing users with high-quality resources for their projects. Regular Content Updates: Continuously adding new content, such as sample projects, demo scenes, and asset packs, can keep users engaged and inspire them to experiment with different techniques and features within Godot. These updates can also showcase the capabilities of the engine and demonstrate best practices for content creation. Community Challenges and Events: Organizing community challenges, game jams, and other events focused on creating content for Godot can foster creativity and collaboration among users. These events can serve as opportunities for developers to showcase their skills, learn from others, and contribute to the growing pool of available content. Integration with External Tools and Services: Integrating Godot with external tools and services for asset creation, such as Blender, GIMP, Inkscape, and Audacity, can streamline the content creation workflow. Providing seamless integration and interoperability with popular tools can empower users to leverage their existing skills and workflows while creating content for Godot. Feedback Mechanisms and User Surveys: Implementing feedback mechanisms and conducting user surveys can help identify areas for improvement and prioritize the development of new content based on user preferences and needs. Engaging with the community and actively listening to their feedback can ensure that the content created aligns with the interests and requirements of Godot users. By focusing on these strategies, the amount of available content for Godot can be significantly enhanced, enriching the overall ecosystem and empowering developers to create compelling experiences using the engine.

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

Expanding projects faster: This likely means that whatever aspect of Godot is being discussed helps users to develop their game projects more quickly. This could be through providing pre-built systems, templates, or tools that streamline the development process, allowing users to focus more on the creative aspects of their projects rather than the technical details.

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

Sure, let's break down the components of your plugin:

User ID Generation: When a user wants to access assets from the Unity Asset Store, they need a unique identifier to retrieve and download those assets. Your plugin would generate a unique user ID for each user who wants to access the assets. Data Scraping: To identify the assets available on the Unity Asset Store, your plugin would scrape data from the store's website. This involves fetching information about various assets such as their names, descriptions, tags, and download links. Fetching Content: Once your plugin identifies the assets, it needs to fetch their content. This includes downloading the asset files such as scripts, textures, models, audio files, etc., from the Unity Asset Store servers. Availability and Downloading: After fetching the content, your plugin makes it available for users to browse and download. It could provide a user interface within Unity where users can search for specific assets, view details about them, and initiate downloads. Automatic Conversion and Translation: One of the key features of your plugin is the ability to automatically convert assets and translate them between different game engines. This involves transforming Unity-specific assets into formats compatible with other engines like Unreal Engine, Godot, or custom engines. For example, converting Unity scripts to C++ or Blueprints for Unreal Engine. Asset Management: Your plugin would also need to handle asset management tasks such as organizing downloaded assets, providing options for users to categorize and tag assets, and managing updates for previously downloaded assets. Integration with Unity Editor: Since your plugin is for Unity, it should seamlessly integrate with the Unity Editor. This means providing a user-friendly interface within the Unity Editor for accessing the plugin's features, such as browsing, downloading, converting, and managing assets. Security and Permissions: Implementing security measures to ensure that only authorized users can access and download assets. This may involve user authentication mechanisms and permissions management. Documentation and Support: Providing comprehensive documentation for users on how to use the plugin's features effectively. Additionally, offering support channels such as forums, FAQs, or direct customer support to assist users with any issues they encounter. Updates and Maintenance: Regularly updating the plugin to ensure compatibility with new versions of Unity and any changes to the Unity Asset Store API. This includes fixing bugs, adding new features, and addressing user feedback. Overall, your plugin aims to streamline the process of accessing, downloading, and using assets from the Unity Asset Store while also facilitating interoperability between different game engines. It offers convenience to developers by automating tasks such as asset conversion and provides a centralized platform for managing and accessing a wide range of assets.

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

yes

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

ideally should be both

arkology commented 2 weeks ago

Bruh, GPT generated text. Try better next time

dsnopek commented 2 weeks ago

There's a number of addons to import Unity packages - here's two of them:

There's probably more.

I couldn't find any Unreal importers via a quick Googling, but some may exist.

fire commented 2 weeks ago

Unreal Engine can export gltf directly. https://dev.epicgames.com/documentation/en-us/unreal-engine/exporting-unreal-engine-content-to-gltf?application_version=5.1

However, Epic Games does not allow the use of first-party assets outside of Unreal Engine.

The Unity Asset Store is licensed for use by the developer for their own projects only.

Furthermore, creating a plugin to directly access the Unreal Engine and Unity Engine marketplace is technically complicated requiring an online API client and single sign-on integration.

I encourage you to review the terms of the Unity Asset Store and Unreal Engine Marketplace carefully. Please note that I am not a lawyer, and this advice should not be taken as legal counsel.

My recommendation is to focus on enhancing the available content within the Godot Engine ecosystem. This could involve encouraging community collaboration, improving documentation and tutorials, establishing asset stores and marketplaces, integrating with external tools and services.