LogNet: UNetDriver::TickDispatch: Very long time between ticks

@tmek,

What you’ve pointed out does not appear to be a bug.

The Render Thread and Game Thread work in parallel, but in lock step. That is, we process frame by frame. We do this to prevent cases where one thread is working faster than the other and wasting resources. If the game thread hasn’t processed a new frame’s data, the render thread can’t do anything because there won’t be updates. If the render thread hasn’t finished with the last frame, the game thread won’t continue because the data we just processed could be lost.

When work is distributed evenly, this isn’t much of a problem. The system can move along at a fast rate because things are being processed in parallel.

Things can become a little weird when using an HMD (Head Mounted Display).

There are specific characterstics needed for HMDs to prevent motion sickness. One of these things is fixed framerate. Most systems try to run at a locked 90 FPS (or 45 FPS with things like Oculus’ SpaceWarp). Because of this, the engine will try to lock it’s rendering to the rate the HMD can handle to avoid unnecessary work.

Unlike standard display devices which will typically be persistently enabled while in development, many HMDs have sensors that track when the device is put on and taken off.

If you haven’t explicitly told the engine not to rely on VR / HMDs, then once it detects that an HMD is in use it will try and lock rendering to the frame rate of the HMD. Because the Render Thread is waiting for the display, the game thread is also sitting idle (which could then cause the warnings).

In this case, removing the headset removes this bottle neck. Another approach would be to disable VR settings through the Engine:

Thanks,
Jon N.