Skip to content

Commit ee65192

Browse files
update Open Source Docs from Roblox internal teams
1 parent 2dd244a commit ee65192

File tree

9 files changed

+245
-135
lines changed

9 files changed

+245
-135
lines changed

content/common/navigation/engine/reference.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4252,6 +4252,11 @@ navigation:
42524252
type: engineapi
42534253
source: /reference/engine/enums/CreateAssetResult.yaml
42544254
ignoreTranslation: true
4255+
- title: CreateContentResult
4256+
path: /reference/engine/enums/CreateContentResult
4257+
type: engineapi
4258+
source: /reference/engine/enums/CreateContentResult.yaml
4259+
ignoreTranslation: true
42554260
- title: CreateOutfitFailure
42564261
path: /reference/engine/enums/CreateOutfitFailure
42574262
type: engineapi

content/en-us/production/analytics/index.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,15 @@ Avatar items you've sold automatically appear within the **Avatar Items** tab. H
118118
### Track user acquisition
119119

120120
The **Share Links** tab provides information about the **Link Visits** metric, which tracks how many users have arrived on your experience details page by clicking on the share link you created.
121+
122+
## Access analytics in-experience
123+
124+
The `Class.AnalyticsService.GetPlayerSegmentsAsync|AnalyticsService:GetPlayerSegmentsAsync()` method lets you query player analytics data directly in your experience at runtime. This enables you to tailor gameplay, onboarding, and monetization opportunities for each individual player based on characteristics, or **segments**, such as their spending behavior or overall length of time spent in your experience.
125+
126+
By retrieving a player's segment information in-experience, you can dynamically adjust UI, offers, and gameplay systems to better match the player's profile and stage of engagement. For example, you can:
127+
128+
- **Adjust store offerings by payer status** - Present store items that better match a player's purchase history and stage of progression. For example, players who haven't spent Robux yet might see lower-cost items that support early gameplay, while players who have previously purchased may see bundle options or broader upgrades.
129+
130+
- **Adapt onboarding and progression using account age** - Newer players, such as those within their first 30 days of playing your experience, can receive additional tutorials, tooltips, and simplified content. You can also direct more experienced players toward advanced systems such as events, PvP areas, or end-game content.
131+
132+
For implementation details, code samples, and the full list of available segment dimensions, see `Class.AnalyticsService:GetPlayerSegmentsAsync`.

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

