Skip to content

Commit f977c97

Browse files
update Open Source Docs from Roblox internal teams
1 parent 0c98319 commit f977c97

File tree

10 files changed

+149
-79
lines changed

10 files changed

+149
-79
lines changed

content/en-us/assets/projects/Receiving-Experience-Transfer.png

Lines changed: 0 additions & 3 deletions
This file was deleted.

content/en-us/assets/projects/Transferring-Experience.png

Lines changed: 0 additions & 3 deletions
This file was deleted.

content/en-us/marketplace/marketplace-policy.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ Do not miscategorize items when you upload them. Proper categorization includes
9292
- Hat designs (e.g. baseball caps, beanies, cowboy hats) must be in the Head category.
9393
- Designs that combine Head items with hair designs (e.g. beanie with hair sticking out, mohawk with headphones) can be in the Head or Hair category.
9494
- Designs that are components of facial anatomy (e.g. noses, mustache) or accessories that augment facial anatomy (e.g. eyeshadow, blush, wrinkles) must be in the Face category.
95+
- Roblox automatically detects bodysuits, clothing items that completely cover a body below the head, and automatically categorizes them after upload.
9596

9697
## Avatar body guidelines
9798

content/en-us/production/game-design/analytics-essentials.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ Engagement metrics reveal how often and for how long players are interacting wit
2727

2828
- **Average session length:** The average session length is how long a player plays your experience on average from the start of their session to the time they log out. This metric helps you design content to fit within that window of time to ensure your experience can be enjoyed by the majority of your players. The average session length also serves as a health metric. If the average session length fluctuates after a significant update or seasonal event, it can inform you how your latest content was received.
2929

30+
<Alert severity="info">
31+
For out-of-the-box functionality to create engagement rewards, see the [Engagement rewards](../../resources/feature-packages/engagement-rewards.md) feature package.
32+
</Alert>
33+
3034
## Retention metrics
3135

3236
<iframe width="640" height="360" src="https://www.youtube-nocookie.com/embed/LpAU6TheAZ4?si=_1r_ZtlJ3WsrZMUf" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

content/en-us/production/game-design/introduction-to-quest-design.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ description: Introduction to Quest Design, achievements, and dailies.
1212

1313
Quests are a game mechanic in which players complete objectives in order to earn rewards like items, currency, or badges. Quests provide players with fresh goals and incentives, which can motivate them to play longer and more often, increasing their [engagement](../../production/analytics/engagement.md). They can also reduce boredom and provide a sense of progression and accomplishment that lead to better [retention](../../production/analytics/retention.md).
1414

15+
<Alert severity="info">
16+
For out-of-the-box functionality to create quests, see the [Missions](../../resources/feature-packages/missions.md) feature package.
17+
</Alert>
18+
1519
## Quest structure
1620

1721
Structurally, quests consist of three components:

content/en-us/production/game-design/monetization-foundations.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,10 @@ For more information on how to design fair loot boxes from two experts in the fi
222222

223223
Bundles are a great way to package up items that go together, whether it's a group of items that new players would find appealing or items that share a common theme. Because a bundle has multiple items, ensure players can clearly see each one and let them know what each item does. As best practice, have a comparison to other bundles to gauge the value of grouped items.
224224

225+
<Alert severity="info">
226+
For out-of-the-box functionality to create bundles, see the [Bundles](../../resources/feature-packages/bundles.md) feature package.
227+
</Alert>
228+
225229
## Starter packs
226230

227231
<figure>

content/en-us/production/game-design/season-pass-design.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ Season passes are time-bound design strategies used in Roblox experiences to del
2121
<figcaption>Season pass in *Jailbreak*</figcaption>
2222
</figure>
2323

24+
<Alert severity="info">
25+
For out-of-the-box functionality to create season passes, see the [Season passes](../../resources/feature-packages/season-passes.md) feature package.
26+
</Alert>
27+
2428
<Alert severity="warning">
2529
While similar in name, season passes are not game passes. Game passes are one-time purchases that confer gameplay bonuses. To learn how to implement game passes into your experiences, see [Game Passes](../../production/monetization/game-passes.md).
2630
</Alert>

content/en-us/production/game-design/starter-pack-design.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ According to industry benchmarks, games that implement a starter pack may see an
1010
The tips below are based on industry best practices and the Developer Excellence team's experience. Feel free to follow our suggestions, or design the starter pack that best suits your own game.
1111

