docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class NetcodeServerRateManager

    Server world's main update rate manager. Determines whether simulation system group should run or not, depending on tick rate and accumulator logic.

    Inheritance
    object
    NetcodeServerRateManager
    Implements
    IRateManager
    Inherited Members
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    Namespace: Unity.NetCode
    Assembly: Unity.NetCode.dll
    Syntax
    public class NetcodeServerRateManager : IRateManager

    Properties

    Timestep

    Internal

    Declaration
    public float Timestep { get; set; }
    Property Value
    Type Description
    float

    Methods

    ShouldGroupUpdate(ComponentSystemGroup)

    Internal (do not use) method called on system group edges, to determine if should enter or exit

    Declaration
    public bool ShouldGroupUpdate(ComponentSystemGroup group)
    Parameters
    Type Name Description
    ComponentSystemGroup group

    group

    Returns
    Type Description
    bool

    If the group should update

    WillUpdate()

    Utility method to help determine if the server Unity.Entities.SimulationSystemGroup will update this frame or not. This should only be valid when TargetFrameRateMode is set to BusyWait This can be useful if your host's rate mode is set to BusyWait and you want to do client operations during frames where your server isn't ticking. Ex: for a tick rate of 60Hz and a frame rate of 120Hz, a client hosted server would execute 2 frames for every tick. In other words, your game would be less busy one frame out of two. This can be used to do extra operations. This method can be accessible through the server's rate manager.

    Declaration
    public bool WillUpdate()
    Returns
    Type Description
    bool

    Whether the server's simulation system group will update this frame or not

    Examples

    [WorldSystemFilter(WorldSystemFilterFlags.ServerSimulation)] [UpdateInGroup(typeof(InitializationSystemGroup))] public partial class DoExtraWorkSystem : SystemBase { protected override void OnUpdate() { var serverRateManager = ClientServerBootstrap.ServerWorld.GetExistingSystemManaged<SimulationSystemGroup>().RateManager as NetcodeServerRateManager; if (!serverRateManager.WillUpdate()) DoExtraWork(); // We know this frame will be less busy, we can do extra work } }

    Implements

    Unity.Entities.IRateManager
    In This Article
    Back to top
    Copyright © 2025 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)