Update: Difference between revisions

From Resonite Wiki
might as well create
 
info on world update loop
Line 1: Line 1:
<languages/>
{{Note|<translate>This article is about the general FrooxEngine-wide concept. For the ProtoFlux node, see [[ProtoFlux:Update]]</translate>|information}}
{{Note|<translate>This article is about the general FrooxEngine-wide concept. For the ProtoFlux node, see [[ProtoFlux:Update]]</translate>|information}}


<translate>In [[FrooxEngine]], an '''update''' refers to execution of the main engine loop. During an update, physics are calculated, synchronization packets are sent, permissions are re-evaluated, and many other events and checks are performed. Every user has their own local update time.</translate>
<translate>
In [[FrooxEngine]], an '''update''' refers to execution of the main engine loop. During an update, physics are calculated, synchronization packets are sent, permissions are re-evaluated, and many other events and checks are performed. An update comprises both engine events and the update loop in a [[world]]. Every user in a session has their own local update time, or the time that it takes to step through an update. This value can be received with the [[ProtoFlux:DeltaTime|DeltaTime]] ProtoFlux node.
</translate>
 
<translate>
As of the time of writing, the time to perform an engine update is limited by the framerate of the Unity renderer. This may change with the implementation of inter-process communication and eventual switch to a new rendering engine.
</translate>
 
== <translate>World update loop</translate> ==
 
<translate>
Every [[world]] that is open will refresh as part of the update loop. If the client is focused on a world or if the host is a headless without autosleep, it will run a ''full update cycle''. Otherwise, it will run a ''partial update cycle''.
</translate>
 
<translate>
The general world update loop is sequential and runs as follows:
</translate>


<translate>As of the time of writing, the time to perform an update is limited by the framerate of the Unity renderer. This may change with the implementation of inter-process communication and eventual switch to a new rendering engine.</translate>
# <translate>Update [[stream]] values</translate>
# <translate>Calculate physics</translate>
# <translate>Run world events</translate>
# <translate>Handle input</translate>
# <translate>Perform [[worker]] updates</translate>
# <translate>Run most [[ProtoFlux]]</translate>
# <translate>Run worker change events</translate>
# <translate>Run destructions</translate>
# <translate>Run a 2nd round of ProtoFlux change events</translate>
# <translate>Pose the user</translate>
# <translate>Update audio system</translate>
# <translate>Update particle system</translate>
# <translate>Run connectors (e.g. Unity)</translate>
# <translate>Validate permissions</translate>
# <translate>Run synchronous actions</translate>

Revision as of 20:22, 3 July 2025

This article is about the general FrooxEngine-wide concept. For the ProtoFlux node, see ProtoFlux:Update

In FrooxEngine, an update refers to execution of the main engine loop. During an update, physics are calculated, synchronization packets are sent, permissions are re-evaluated, and many other events and checks are performed. An update comprises both engine events and the update loop in a world. Every user in a session has their own local update time, or the time that it takes to step through an update. This value can be received with the DeltaTime ProtoFlux node.

As of the time of writing, the time to perform an engine update is limited by the framerate of the Unity renderer. This may change with the implementation of inter-process communication and eventual switch to a new rendering engine.

World update loop

Every world that is open will refresh as part of the update loop. If the client is focused on a world or if the host is a headless without autosleep, it will run a full update cycle. Otherwise, it will run a partial update cycle.

The general world update loop is sequential and runs as follows:

  1. Update stream values
  2. Calculate physics
  3. Run world events
  4. Handle input
  5. Perform worker updates
  6. Run most ProtoFlux
  7. Run worker change events
  8. Run destructions
  9. Run a 2nd round of ProtoFlux change events
  10. Pose the user
  11. Update audio system
  12. Update particle system
  13. Run connectors (e.g. Unity)
  14. Validate permissions
  15. Run synchronous actions