[Update] January 8, 2024
[Update] August 24, 2023
[Update] August 3, 2023
Hi Creators,
Today, we are releasing a new API that enables you to allow users to save creations they make in your experiences to their Inventory on Roblox. It’s a first step towards empowering creative activities that happen within experiences and to bring their contents to life at the platform level.
Vision for In-Experience Creation
You fuel creativity across Roblox today–not just in Studio, but within your experiences where users can also partake in creative expression. Until now, such creative activity was siloed within individual experiences. We envision a world where every user can create, and their creations transcend experiences to become platform content.
Imagine that you can open “building” experiences – enabling users to create shoes, dresses, weapons, vehicles, and anything they can imagine. Users can then save their creations directly onto the platform, to dress their avatars, to use in gameplay in other experiences, or to sell on the marketplace. Users will enjoy richer and more diverse content on Roblox, while creators gain new opportunities to drive engagement and monetization through the produced content from their experiences.
New API: Enable saving from your experience to a user’s inventory
We are releasing a new API for creators to optionally allow their users to save packages from an experience to their personal Inventories. Imagine that as a creator, you give your users the ability to create custom creatures as pets in your game. With this new API, users can save these objects from your experience as packages! You have full control to specify which objects can be saved.
Users can display their amazing creations on their profiles or utilize them in Studio. These creations attribute your “building” experience when displayed on the platform, so that any admirer can use the attribution link to come to your experience and create their own.
You can use the new API AssetService:PromptCreateAssetAsync() to specify what objects in your experience you want to support this save capability. This API is invoked on the server through client remote events. When invoked, the API displays the Submit Package dialog to the user. It will output creations as a Package into the users’ Inventories.
Note: We encourage you to implement additional constraints on the content type you would like to enable from your experience, such as limiting object shapes or combinations. We will continue to work with the community on improvements/tools/workflows that can make oversight into content easier.
Want to see the API in action? Try it out in this demo experience: In-Experience Creation Demo Arena (read below for details).
For more information on how to develop using this API, refer to this tutorial doc.
Submit Package dialog
When the API is invoked, the Submit Package dialog is displayed in the experience. Roblox provides the dialog UI out-of-the-box, as the save workflow is a platform-level functionality. The Submit Package dialog prompts users of your experience to provide a name and description (required) for the Package they’re saving.
By clicking on Submit, your users allow your experience to save a package into their Inventory. As part of save, the package will be automatically submitted to moderation. The packages created from in-experience are subject to the same moderation rules as any other Packages or Models on the platform.
Once a package is saved, your users can see it in their Inventory:
The packages also show up in these places for the user:
-
Creator Dashboard > Creations > Development Items > Models & Packages:
-
A User’s Profile, under Creations > Models & Packages
Attribution: Crediting the original experience for enabling creation
Unlocking creativity makes our platform richer and creators that enable in-experience creation should get full credit for their work. All assets that were created from within an experience will be attributed to their source experience, wherever users see them on the platform.
When users click on the attribution link to the original experience, they will be redirected to the Experience Page. In the future, we will enable users to deep-link directly into a creation workflow in-experience. They can come to your experience and make their own creations!
Currently, attribution for in-experience packages are shown in:
- User’s Inventory, in the asset details page
- Creator Dashboard
- User’s Profile
- Toolbox in Studio, under the asset’s details page
Note: Attribution is currently tied to a specific version of the created package. If a user further edits a package in Studio to create a new version, attribution will not be displayed for the new version.
Try it out in this demo experience!
We have created an experience In-Experience Creation Demo Arena to showcase how you can use the new in-experience creation API. Try it out!
-
When you enter the experience, you’ll see a house and a car, with paint buckets in front of them.
-
Try customizing the house or the car with the color of your choice, by interacting with the paint buckets. For example, I’ve colored the car black:
-
Once the house or the car is your desired color, move to the green C sign (C for Create).
-
- Press the “E” key (or tap on mobile) to interact with the Create sign. When you do, the experience is calling the new
AssetService:PromptCreateAssetAsync()
API to invoke the in-experience Submit Package dialog.
- Press the “E” key (or tap on mobile) to interact with the Create sign. When you do, the experience is calling the new
-
In the dialog, put in a name and description for the package. Click Submit. You should see a confirmation on whether the save succeeded or failed.
-
Go to your Inventory and see the house or car that you just saved from this experience!
We have made the In-Experience Creation Demo Arena experience downloadable as a copy, so you can check out how it was built using the new API!
- On the Experience page, click on the menu icon (marked by the red circle in the image below)
- Click Edit in Studio.
- This opens up a copy of the experience in Studio
- Look through the content and scripts! Feel free to build on top of it and make it your own.
Release scope & Known issues
This release is only the first step towards the limitless possibilities of in-experience creation. It is currently scoped to these functionalities:
-
Only Packages can be saved from in-experience.
-
Packages with scripts or any private assets (including nested packages) cannot be saved from in-experience.
-
The API will block in-experience save when it detects scripts or private assets in the content that is leaving the experience. The save prompt will not load for the users.
-
As the creator, when you are running/playtesting your experience, you will see error messages logged to the Studio Output Window or the Developer Console if the API fails to save due to the presence of scripts or private assets.
-
Known issues
-
When testing the new API in Studio, use the Play Solo or Team Test modes. The save flow currently fails when using Local Server testing mode.
-
In the Submit Package dialog, currently there is no inline validation of the text being entered into the Name & Description fields.
The validation and moderation happens once you click Submit, which is why you may see a slight delay before seeing the save success/fail confirmation dialog.
What’s next
This is just the beginning, and some capabilities we are exploring next are:
-
Expanding the in-experience save functionality to Avatar items! Imagine people creating custom bodies in your experience and wearing them wherever they go on the platform.
-
Unlocking safe and secure inclusion of scripts in in-experience creations.
-
Allowing the ability to import creations back into an experience.
-
Enabling new monetization mechanics for in-experience creation.
-
Enabling easier moderation of content by the creator inside experiences.
We would love to hear your thoughts on these topics.
We will work with the community to expand in-experience creation to its full potential. Please comment below for your feedback or ideas!
Many thanks to @FlyingButter2008, @bluestann, @yipiokay, @vreddym, @GeneralRelish, @goofysufi, @almondpvdding, @leek_clee, @friendly_totoro, @poppyphizzy, @Bug_0xFF, @rbxeash, @Aleutian_Tern, @GreatPrinceZuko, @manyglacier, @TheGamer101, @FarazTheGreat, and others for their work on this initiative.