Improving Holodeck Performance

Holodeck is fairly performant by default, but you can also sacrifice features to increase your frames per second.


By far, the biggest single thing you can do to improve performance is to disable the RGBCamera. Rendering the camera every frame causes a context switch deep in the rendering code of the engine, which has a significant performance penalty.

This chart shows how much performance you can expect to gain or loose adjusting the RGBCamera (left column is frame time in milleseconds)

Resolution UrbanCity MazeWorld AndroidPlayground
No Camera 8.55 ms 117 fps 4.69 ms 213 fps 2.47 ms 405 fps
64 17 ms 59 fps 11 ms 91 fps 4.87 ms 205 fps
128 20 ms 50 fps 11.6 ms 86 fps 5.59 ms 179 fps
256 22 ms 45 fps 14.71 ms 68 fps 9.02 ms 111 fps
512 35 ms 29 fps 30.8 ms 32 fps 24.81 ms 40 fps
1024 89 ms 11 fps 84.2 ms 12 fps 94.55 ms 11 fps
2048 410 ms 2 fps 383 ms 3 fps 366 ms 3 fps

Disabling the RGBCamera

 Remove the RGBCamera entry from the scenario configuration file you are using.

See Custom Scenario Configurations.

Lowering the RGBCamera resolution

Lowering the resolution of the RGBCamera can also help speed things up. Create a custom scenario and in the configuration block for the RGBCamera set the CaptureWidth and CaptureHeight.

See RGBCamera for more details.

Changing ticks per capture

The number of ticks per capture can be adjusted to give a lower average frame time.

See the set_ticks_per_capture() method.

Disable Viewport Rendering

Rendering the viewport window can be unnecessary during training. You can disable the viewport with the should_render_viewport() method.

At lower RGBCamera resolutions, you can expect a ~40% frame time reduction.

Change Render Quality

You can adjust Holodeck to render at a lower (or higher) quality to improve performance. See the set_render_quality() method

Below is a comparison of render qualities and the frame time in ms

Quality MazeWorld UrbanCity AndroidPlayground
0 10.34 12.33 6.63
1 10.53 15.06 6.84
2 14.81 19.19 8.66
3 15.58 21.78 9.2