You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -20,64 +20,102 @@ With rewarded video ads, you can implement a reward mechanism inside your experi
20
20
</Alert>
21
21
22
22
<Alertseverity="warning">
23
-
The video ad must not impact the user's character inside the experience. For example, you can prevent the user's character from taking damage while the user is watching the ad, or only show the ad in safe zones like the experience lobby.
23
+
Video ads shouldn't negatively impact the user's character during gameplay. To make sure their character isn't harmed, you can pause damage while an ad plays or only show ads in safe zones like the experience lobby.
24
24
</Alert>
25
25
26
-
To implement a rewarded video ad, you must set up the video ad inside your experience, create a client-side script that checks if a video ad is available to be played to the user, and then create a server-side script that turns a developer product into a reward, shows the user the video ad, and grants the user their reward.
26
+
To implement a rewarded video ad, you must set up the video ad inside your experience and then create client-side and server-side scripts. The client-side script checks if a video ad is available to be played to the user, while the server-side script turns a developer product into a reward, shows the user the video ad, and grants the user their reward.
27
+
28
+
<Alertseverity="info">
29
+
Earnings from rewarded video ads come from impressions. Your total earnings are calculated by multiplying EPM (earnings per 1000 impressions) by the total number of impressions.
30
+
</Alert>
27
31
28
32
### Video ad setup
29
33
30
34
To set up a rewarded video ad inside your experience:
31
35
32
-
1.Open the experience in Studio and select the location where you want to trigger the video ad.
33
-
2.[Insert a click-to-play video ad unit in that location](../monetization/immersive-ads.md#billboards).
34
-
3. Go to the **Game Settings** menu and check the **Enable Rewarded Video Ads** checkbox.
35
-
4. Select the reward you want to grant the user. If the reward doesn't already exist, [create a new developer product in the Creator Hub](../monetization/developer-products.md#create-a-developer-product).
36
-
5. Insert a button that the user must press before the video ad starts playing.
36
+
1.In Studio, go to **Game Settings** > **Monetization**.
37
+
2.Check the **Enable Rewarded Video Ads** checkbox.
3. Select the reward you want to grant the user. If the reward doesn't already exist, [create a new developer product in the Creator Hub](../monetization/developer-products.md#create-a-developer-product). This developer product must have been created for the specific universe the place is in.
40
+
4. Insert a button that the user must press before the video ad starts playing.
37
41
38
42
### Client-side implementation
39
43
40
44
To implement the rewarded video ad on the client-side:
41
45
42
-
1. Add a new `Class.LocalScript` to the button you just implemented.
46
+
1. Add a new `Class.LocalScript` to the button you just inserted into your experience.
43
47
2. Use the `Class.AdService.GetAdAvailabilityNowAsync|GetAdAvailabilityNowAsync` method to make sure the button is only visible to the user if an ad is available.
44
48
45
49
```lua title="Code example for rewarded video ad (Client)"
@@ -240,6 +265,8 @@ Any violation of the eligilibity requirements can result in account suspension,
240
265
241
266
To get the most out of your rewarded video ad, make sure to:
242
267
268
+
- Call `Class.AdService.GetAdAvailabilityNowAsync|GetAdAvailabilityNowAsync` as close as possible to the moment you plan to show the ad. For example, if you have a "Watch video ad to get a reward" button in a shop menu, you should only call `GetAdAvailabilityNowAsync` when the user opens the shop menu. This approach improves performance by preventing ads from unnecessarily being held in memory, and benefits CPM (cost-per-thousand impressions) and earnings by optimizing the ad fill rate.
269
+
- Call `Class.AdService.GetAdAvailabilityNowAsync|GetAdAvailabilityNowAsync` when the user finishes watching the ad to determine if another ad is available for the user to watch.
243
270
- Scale rewards so that they remain valuable to your users as they advance through the experience.
244
271
- Adjust the frequency of rewards based on user engagement and feedback.
245
272
- Use analytics to identify the best placement for video ads to encourage user engagement without disrupting gameplay.
Copy file name to clipboardExpand all lines: content/en-us/production/publishing/vr-guidelines.md
-1Lines changed: 0 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -52,7 +52,6 @@ The following best practices may help you reach 72 frames per second with a high
52
52
- Mobile VR is sensitive to a high number of draw calls. Build your environments efficiently, adding high detail where it really matters and lower detail elsewhere while being conservative with the number of objects used in the scene.
53
53
- When creating custom 3D meshes, always strive to use as little geometry as possible for maximum runtime efficiency.
54
54
- Minimize the number of semi-transparent objects and textures with partial transparency such as `Class.Decal|Decals` or the `Enum.Material|Glass` material.
55
-
- Use **Voxel** or **ShadowMap** lighting `Class.Lighting.Technology|Technology`, as **Future** lighting can be costly to generate and may produce inconsistent results on VR when the automatic quality drops.
56
55
- Numerous and complex `Class.SurfaceGui|SurfaceGuis` can be costly, both on the rendering and CPU side.
57
56
- Avoid writing platform-dependent code such as actions that rely on keyboard presses. Instead, use objects like `Class.InputAction` which supports input bindings from multiple sources.
58
57
- Test and iterate often to make sure you're getting the anticipated performance and visual quality. If possible, invest in a Quest 2 headset.
Copy file name to clipboardExpand all lines: content/en-us/studio/avatar-settings.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -110,6 +110,10 @@ The **Body** tab contains settings for body proportions, parts, scale.
110
110
111
111
## Clothing
112
112
113
+
<Alertseverity = 'warning'>
114
+
At this time, there is a bug impacting clothing controls. For current status, see the [DevForum announcement](https://devforum.roblox.com/t/introducing-avatar-settings-more-control-for-developers-better-expression-for-players/).
115
+
</Alert>
116
+
113
117
The **Clothing** tab contains controls for layered and classic clothing.
<td>Updates the voxel lighting, which is used in `Enum.Technology|Voxel` and `Enum.Technology|ShadowMap` modes and at quality levels below 4 in `Enum.Technology|Future` mode.</td>
228
+
<td>Updates the voxel lighting, which is used at lower quality levels.</td>
229
229
<td>If updating chunk occupancy takes too long, consider using lower resolution geometry, reducing the number of parts, or anchoring parts. If the other sub-markers take too long, consider reducing the number of lights and using non-shadow casting geometry for objects that move and invalidate the occupancy.</td>
<td>Updates shadow maps. Not performed at quality levels below 4 or when `Class.Lighting.Technology` is set to `Enum.Technology|Voxel`.</td>
234
-
<td>If lighting is set to `Enum.Technology|Future`, lower it to `Enum.Technology|ShadowMap` or reduce the number of lights. You can also use `Class.Light.Shadows` and `Class.BasePart.CastShadows` to disable shadow casting on less important instances. See [Improving Performance](../../performance-optimization/improve.md#mitigation-4).</td>
233
+
<td>Updates shadow maps. Not performed at quality levels below 4.</td>
234
+
<td>Reduce the number of lights. You can also use `Class.Light.Shadows` and `Class.BasePart.CastShadows` to disable shadow casting on less important instances. See [Improving Performance](../../performance-optimization/improve.md#mitigation-4).</td>
0 commit comments