1212
<Alert severity="info">
13-
For out-of-the-box functionality to sell collections of items to players at a discount, see the [Bundles feature package](../../resources/feature-packages/bundles.md).
13+
For out-of-the-box functionality to sell collections of items to players at a discount, see the [Bundles](../../resources/feature-packages/bundles.md) feature package.
1414
</Alert>
1515

1616
## Availability

content/en-us/projects/experience-ownership-transfer.md

Lines changed: 96 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -3,59 +3,59 @@ title: Experience ownership transfer
33
description: Transfer ownership of an experience to other Roblox users or groups.
44
---
55

6-
With **experience ownership transfer**, you can transfer your experiences to groups you have publish access to. This unlocks all of the features available to groups, including permissions and revenue management, and allows you to efficiently manage your content as your team scales and your priorities shift.
6+
With **experience ownership transfer**, you can transfer your experiences to [groups](./groups.md) you have publish access to. This unlocks all of the features available to groups, including permissions and revenue management, and allows you to efficiently manage your content as your team scales and your priorities shift.
77

88
## Prerequisites
99

1010
Before making a transfer or accepting a transfer, you must first:
1111

1212
- Verify your email address.
13-
- Upload your private `ModuleScripts` to the group you're transferring the experience to. If the experience uses packages where the package owner is a user and not a group, you might have to recreate those packages or replace them with packages that are already owned by a group.
13+
- Upload your private `Class.ModuleScript|ModuleScripts` to the group you're transferring the experience to. If the experience uses packages where the package owner is a user and not a group, you might have to recreate those packages or replace them with packages that are already owned by a group.
1414
- Publish your animation assets to the group you're transferring the experience to.
1515