Lines changed: 4 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -11,63 +11,17 @@ summary: |
1111
description: |
1212
An `AnimationConstraint` constrains its `Class.Attachment|Attachments` so that
1313
they're offset by `Class.AnimationConstraint.Transform|Transform`.
14+
15+
For backwards compatibility with `Class.Motor6D`, `AnimationConstraint`
16+
exposes read-only `C0`, `C1`, `Part0`, and `Part1` properties to help adopt
17+
the `Class.StarterPlayer.AvatarJointUpgrade|AvatarJointUpgrade`.
1418
code_samples: []
1519
inherits:
1620
- Constraint
1721
descendants: []
1822
tags: []
1923
deprecation_message: ''
2024
properties:
21-
- name: AnimationConstraint.C0
22-
summary: ''
23-
description: |
24-
The `Class.AnimationConstraint.Attachment0|Attachment0`
25-
`Class.Attachment.CFrame|CFrame` for backwards compatibility with
26-
`Class.Motor6D.C0`.
27-
code_samples: []
28-
type: CFrame
29-
tags:
30-
- Hidden
31-
- ReadOnly
32-
- NotReplicated
33-
- Deprecated
34-
deprecation_message: ''
35-
security:
36-
read: None
37-
write: None
38-
thread_safety: ReadSafe
39-
category: Data
40-
serialization:
41-
can_load: false
42-
can_save: false
43-
capabilities:
44-
- Physics
45-
- Animation
46-
- name: AnimationConstraint.C1
47-
summary: ''
48-
description: |
49-
The `Class.AnimationConstraint.Attachment1|Attachment1`
50-
`Class.Attachment.CFrame|CFrame` for backwards compatibility with
51-
`Class.Motor6D.C1`.
52-
code_samples: []
53-
type: CFrame
54-
tags:
55-
- Hidden
56-
- ReadOnly
57-
- NotReplicated
58-
- Deprecated
59-
deprecation_message: ''
60-
security:
61-
read: None
62-
write: None
63-
thread_safety: ReadSafe
64-
category: Data
65-
serialization:
66-
can_load: false
67-
can_save: false
68-
capabilities:
69-
- Physics
70-
- Animation
7125
- name: AnimationConstraint.IsKinematic
7226
summary: |
7327
Toggles whether the constraint is kinematic or physically simulated.
@@ -135,56 +89,6 @@ properties:
13589
capabilities:
13690
- Physics
13791
- Animation
138-
- name: AnimationConstraint.Part0
139-
summary: ''
140-
description: |
141-
The `Class.AnimationConstraint.Attachment0|Attachment0`
142-
`Class.Instance.Parent|Parent` for backwards compatibility with
143-
`Class.Motor6D.Part0`.
144-
code_samples: []
145-
type: BasePart
146-
tags:
147-
- Hidden
148-
- ReadOnly
149-
- NotReplicated
150-
- Deprecated
151-
deprecation_message: ''
152-
security:
153-
read: None
154-
write: None
155-
thread_safety: ReadSafe
156-
category: Data
157-
serialization:
158-
can_load: false
159-
can_save: false
160-
capabilities:
161-
- Physics
162-
- Animation
163-
- name: AnimationConstraint.Part1
164-
summary: ''
165-
description: |
166-
The `Class.AnimationConstraint.Attachment1|Attachment1`
167-
`Class.Instance.Parent|Parent` for backwards compatibility with
168-
`Class.Motor6D.Part1`.
169-
code_samples: []
170-
type: BasePart
171-
tags:
172-
- Hidden
173-
- ReadOnly
174-
- NotReplicated
175-
- Deprecated
176-
deprecation_message: ''
177-
security:
178-
read: None
179-
write: None
180-
thread_safety: ReadSafe
181-
category: Data
182-
serialization:
183-
can_load: false
184-
can_save: false
185-
capabilities:
186-
- Physics
187-
- Animation
18892
- name: AnimationConstraint.Transform
18993
summary: |
19094
Describes the current animation offset of the constraint joint.

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

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,48 @@ methods:
227227
thread_safety: Unsafe
228228
capabilities:
229229
- AssetCreateUpdate
230+
- name: AssetService:CreateDataModelContentAsync
231+
summary: |
232+
Creates ephemeral, `Class.DataModel`-scoped content from the provided
233+
content input.
234+
description: |
235+
Creates ephemeral, `Class.DataModel`-scoped content from the provided
236+
content input.
237+
238+
If the server storage budget is exhausted during this call, the creation
239+
will fail and the method will return
240+
`Enum.CreateContentResult.StorageLimitExceeded` alongside an empty
241+
`Datatype.Content` object.
242+
code_samples: []
243+
parameters:
244+
- name: content
245+
type: Content
246+
default:
247+
summary: |
248+
Reference to the input content. Currently, this only supports
249+
`Datatype.Content` wrapping a `Class.EditableMesh` or
250+
`Class.EditableImage`.
251+
- name: options
252+
type: Dictionary?
253+
default:
254+
summary: |
255+
Optional dictionary containing configuration controls for the created
256+
`Class.DataModel` content. Currently no controls are surfaced and this
257+
parameter exists for future functionality.
258+
returns:
259+
- type: Tuple
260+
summary: |
261+
A tuple containing an `Enum.CreateContentResult` indicating the
262+
success or failure of the request, and the resulting
263+
`Class.DataModel`-scoped `ContentSourceType.Opaque`
264+
`Datatype.Content`.
265+
tags:
266+
- Yields
267+
deprecation_message: ''
268+
security: None
269+
thread_safety: Unsafe
270+
capabilities:
271+
- DynamicGeneration
230272
- name: AssetService:CreateEditableImage
231273
summary: |
232274
Creates a new `Class.EditableImage`.
@@ -679,7 +721,12 @@ methods:
679721
680722
- `Name` — Item name
681723
682-
- `Type` — Item type such as `"Asset"` .
724+
- `Type` — Item type such as `"Asset"`
725+
726+
- `AssetType` — String representing the `Enum.AvatarAssetType`
727+
728+
- `SupportsHeadShapes` — Whether the asset supports head shape
729+
swapping. Only present if `AssetType` is `"DynamicHead"`.
683730
tags:
684731
- Yields
685732
deprecation_message: ''

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

