New UGC Homestore Template!

Hello creators (and especially you, UGC creators)!

On the heels of our previous modernized templates, we’re releasing a brand new, never before seen template: the UGC Homestore! This template makes it easy to sell your UGC items directly in-experience!

The template is designed to work completely out of the box. Just publish the template as your own experience and off you go!

If you’ve previously published items to the Marketplace, your items automatically populate in the template’s shop. If your UGC items are published to a group, make sure the place is also published as that group. Any new items that you add to the marketplace are automatically populated in your published experience.

Note: If you’re developing in Studio but haven’t published the template, it defaults to displaying Roblox items. If the user or group that you published with doesn’t have any items, the experience shows no items.

Configuring the template

If you want to make the shop your own, we’ve made that easy too.

Make the shop your own

To change the look and feel of your 3D store, we included a set of modular building pieces that are easy to customize. Or, you can just start from scratch and build it the way you’d like.

Specifying a different creator’s items

To specify another creator’s name to load from, adjust the options in the ReplicatedStorage.Settings module. Set FETCH_CREATOR_NAME to false and change the DEFAULT_CREATOR_NAME to the desired creator. If you’d like to show everything in the marketplace, change DEFAULT_CREATOR_NAME to an empty string: ""

Note: If the UGC item’s sale location is not set to Marketplace and All Experiences, the UGC creator must add the experience as a Sale Location for their item and the experience owner must enable the specific asset for sale using the Creator Dashboard. Otherwise, the items are only viewable in the experience.

The experience creator will also need to enable Allow Third Party Sales in the game security settings.

Customizing mannequins

Mannequins are auto-generated from a list of assets and bundles, which you can customize using attributes.

Select a mannequin and scroll down to the Attributes section of the properties window. From there, you can customize accessories, bundles, the pose animation, and skin color of the generated mannequin.

Note: Accessory and bundle IDs must be in a comma-separated list, spacing is ignored so either 123,456,789 or 123, 456, 789 is valid.

Shopping in the experience

Inside the experience, players can click on an item’s icon to try it on. Items they’re currently trying on are displayed in the top-left corner, and they can click on them to take them off, add to the cart, or buy.

They can also inspect mannequins to see the individual items on it or try on all the items at once.

Items can be purchased individually or added to a cart to buy all together.


We hope you enjoy this new template! Please leave any comments, feedback, or pictures and videos of your creations in this thread. We can’t wait to see what you create.

146 Likes

This topic was automatically opened after 10 minutes.

Thank you so much! These are the updates that developers need, and I’m sure this will be useful for many developers, especially UGC creators! :happy1:

18 Likes

I like the theme of the buildings and the modularity. I’m also a fan of these videos showcasing new content and updates. :+1:

14 Likes

Love the new template and I am a big fan of these videos showcasing them!

11 Likes

Looks cute. Any kind of new template helps!

8 Likes

I’ve taken a quick look at this template and it’s very useful, but I have a couple concerns with it that I’ve been having with AvatarEditorService recently.

  1. AvatarEditorService’s rate limiting is very restrictive on larger games. If any game using this template started to gain traction, they would very easily hit the limit of 100 requests per second game wide. There have been requests to change this limit. It would be really nice for store projects (like this template, even) or other games utilizing AvatarEditorService to have a reasonable rate limit per user playing the game instead of game wide or even server side. The game wide rate limit is made worse by the fact any modified client is free to spam requests and use up an already strict budget.
  2. CatalogSearchParams lacks a CreatorType property. As it is now, including with this template, AvatarEditorService’s search is unusable for groups with a name which is also assigned to a user’s account. Searching always prioritizes finding users over finding groups. We need the ability to define if we want to search a group’s items or a user’s items. It has been stated that there is a fix coming, but it has yet to release as of now.

I really like this template and I’m sure it’s going to be useful for a lot of creators. But we really need to see the two issues above resolved for any projects similar to this template or using this template to have the ability to grow a userbase without going through the strange process of posting a feature request for your own specific game to have its limits raised that’s stated near the top of the AvatarEditorService documentation.

20 Likes

I remember seeing this when opening a baseplate template earlier. Nice to see a template like this though, especially for UGC creators.

7 Likes

This is very timely, because my United Nations community is working on a gift shop at our headquarters. Some of our international developers (myself included) are UGC creators.

6 Likes

WOW


Good stuff. I buy new cape.

9 Likes

Could the ceiling lights be connected to the ceiling? I get it doesnt have it for optimizations, but I dont see how a small part like that would really hurt. Plus its noticable in-game with the players camera.

4 Likes

Hey, thanks for bringing these issues up. I’ll see if I can get them escalated :smiley:

12 Likes

I’m literally in the middle of building a store. Awesome!

6 Likes

This is amazing, I have been wanting to make a homestore for a while.

Is there any way to have items from multiple groups linked? I make all the items, but upload to a number of groups and want to showcase them all.

If the experience is owned by me, the group items I have uploaded dont appear in the menu.

Thank so much

6 Likes

This section is very confusing to me. I thought you could already sell items from ‘the catalog’ if the items are designated for sale by the creator as: “Marketplace and All Experiences” … without having to itemize and add said items via the ‘creator dashboard’ for the ‘Experience’.

4 Likes

If you’d like to show items from a specific group you can modify the ReplicatedStorage.Settings module. Set FETCH_CREATOR_NAME to false and enter your group’s name as the default:
image

Unfortunately due to API limitations, this doesn’t support multiple creators at once. If you’d like to showcase items from a bunch of creators, you can use the mannequins, as those support entering any item ID.

Yes you’re right, this only applies if it’s not marked as Marketplace and All Experiences. I’ve added clarification in the post :slight_smile:

9 Likes

Tysm for the info, very much appriciated

6 Likes

I don’t know about now, but previously you guys had meshes that seemed to be on automatic fidelity causing them to be messed up. Is this fixed?

3 Likes

I found an (non urgent) inconsistency in the code from what the documentation says involving accessories. I looked over this module to learn more about handling accessories for my own work and the applyAssetAsync module (ReplicatedStore > Utility > applyItemsToDescriptionAsync > applyAssetAsync) has an issue in this section of the code:

local accessories = description:GetAccessories(true)
local assetType = Enum.AvatarAssetType[assetDetails.AssetType]
local accessoryType = AvatarEditorService:GetAccessoryType(assetType)
local order = ACCESSORY_ORDER[accessoryType] or 1

-- Hats are always allowed to be stacked, other items should be swapped out if replace = true
if replace and accessoryType ~= Enum.AccessoryType.Hat then
	removeSimilarAccessories(accessoryType, accessories)
end

local accessory = {
	AssetId = assetId,
	AccessoryType = accessoryType,
	Order = order,
}

If the module is unable to set find the order, it defaults to supplying an order of 1. I’m not sure if this is meant to be future proofed for future layered accessories, but when I used the same method just now for my own code I ran into an issue that was causing accessories (and sometimes body parts) to disappear with ApplyDescriptionReset. When I looked at the SetAccessories documentation, it states that any accessory tables that don’t have the Order key will be assumed to be rigid. Changing the code so that it falls to nil instead of 1 if it can’t find an order fixed my issue. However, I’m uncertain why it caused issues for me but not in the template. (Perhaps a difference between ApplyDescription and ApplyDescriptionReset?)

6 Likes

Would it be possible to release the shop gui as a free model? And also make it something more like what is used by the games partecipating in “The haunt” event whit every ugc items that is in the catalog?

3 Likes