Add live syncback functionality and optimize service encoding

- Introduced a new endpoint `/api/syncback` for one-click full sync from Roblox Studio to the filesystem, eliminating the need for an active WebSocket connection.
- Implemented `SyncbackRequest` and `ServiceChunk` structures to handle service-level properties and child instances during syncback.
- Enhanced `encodeService` to include ObjectValue carriers for accurate reference handling and prevent data loss.
- Updated the syncback process to utilize Luau-style relative paths for reference attributes, improving path management and consistency.
- Integrated session caching in the matching algorithm to optimize performance during syncback operations.

These changes significantly improve the live syncback experience, ensuring reliable data synchronization and enhanced performance during development.
This commit is contained in:
Joe 2026-02-18 22:34:52 -06:00
parent 7f4b5c4941
commit b47eef1173
165 changed files with 5205 additions and 206 deletions

View file

@ -50,6 +50,8 @@ In addition to being able to distribute more of each asset type, verifying your
For information on how to verify your account either through a government-issued ID or through a phone number, see [account verification](../production/publishing/account-verification.md).
Verification status for group-owned assets is based on the user that last updated the asset.
<Alert severity="warning">
**Phone number verification is not sufficient** to sell priced assets on the Creator Store. To sell priced assets, you need to verify with a [government ID](./publishing/account-verification.md#verify-through-government-id) and create a seller account. For more information, see [Sell on the Creator Store](./sell-on-creator-store.md).

View file

@ -78,27 +78,28 @@ Roblox pays out earnings on the 25th of the following month from when you insert
## Publisher eligibility
While anyone can insert ad units into their experiences, Roblox only serves ads into ad units if the experience or group owner and experience is eligible to serve ads. Eligibility does not guarantee Roblox will serve ads in your experience and nothing obligates Roblox to serve ads into your experience.
While anyone can insert ad units into their experiences, Roblox only serves ads into ad units if the experience is eligible to serve ads. Eligibility does not guarantee Roblox will serve ads in your experience, and nothing obligates Roblox to serve ads into your experience.
Experiences must meet the following criteria to be eligible to be an ad publisher:
For your experience to be eligible to serve ads, your account and experience must meet the following criteria:
- Your account must have **2-factor authentication (2FA)** enabled.
- For group-owned experiences, this requirement applies to the owner of the group.
- If a publisher disables 2FA, they will lose eligibility.
- Your experience must be **public**.
- You must be **13+ years of age**.
- For group-owned experiences, this requirement applies to the owner of the group.
- Your account must be [ID-verified](../publishing/account-verification.md).
- Your account must be [ID-verified](../publishing/account-verification.md) and have **2-factor authentication (2FA)** enabled.
- For group-owned experiences, this requirement applies to the owner of the group.
- This requirement is persistent. If a publisher disables identity verification, they lose eligibility.
- Your experience must be **Public**. If a publisher makes the experience Private, the experience loses eligibility.
- You must complete the **Maturity & Compliance Questionnaire** for your experience.
- This requirement is persistent. If you disable identity verification or 2FA, your experience loses eligibility.
- You must complete the **Maturity and Compliance Questionnaire** for your experience.
- The questionnaire must be reviewed and approved by Roblox before the experience is eligible to serve ads. If the review status is **Pending**, you can request a re-review from the experience's advertising eligibility page under **Monetization** ⟩ **Ads** ⟩ **Eligiblity**. You'll receive a response within 24 hours.
- Your experience must maintain **2,000 unique visitors per month**.
- This is calculated and updated monthly, based on visitor data.
- Bots can't be included in visitor counts.
- You must comply with the [Roblox Terms of Use](https://en.help.roblox.com/hc/en-us/articles/115004647846-Roblox-Terms-of-Use), the [Community Standards](https://en.help.roblox.com/hc/en-us/articles/203313410-Roblox-Community-Standards), and the [Advertising Standards](https://en.help.roblox.com/hc/en-us/articles/13722260778260-Advertising-Standards#publisher-integrity).
- This is calculated and updated monthly, based on visitor data. Bots are not included in visitor counts.
- You must comply with the [Roblox terms of use](https://en.help.roblox.com/hc/en-us/articles/115004647846-Roblox-Terms-of-Use), [community standards](https://en.help.roblox.com/hc/en-us/articles/203313410-Roblox-Community-Standards), and [publisher integrity requirements](https://en.help.roblox.com/hc/en-us/articles/13722260778260-Advertising-Standards#publisher-integrity).
<Alert severity="info">
Resubmitting your **Maturity and Compliance Questionnaire** will temporarily remove your ads eligibility while the questionnaire is under review. To avoid repeated interruptions, only resubmit the questionnaire when you publish an experience update that changes your previous responses.
</Alert>
<Alert severity="warning">
Publishers who don't comply with these requirements might lose their eligibility temporarily or permanently. In some cases, they might lose some or all ad payouts and might have their content or account suspended.
If you don't comply with these requirements, you might lose your publisher eligibility temporarily or permanently. In some cases, you might lose some or all ad payouts and might have your content or account suspended.
</Alert>
## User eligibility

View file

@ -0,0 +1,23 @@
---
title: Regional Content Availability
description: Explains why experiences or assets may not be available in every country.
---
## Our approach to global compliance
As a global platform, we are committed to respecting the local requirements of the countries in which we operate. This commitment is a core part of our long-term strategy to maintain a presence in nearly every country, allowing creators to reach the widest possible audience.
## Why is my content unavailable in certain regions?
Content availability can change based on regional requirements. At times, we may receive requests to restrict certain types of content in a specific country, as well as requests to restrict a particular experience or avatar item in a specific country.
## What does this mean for my content?
When content is restricted in a specific country, the following changes occur:
- **Experiences**: Impacted experiences will be neither discoverable nor playable by users in that country.
- **Avatar items**: Impacted avatar items will be undiscoverable and taken off-sale for users in that country.
Your content’s status in other countries remains unchanged, and your global engagement and analytics in other regions will continue as usual.
Our approach to content availability is not static; it is subject to the ongoing evolution of requirements worldwide. Content that was once restricted may become available, and new requirements may be introduced.

View file

@ -334,7 +334,7 @@ To prevent abuse of the rewarded ad system and to provide the best user experien
<tbody>
<tr>
<th>**Experiences**</th>
<td>Experiences must:<br/><br/><ul><li>Be public and unrestricted.</li><li>Offer no free-form user creation or AI interaction.</li><li>Have a complete [Maturity & Compliance questionnaire](../promotion/content-maturity.md).</li><li>Have an average of at least **2 thousand unique visitors per month**.</li><li>Comply with the Roblox [terms of use](https://en.help.roblox.com/hc/en-us/articles/115004647846-Roblox-Terms-of-Use), [community standards](https://en.help.roblox.com/hc/en-us/articles/203313410-Roblox-Community-Standards), and [publisher integrity requirements](https://en.help.roblox.com/hc/en-us/articles/13722260778260-Advertising-Standards#publisher-integrity).</li></ul></td>
<td>Experiences must:<br/><br/><ul><li>Be public and unrestricted.</li><li>Offer no free-form user creation.</li><li>Have a complete **Maturity and Compliance Questionnaire** that has been reviewed and approved by Roblox. If the review status is **Pending**, you can request a re-review from the experience's advertising eligibility page under **Monetization** ⟩ **Ads** ⟩ **Eligiblity**. You'll receive a response within 24 hours.</li><li>Have an average of at least **2,000 unique visitors per month**.</li><li>Comply with the [Roblox terms of use](https://en.help.roblox.com/hc/en-us/articles/115004647846-Roblox-Terms-of-Use), [community standards](https://en.help.roblox.com/hc/en-us/articles/203313410-Roblox-Community-Standards), and [publisher integrity requirements](https://en.help.roblox.com/hc/en-us/articles/13722260778260-Advertising-Standards#publisher-integrity).</li></ul></td>
</tr>
<tr>
<th>**Publishers**</th>
@ -347,7 +347,13 @@ To prevent abuse of the rewarded ad system and to provide the best user experien
</tbody>
</table>
Any violation of the eligilibity requirements can result in account suspension, removal of content, revocation of ad payouts, or loss of eligibility to earn from ads.
<Alert severity="info">
Resubmitting your **Maturity and Compliance Questionnaire** will temporarily remove your ads eligibility while the questionnaire is under review. To avoid repeated interruptions, only resubmit the questionnaire when you publish an experience update that changes your previous responses.
</Alert>
<Alert severity="warning">
Any violation of the eligilibity requirements can result in account suspension, removal of content, revocation of ad payouts, or loss of eligibility to earn from ads.
</Alert>
## Best practices

View file

@ -29,13 +29,19 @@ Ensure your experience feels natural on various input devices, including gamepad
<Tabs>
<TabItem label="Mouse/Keyboard">
<div style={{height: '473px'}}>
<img src="../../assets/publishing/cross-platform/Inventory-Selection-Keyboard.jpg" width="840" height="473" />
</div>
</TabItem>
<TabItem label="Touch">
<div style={{height: '473px'}}>
<img src="../../assets/publishing/cross-platform/Inventory-Selection-Touch.jpg" width="840" height="473" />
</div>
</TabItem>
<TabItem label="Gamepad">
<div style={{height: '473px'}}>
<img src="../../assets/publishing/cross-platform/Inventory-Selection-Gamepad.jpg" width="840" height="473" />
</div>
</TabItem>
</Tabs>
@ -48,10 +54,14 @@ The layout of your experience UI should adapt to different screen sizes and orie
<Tabs>
<TabItem label="Medium / Landscape">
<div style={{height: '473px'}}>
<img src="../../assets/publishing/cross-platform/Responsive-Layout-Landscape.jpg" width="766" height="473" />
</div>
</TabItem>
<TabItem label="Small / Portrait">
<div style={{height: '473px'}}>
<img src="../../assets/publishing/cross-platform/Responsive-Layout-Portrait.jpg" width="266" height="473" />
</div>
</TabItem>
</Tabs>
@ -64,13 +74,19 @@ This is about the **size** of your UI elements, not just their position. Your UI
<Tabs>
<TabItem label="Large">
<div style={{height: '473px'}}>
<img src="../../assets/publishing/cross-platform/Dynamic-Sizing-Large.jpg" width="840" height="473" />
</div>
</TabItem>
<TabItem label="Medium">
<img src="../../assets/publishing/cross-platform/Dynamic-Sizing-Medium.jpg" width="766" height="473" />
<div style={{height: '473px'}}>
<img src="../../assets/publishing/cross-platform/Dynamic-Sizing-Medium.jpg" width="766" height="473" />
</div>
</TabItem>
<TabItem label="Small">
<div style={{height: '473px'}}>
<img src="../../assets/publishing/cross-platform/Dynamic-Sizing-Small.jpg" width="638" height="473" />
</div>
</TabItem>
</Tabs>