Lines changed: 67 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,9 @@ description: |
5858
"Id": 0,
5959
"Name": "string",
6060
"Type": "Asset",
61-
"AssetType": 29
61+
"AssetType": "string",
62+
"SupportsHeadShapes": false,
63+
"Owned": false
6264
}
6365
],
6466
"IsRecolorable": false,
@@ -85,7 +87,9 @@ description: |
8587
"CreatorType": "User",
8688
"CreatorTargetId": 0,
8789
"CreatorName": "string",
88-
"CreatorHasVerifiedBadge": false
90+
"CreatorHasVerifiedBadge": false,
91+
92+
"SupportsHeadShapes": false
8993
}
9094
```
9195
@@ -115,6 +119,11 @@ description: |
115119
<td>string</td>
116120
<td>The asset type. Corresponds to <code>Enum.AvatarAssetType</code> values (e.g., <code>"Hat"</code>, <code>"Shirt"</code>). Only present if <code>ItemType</code> is <code>"Asset"</code>.</td>
117121
</tr>
122+
<tr>
123+
<td><code>SupportsHeadShapes</code></td>
124+
<td>boolean</td>
125+
<td>Whether the asset supports head shape swapping. Only present if <code>AssetType</code> is <code>"DynamicHead"</code>.</td>
126+
</tr>
118127
<tr>
119128
<td><code>BundleType</code></td>
120129
<td>string</td>
@@ -178,11 +187,15 @@ description: |
178187
</tr>
179188
<tr>
180189
<td colspan="2"></td>
181-
<td><code>AssetType</code>: The asset type as an integer. Corresponds to <code>Enum.AvatarAssetType</code>.</td>
190+
<td><code>AssetType</code>: The asset type as a string. Corresponds to <code>Enum.AvatarAssetType</code> values (e.g., <code>"Hat"</code>, <code>"DynamicHead"</code>).</td>
182191
</tr>
183192
<tr>
184193
<td colspan="2"></td>
185-
<td><code>Owned</code>: Whether the bundled item is owned by the current user. Only present in <code>Class.AvatarEditorService:GetItemDetailsAsync()</code>.</td>
194+
<td><code>SupportsHeadShapes</code>: Whether the asset supports head shape swapping. Only present if <code>AssetType</code> is <code>"DynamicHead"</code>.</td>
195+
</tr>
196+
<tr>
197+
<td colspan="2"></td>
198+
<td><code>Owned</code>: Whether the bundled item is owned by the current user.</td>
186199
</tr>
187200
<tr>
188201
<td><code>IsRecolorable</code></td>
@@ -440,17 +453,26 @@ methods:
440453
capabilities:
441454
- AvatarAppearance
442455
- name: AvatarEditorService:ConformToAvatarRulesAsync
443-
summary: ''
444-
description: ''
456+
summary: |
457+
Returns a copy of the given `Class.HumanoidDescription` that conforms to
458+
the platform Avatar rules.
459+
description: |
460+
This method also remaps classic face and classic head assets to their
461+
corresponding Dynamic Head asset IDs, with the appropriate
462+
`Class.BodyPartDescription.HeadShape|HeadShape` pre-applied. This
463+
remapping happens automatically and requires no code changes.
445464
code_samples: []
446465
parameters:
447466
- name: humanoidDescription
448467
type: HumanoidDescription
449468
default:
450-
summary: ''
469+
summary: |
470+
The `Class.HumanoidDescription` to conform.
451471
returns:
452472
- type: HumanoidDescription
453-
summary: ''
473+
summary: |
474+
A new `Class.HumanoidDescription` that conforms to the platform Avatar
475+
rules.
454476
tags:
455477
- Yields
456478
deprecation_message: ''
@@ -683,6 +705,37 @@ methods:
683705
capabilities:
684706
- Players
685707
- AssetRead
708+
- name: AvatarEditorService:GetHeadShapesAsync
709+
summary: |
710+
Returns an array of head shape names that the `Class.Players.LocalPlayer`
711+
owns.
712+
description: |
713+
Each head shape corresponds to a classic head owned by the user and can be
714+
applied to any Dynamic Head that supports shape swapping (see
715+
`Class.BodyPartDescription.HeadShape`).
716+
717+
This method requires the user to have accepted the
718+
`Class.AvatarEditorService:PromptAllowInventoryReadAccess()` prompt.
719+
code_samples:
720+
- getting-owned-head-shapes
721+
parameters: []
722+
returns:
723+
- type: Array
724+
summary: |
725+
An array of strings, each identifying a head shape owned by
726+
`Class.Players.LocalPlayer`. Possible values include:
727+
`"RobloxClassic"`, `"Blockhead"`, `"Cheeks"`, `"Chiseled"`,
728+
`"CoolThing"`, `"EraserHead"`, `"FatHead"`, `"FlatTop"`,
729+
`"GoldenKorbloxGeneral"`, `"GoldenMrRobot"`, `"KnightOfChivalry"`,
730+
`"KnightOfCourage"`, `"ManHead"`, `"MercilessNinja"`, `"Narrow"`,
731+
`"Paragon"`, `"Peabrain"`, `"Perfection"`, `"Roll"`, `"Roundy"`,
732+
`"RoxBox"`, `"TheEngineer"`, `"Trim"`, `"WomanHead"`.
733+
tags:
734+
- Yields
735+
deprecation_message: ''
736+
security: None
737+
thread_safety: Unsafe
738+
capabilities: []
686739
- name: AvatarEditorService:GetInventory
687740
summary: |
688741
Returns an `Class.InventoryPages` object with information about owned
@@ -885,10 +938,11 @@ methods:
885938
"AssetType": {
886939
"Id": 31,
887940
"Name": "RightLeg"
888-
}
941+
},
889942
"CurrentVersionId": 16447385805,
890943
"Id": 11584239464,
891-
"Name": "Anime Female - Right Leg"
944+
"Name": "Anime Female - Right Leg",
945+
"SupportsHeadShapes": false
892946
}
893947
],
894948
"BodyColors": {
@@ -1172,7 +1226,9 @@ methods:
11721226
"Owned": true,
11731227
"Id": 0,
11741228
"Name": "string",
1175-
"Type": "string"
1229+
"Type": "string",
1230+
"AssetType": "string",
1231+
"SupportsHeadShapes": false
11761232
}
11771233
],
11781234
"Creator": {

0 commit comments

Comments
 (0)