16-
- If you have a large number of animations to upload, you can use a community-supported third-party tool like Roblox Animation Transfer. See [Transfer animations](./transfer-animations.md) for more details.
16+
- If you have a large number of animations to upload, you can use a community-supported third-party tool like [Roblox Animation Transfer](https://github.com/evaera/roblox-animation-transfer). See [Transfer animations](./transfer-animations.md) for more details.
1717
- If you have a small number of animations to upload, you can manually re-upload them and then update your animation asset references to support old and new IDs based on the `CreatorID` and `CreatorType`. See the following code for an example:
1818

1919
```lua
2020
-- Maps animation IDs that belong to the original creator to animation IDs
2121
-- that belong to the new creator.
2222
local transferAnimationMap = {
23-
["6406676108"] = 14292200298,
24-
["6438293322"] = 14292082312,
25-
["6464978998"] = 14292224322,
26-
["6465240715"] = 14292226967,
27-
["6465244287"] = 14292229476,
28-
["6382318344"] = 14292213468,
29-
["6382564692"] = 14292207171,
30-
["6460651769"] = 14292098870,
31-
["6415507655"] = 14292218236,
32-
["6415509331"] = 14292221034
23+
["6406676108"] = 14292200298,
24+
["6438293322"] = 14292082312,
25+
["6464978998"] = 14292224322,
26+
["6465240715"] = 14292226967,
27+
["6465244287"] = 14292229476,
28+
["6382318344"] = 14292213468,
29+
["6382564692"] = 14292207171,
30+
["6460651769"] = 14292098870,
31+
["6415507655"] = 14292218236,
32+
["6415509331"] = 14292221034
3333
}
3434

3535
function mapTransferAnimationId(id)
3636

37-
-- If experience has been transferred, maps old => new animation IDs
38-
if game:GetService("RunService"):IsStudio() or
39-
(game.CreatorType == Enum.CreatorType.Group and
40-
game.CreatorId == 32626384) then
41-
local animationId = string.match(id, "%d+$")
42-
local mappedId = transferAnimationMap[animationId]
37+
-- If experience has been transferred, maps old animation IDs to new
38+
if game:GetService("RunService"):IsStudio() or
39+
(game.CreatorType == Enum.CreatorType.Group and
40+
game.CreatorId == 32626384) then
41+
local animationId = string.match(id, "%d+$")
42+
local mappedId = transferAnimationMap[animationId]
4343

44-
if mappedId then
45-
return "rbxassetid://" .. mappedId
46-
end
47-
end
44+
if mappedId then
45+
return "rbxassetid://" .. mappedId
46+
end
47+
end
4848

49-
return id
49+
return id
5050
end
5151

5252
-- Creates an animation instance associated with the
53-
-- specified rbxassetid://<animation_id> url
53+
-- specified rbxassetid://<animation_id>
5454
function createAnimation(id)
55-
local animation = Instance.new("Animation")
56-
animation.AnimationId = mapTransferAnimationId(id)
55+
local animation = Instance.new("Animation")
56+
animation.AnimationId = mapTransferAnimationId(id)
5757

58-
return animation
58+
return animation
5959
end
6060
```
6161

@@ -68,71 +68,101 @@ As a best practice, if you're using Open Cloud API keys for the experience, crea
6868
To transfer an experience to a group:
6969

7070
1. Go to [Creations](https://create.roblox.com/dashboard/creations) and choose the experience you want to transfer.
71-
2. Go to **Configure** > **Settings**.
71+
2. Go to **Configure** **Settings**.
7272
3. Click **Initiate ownership transfer**.
7373
4. In the **Transfer Details** dialog, carefully read and acknowledge the implications of the transfer. Then, click **Next**.
74-
75-
<img src="../assets/projects/Transferring-Experience.png" width="450" />
76-
7774
5. Select a group to transfer the experience to. You must be able to publish experiences to this group.
7875
6. Verify the transfer by entering the experience name.
7976
7. Click **Initiate transfer**. The **Content Settings** page updates to include the pending group's username.
8077

81-
<Alert severity="warning">
82-
Once the group accepts the transfer, Roblox makes your experience private and closes all servers associated with the experience.
83-
</Alert>
78+
<Alert severity="warning">
79+
Once the group accepts the transfer, Roblox makes your experience private and closes all servers associated with it. The transfer process typically completes in a few minutes but may take longer for complex experiences.
80+
</Alert>
8481

85-
<Alert severity="info">
86-
To cancel a pending transfer, click **Cancel transfer request** in the **Content Settings** page.
87-
</Alert>
82+
<Alert severity="info">
83+
To cancel a pending transfer, click **Cancel transfer request** in the **Content Settings** page.
84+
</Alert>
8885

8986
## Receive a transferred experience
9087

9188
To receive a transferred experience:
9289

9390
1. Go to the experience page of the experience you're receiving. You can navigate to this page by clicking the transfer request notification you received when the experience's current owner initiated the transfer, or by directly getting the overview page link from the current owner.
9491
2. In the **Transfer Details** dialog, carefully read and acknowledge the implications of the transfer. Then, click **Next**.
92+
3. Verify the transfer by entering the experience name.
93+
4. Click **Accept transfer**.
9594

96-
<img src="../assets/projects/Receiving-Experience-Transfer.png" width="450" />
95+
<Alert severity="warning">
96+
Once your group accepts the transfer, Roblox makes the experience private and closes all servers associated with it. The transfer process typically completes in a few minutes but may take longer for complex experiences.
97+
</Alert>
9798

98-
3. Verify the transfer by entering the experience name.
99-
4. Click **Accept transfer**. Roblox makes the experience private and the transfer process completes in a few minutes.
10099
5. After the transfer to your group is complete, set up any new permissions you need and make the experience public again.
101100

102-
<Alert severity="info">
103-
If you don't want to receive the transfer, click **Decline transfer** in the **Transfer Details** dialog.
104-
</Alert>
105-
106101
## Frequently asked questions
107102

108-
**What kind of information does the transferred experience retain?**
109-
103+
<BaseAccordion>
104+
<AccordionSummary>
105+
<Typography variant="subtitle2">What kind of information does the transferred experience retain?</Typography>
106+
</AccordionSummary>
107+
<AccordionDetails>
110108
The transferred experience retains its old experience ID, place ID, and URL.
111-
<br/>
112-
**Do transfer requests expire?**
113-
109+
</AccordionDetails>
110+
</BaseAccordion>
111+
112+
<BaseAccordion>
113+
<AccordionSummary>
114+
<Typography variant="subtitle2">Do transfer requests expire?</Typography>
115+
</AccordionSummary>
116+
<AccordionDetails>
114117
Yes, transfer requests expire after 7 days.
115-
<br/>
116-
**How often can I transfer the same experience?**
117-
118+
</AccordionDetails>
119+
</BaseAccordion>
120+
121+
<BaseAccordion>
122+
<AccordionSummary>
123+
<Typography variant="subtitle2">How often can the same experience be transferred?</Typography>
124+
</AccordionSummary>
125+
<AccordionDetails>
118126
After receiving a transferred experience, you must wait 30 days to transfer that experience again.
119-
<br/>
120-
**Can I make changes to an experience I'm transferring?**
121-
127+
</AccordionDetails>
128+
</BaseAccordion>
129+
130+
<BaseAccordion>
131+
<AccordionSummary>
132+
<Typography variant="subtitle2">Can changes be made to an experience that's transferring?</Typography>
133+
</AccordionSummary>
134+
<AccordionDetails>
122135
You can continue making changes to the experience until the new group owner accepts the transfer and the transfer process begins. Changes you make during the active transfer process specifically aren't carried over.
123-
<br/>
124-
**What happens to my credit card information when I transfer my experience?**
125-
126-
Roblox removes your credit card information when you transfer an experience.
127-
<br/>
128-
**What happens to my revenue from private server subscriptions when I transfer my experience?**
129-
136+
</AccordionDetails>
137+
</BaseAccordion>
138+
139+
<BaseAccordion>
140+
<AccordionSummary>
141+
<Typography variant="subtitle2">What happens to credit card information when an experience is transferred?</Typography>
142+
</AccordionSummary>
143+
<AccordionDetails>
144+
Roblox removes credit card information when you transfer an experience.
145+
</AccordionDetails>
146+
</BaseAccordion>
147+
148+
<BaseAccordion>
149+
<AccordionSummary>
150+
<Typography variant="subtitle2">What happens to revenue from private server subscriptions when an experience is transferred?</Typography>
151+
</AccordionSummary>
152+
<AccordionDetails>
130153
The group you transferred your experience to receives the revenue from any existing private server subscriptions. This revenue does not respect any group or experience revenue splitting.
131154

132155
New private server subscriptions respect revenue splitting.
133-
<br/>
134-
**Does transferring an experience impact discovery?**
135-
156+
</AccordionDetails>
157+
</BaseAccordion>
158+
159+
<BaseAccordion>
160+
<AccordionSummary>
161+
<Typography variant="subtitle2">Does transferring an experience impact discovery?</Typography>
162+
</AccordionSummary>
163+
<AccordionDetails>
136164
Transferring an experience doesn't impact search as long as the experience title remains the same, the new group owner is not a moderated account, and the experience is made public again after the transfer.
137165

138166
Note that transferring an experience can impact discovery for up to 24 hours after the new group owner makes the experience public again.
167+
</AccordionDetails>
168+
</BaseAccordion>

content/en-us/reference/engine/classes/SerializationService.yaml

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,23 @@ deprecation_message: ''
1414
properties: []
1515
methods:
1616
- name: SerializationService:DeserializeInstancesAsync
17-
summary: ''
18-
description: ''
19-
code_samples: []
17+
summary: |
18+
Deserializes a `Library.buffer` containing `.rbxm` content, returning a list of `Class.Instance|instances`.
19+
description: |
20+
Deserializes a `Library.buffer` containing `.rbxm` content, returning a list of `Class.Instance|instances`.
21+
22+
This API can only be called from Studio plugins or Open Cloud Luau Execution Sessions. If non-creatable
23+
instances or services are included in the content, an error is thrown.
24+
25+
No stability contract is offered for the `.rbxm` format and the composition of this data may change at
26+
any time. This API will faithfully parse `.rbxm` content that was serialized by the Roblox engine,
27+
including `.rbxm` files generated by Studio or via
28+
`Class.SerializationService:SerializeInstancesAsync()|SerializeInstancesAsync()`.
29+
30+
Although it is possible to use this API to deserialize `.rbxm` content generated by any other means,
31+
this is done at the user's own risk. The engine may fail to deserialize such content faithfully, or at all.
32+
code_samples:
33+
- SerializationService-Roundtrip-Sample
2034
parameters:
2135
- name: buffer
2236
type: buffer
@@ -33,9 +47,24 @@ methods:
3347
capabilities: []
3448
writeCapabilities: []
3549
- name: SerializationService:SerializeInstancesAsync
36-
summary: ''
37-
description: ''
38-
code_samples: []
50+
summary: |
51+
Serializes a list of `Class.Instance|instances` to the `.rbxm` format, returning a `Library.buffer` or
52+
`.rbxm` content.
53+
description: |
54+
Serializes a list of `Class.Instance|instances` to the `.rbxm` format, returning a `Library.buffer` or
55+
`.rbxm` content.
56+
57+
This API can only be called from Studio plugins or Open Cloud Luau Execution Sessions. If
58+
non-creatable instances or services are included in the list of instances, an error is thrown.
59+
60+
No stability contract is offered for the `.rbxm` format and the composition of this data may
61+
change at any time. This API will serialize content according to the serialization behavior of the
62+
current engine version.
63+
64+
Although it is possible for other tools to parse `.rbxm` content, this is done at the user's own risk.
65+
The engine may still generate `.rbxm` content that 3rd-party tools fail to parse faithfully.
66+
code_samples:
67+
- SerializationService-Roundtrip-Sample
3968
parameters:
4069
- name: inputInstances
4170
type: Instances

0 commit comments

Comments
 (0)