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
Copy file name to clipboardExpand all lines: content/en-us/performance-optimization/design.md
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,9 +27,11 @@ More generally, testing on a variety of devices can help you check that the expe
27
27
28
28
## Streaming and teleportation
29
29
30
-
-[Instance streaming](../workspace/streaming.md) lets Roblox dynamically load and unload 3D content and is a great option for most experiences, especially larger ones. Streaming improves join times, reduces memory footprint, and increases frame rates. For more information, see [Improving performance](improve.md#instance-streaming).
30
+
-[Instance streaming](../workspace/streaming.md) lets Roblox dynamically load and unload 3D content and is a great option for most places, especially larger ones. Streaming improves join times, reduces memory footprint, and increases frame rate. For more information, see [Improve performance](improve.md#instance-streaming).
31
31
32
-
- Break large places into more manageable ones and use [teleportation](../projects/teleport.md) to move players between them.
32
+
- Consider breaking large places into more manageable ones and using [teleportation](../projects/teleport.md) to move players between them. This approach can reduce **initial** join times, but imposes additional join times as players teleport from place to place. Benefits to memory usage vary depending on the size of the place and whether you've enabled streaming.
33
+
34
+
Even ignoring performance considerations, you might find that having multiple places simplifies the development process, especially if you regularly add new content to your experience or are part of a larger team.
Copy file name to clipboardExpand all lines: content/en-us/performance-optimization/improve.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -186,11 +186,11 @@ per frame on both the server and the client.
186
186
- For objects that don't require collisions, disable collisions and use box or
187
187
hull fidelity, since the collision geometry is still stored in memory.
188
188
- You can render collision geometry for debug purposes in Studio by toggling
189
-
on **Collision fidelity** from the [Visualization Options](../studio/ui-overview.md#visualization-options) widget in the upper‑right corner of the 3D viewport.
189
+
on **Collisionfidelity** from the [Visualization options](../studio/ui-overview.md#visualization-options) widget in the upper‑right corner of the 3D viewport.
190
190
191
191
Alternatively, you can apply the `CollisionFidelity = Precise` filter to the [Explorer](../studio/explorer.md#property-filters) which shows a count of all mesh parts with the precise fidelity and allows you to easily select them.
192
192
193
-
- For an in-depth walkthrough on how to choose a collision fidelity option that balances your precision and performance requirements, see [Set Physics and Rendering Parameters](../tutorials/curriculums/environmental-art/assemble-an-asset-library.md#collisionfidelity).
193
+
- For an in-depth walkthrough on how to choose a collision fidelity option that balances your precision and performance requirements, see [Set physics and rendering parameters](../tutorials/curriculums/environmental-art/assemble-an-asset-library.md#collisionfidelity).
194
194
195
195
### MicroProfiler scopes
196
196
@@ -338,7 +338,7 @@ same `MeshId` are handled in a single draw call when:
338
338
Objects like decals, textures, and particles don't batch well and introduce
339
339
additional draw calls. Pay extra attention to these object types in a scene. In particular, property changes to `Class.ParticleEmitter|ParticleEmitters` can have a dramatic impact on performance.
340
340
341
-
-**Missed Instancing Opportunities** - Often, a scene will include the same mesh
341
+
-**Missed instancing opportunities** - Often, a scene will include the same mesh
342
342
duplicated a number of times, but each copy of the mesh has different mesh or
343
343
texture asset IDs. This prevents instancing and can lead to unnecessary draw
344
344
calls.
@@ -362,7 +362,7 @@ same `MeshId` are handled in a single draw call when:
362
362
near each other forces the engine to render the overlapping pixels multiple
363
363
times, which can hurt performance. For more information on identifying and
@@ -512,7 +512,7 @@ You can employ the following tactics to reduce unnecessary replication:
512
512
513
513
## Asset memory usage
514
514
515
-
The highest impact mechanism available to creators to improve client memory usage is to enable [Instance Streaming](../workspace/streaming.md).
515
+
The highest impact mechanism available to creators to improve client memory usage is to enable [Instance streaming](../workspace/streaming.md).
516
516
517
517
### Instance streaming
518
518
@@ -525,13 +525,13 @@ If instance streaming is enabled, you can increase the aggressiveness of it. For
525
525
- Reducing use the persistent **StreamingIntegrity**.
526
526
- Reducing the **streaming radius**.
527
527
528
-
For more information on streaming options and their benefits, see [Streaming Properties](../workspace/streaming.md#streaming-properties).
528
+
For more information on streaming options and their benefits, see [Streaming properties](../workspace/streaming.md#streaming-properties).
529
529
530
530
### Other common problems
531
531
532
532
-**Asset duplication** - A common mistake is to upload the same asset multiple times resulting in different asset IDs. This can lead to the same content being loaded into memory multiple times.
533
533
-**Excessive asset volume** - Even when assets are not identical, there are cases when opportunities to reuse the same asset and save memory are missed.
534
-
-**Audio files** - Audio files can be a surprising contributor to memory usage, particularly if you load all of them into the client at once rather than only loading what you need for a portion of the experience. For strategies, see [Load Times](#load-times).
534
+
-**Audio files** - Audio files can be a surprising contributor to memory usage, particularly if you load all of them into the client at once rather than only loading what you need for a portion of the experience. For strategies, see [Load times](#load-times).
535
535
-**High resolution textures** - Graphics memory consumption for a texture is unrelated to the size of the texture on the disk, but rather the number of pixels in the texture.
536
536
- For example, a 1024x1024 pixel texture consumes four times the graphics memory of a 512x512 texture.
537
537
- Images uploaded to Roblox are transcoded to a fixed format, so there is no memory benefit to uploading images in a color model associated with fewer bytes per pixel. Similarly, compressing images prior to upload or removing the alpha channel from images that don't need it can decrease image size on disk, but either doesn't improve or only minimally improves memory usage. Though the engine automatically downscales texture resolution on some devices, the extent of the downscale depends on the device characteristics, and excessive texture resolution can still cause problems.
@@ -544,17 +544,17 @@ For more information on streaming options and their benefits, see [Streaming Pro
544
544
- Though there is no API to detect similarity of assets automatically, you can collect all the image asset IDs in your place (either manually or with a script), download them, and compare them using external comparison tools.
545
545
- For mesh parts, the best strategy is to take unique mesh IDs and organize them by size to manually identify duplicates.
546
546
- Instead of using separate textures for different colors, upload a single texture and use the `Class.SurfaceAppearance.Color` property to apply various tints to it.
547
-
-**Importing assets in map separately** - Instead of importing an entire map at once, import and reconstruct assets in the map individually and reconstruct them. The 3D importer doesn't do any de-duplication of meshes, so if you were to import a large map with a lot of separate floor tiles, each of those tiles would be imported as a separate asset (even if they are duplicates). This can lead to performance and memory issues down the line, as each mesh is treated as individually and takes up memory and draw calls.
547
+
-**Import assets in map separately** - Instead of importing an entire map at once, import and reconstruct assets in the map individually and reconstruct them. The 3D importer doesn't do any de-duplication of meshes, so if you were to import a large map with a lot of separate floor tiles, each of those tiles would be imported as a separate asset (even if they are duplicates). This can lead to performance and memory issues down the line, as each mesh is treated as individually and takes up memory and draw calls.
548
548
-**Limit the pixels of images** to no more than the necessary amount. Unless an image is occupying a large amount of physical space on the screen, it usually needs at most 512x512 pixels. Most minor images should be smaller than 256x256 pixels.
549
-
-**Use Trim Sheets** to ensure maximum texture reuse in 3D maps. For steps and examples on how to create trim sheets, see [Creating Trim Sheets](../resources/beyond-the-dark/building-architecture.md#creating-trim-sheets).
549
+
-**Use trim sheets** to ensure maximum texture reuse in 3D maps. For steps and examples on how to create trim sheets, see [Create trim sheets](../resources/beyond-the-dark/building-architecture.md#create-trim-sheets).
550
550
551
551
## Load times
552
552
553
553
Many experiences implement custom loading screens and use the `Class.ContentProvider:PreloadAsync()` method to request assets so that images, sounds, and meshes are downloaded in the background.
554
554
555
555
The advantage of this approach is that it lets you ensure important parts of your experience are fully loaded without pop-in. However, a common mistake is overutilizing this method to preload more assets than are actually required.
556
556
557
-
An example of a bad practice is loading the _entire_`Class.Workspace`. While this might prevent texture pop-in, it significantly increases load time.
557
+
An example of a bad practice is loading the entire`Class.Workspace`. While this might prevent texture pop-in, it significantly increases load time.
558
558
559
559
Instead, only use `Class.ContentProvider:PreloadAsync()` in necessary situations, which include:
Copy file name to clipboardExpand all lines: content/en-us/performance-optimization/index.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,13 +5,13 @@ description: Introduces the performance optimization process.
5
5
6
6
Performance optimization is the process of building and iterating on an experience to improve frame rate, memory usage, and load times. Players expect games to perform well, so taking the time to understand and improve your experience's performance can be critical to its success.
7
7
8
-
The first step in performance optimization is to [Design for Performance](design.md), which means following a set of best practices **as you build** a new experience. After you publish an experience, the optimization process follows a common cycle:
8
+
The first step in performance optimization is to [design for performance](design.md), which means following a set of best practices **as you build** a new experience. After you publish an experience, the optimization process follows a common cycle:
9
9
10
10
<GridContainernumColumns="2">
11
11
<figure>
12
-
1.[Identifying Performance Issues](identify.md) - Use Roblox's built-in tools to find performance problems and identify root causes.
13
-
1.[Improving Performance](improve.md) - After you find an issue, see if it's a common one and how you might mitigate it. You might also want to take proactive action.
14
-
1.[Monitoring Performance](monitor.md) - Use analytics tools to monitor the impact of your changes and watch for indicators of any performance issues.
12
+
1.[Identify performance Issues](identify.md) - Use Roblox's built-in tools to find performance problems and identify root causes.
13
+
1.[Improve performance](improve.md) - After you find an issue, see if it's a common one and how you might mitigate it. You might also want to take proactive action.
14
+
1.[Monitor performance](monitor.md) - Use analytics tools to monitor the impact of your changes and watch for indicators of any performance issues.
15
15
</figure>
16
16
<figure>
17
17
<imgalt="A diagram showing the flow from designing, identifying, improving, and monitoring performance."src="../assets/optimization/Perf-Flow.png"width="70%" />
Copy file name to clipboardExpand all lines: content/en-us/production/publishing/publish-experiences-and-places.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -71,6 +71,8 @@ After you have published a [start place](#start-place) to create the overall exp
71
71
1. In the window that appears, click the tile for the experience you'd like to add the place to.
72
72
1. In the next view, select **Add as a new place** and then click the **Create** button.
73
73
74
+
Whether you choose to have a single, large place or many smaller places is mostly personal preference. For more information, see [Design for performance](../../performance-optimization/design.md#streaming-and-teleportation).
75
+
74
76
### Change the start place
75
77
76
78
The [start place](#start-place) of an experience cannot be instantly swapped with another place, but you can change it through the following steps.
Copy file name to clipboardExpand all lines: content/en-us/reference/engine/classes/TestService.yaml
+6-3Lines changed: 6 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -301,7 +301,8 @@ properties:
301
301
tags:
302
302
- NotReplicated
303
303
- Deprecated
304
-
deprecation_message: ''
304
+
deprecation_message: |
305
+
This has been deprecated and directly renamed to `Class.TestService.ThrottlePhysicsToRealtime|ThrottlePhysicsToRealtime` to better reflect its practical use.
305
306
security:
306
307
read: None
307
308
write: None
@@ -416,8 +417,10 @@ properties:
416
417
capabilities: []
417
418
writeCapabilities: []
418
419
- name: TestService.ThrottlePhysicsToRealtime
419
-
summary: ''
420
-
description: ''
420
+
summary: |
421
+
Sets whether the test should be throttled to simulate time according to real world time or as fast as possible.
422
+
description: |
423
+
Sets whether the test should be throttled to simulate time according to real world time or as fast as possible.
0 commit comments