NetworkPrediction

Windows
MacOS
Linux

Filters

Classes

Name

Description

Public struct

AuthorityOnly

Will only play on the authority path and not replicate to anyone else.

Public struct

FConditionalAutoConsoleRegister

This is required because these cvars live in header files that will be included across different compilation units Just using standard FAutoConsoleVariableRef will cause multiple registrations of the same variable

Public struct

FCueDispatcherTraitsBase

Traits for TNetSimCueDispatcher .

Public class

FGlobalCueTypeTable

GlobalCueTypeTable: Cue types register with this to get a Type ID assigned.

Public struct

FLogCategoryLogNetInterpolation

Public struct

FLogCategoryLogNetworkSimDebug

Public struct

FNetSerializeParams

The parameters for NetSerialize that are passed around the system. Everything should use this, expecting to have to add more.

Public struct

FNetSimCueCallbacks

Callbacks

Public struct

FNetSimCueDispatcher

Non-templated, "networking model independent" base: this is what the pure simulation code gets to invoke cues.

Public struct

FNetSimCueSystemParamemters

System parameters for NetSimCue events

Public struct

FNetSimCueWrapperBase

Wrapper: wraps the actual user NetSimCue.

Public class

FNetSimModelDefBase

Base for Network Simulation Model Defs (defines types used by the model)

Public struct

FNetSimProcessedFrameDebugInfo

Public struct

FNetSimTickParameters

Ticking parameters use to drive the simulation

Public struct

FNetSimTimeStep

FNetSimTimeStep Time data structure that is passed into SimulationTick

Public struct

FNetworkSimTime

The main Simulation time type. All sims use this to talk about time.

Public struct

FNetworkSimulationModelDebuggerManager

Public struct

FNetworkSimulationModelInitParameters

Public struct

FNetworkSimulationSerialization

Public struct UStruct

FReplicationProxy

FReplicationProxy Replicated USTRUCT that point to the IReplicationProxy to do the replication.

Public struct

FSavedCue

SavedCue: a recorded Invocation of a NetSimCue

Public struct

FScopedBandwidthLimitBypass

Helper struct to bypass the bandwidth limit imposed by the engine's NetDriver (QueuedBits, NetSpeed, etc).

Public struct UStruct

FServerReplicationRPCParameter

FServerRPCProxyParameter Used for the client->Server RPC.

Public struct

FSimulationTickState

FSimulationTickState : Holds active state for simulation ticking.

Public struct

FStandardLoggingParameters

Public struct

FVisualLoggingHelpers

Public struct

FVisualLoggingParameters

Public struct

HasLog

Public struct

HasNetSerialize

Public class

INetworkedSimulationModel

Public class

INetworkPredictionModule

Public struct

INetworkSimulationModelDebugger

Debugger support classes

Public class

IReplicationProxy

Interface that the proxy talks to. This is what will implement the replication.

Public struct

NonReplicatedResimulated

Non replicated but if a resimulate happens, the cue is undone and replayed.

Public struct

ReplicatedNonPredicted

Only invoked on authority and will replicate to everyone else.

Public struct

ReplicatedXOrPredicted

Replicated to interpolating proxies, predicted by autonomous/simulated proxy Best for events you want everyone to see but don't need to get perfect in the predicting cases: doesn't need to rollback and cheap on cpu (no NetIdentical tests on predicted path)

Public struct

Strong

Invoked and replicated to all.

Public struct

TBufferGetterHelper

Helper struct for enum-based access. This has to be done in an outside struct because we cant specialize inside TNetworkSimBufferContainer on all compilers.

Public struct

TCueDispatcherTraits

Public class

TCueDispatchTable

Per-Receiver dispatch table. This is how we go from a serialized ID to a function call

Public struct

TFrameCmd

Wraps an input command (BaseType) in a NetworkSimulation time.

Public struct

THasNetIdenticalHelper

Helper to compile time check if NetIdentical exists (since argument is template type, must be wrapped in helper struct)

Public struct

THasNetSimCueTraits

Helper to see if T has a Traits type or not.

Public struct

TInternalBufferTypes

"Internal" Buffers: Helper to turn user supplied buffer types into the "real" buffer types: the InputCmd struct is wrapped in TFrameCmd Outside/User code will always use the user supplied buffer types in callbacks/APIs etc Internal code to the TNetworkedSimulationModel will use the internal buffer types

Public struct

TInterpolatorParameters

Public struct

TNetCueNetIdenticalHelper

Helper to call NetIdentical if type defines it.

Public struct

TNetCueNetSerializeHelper

Helper to call NetSerialize if type defines it.

Public struct

TNetSimCueDispatcher

Templated cue dispatcher that can be specialized per networking model definition. This is what the system actually uses internally, but is not exposed to user code.

Public struct

TNetSimCueHandlerAutoRegisterHelper

Register a handler's cue types via a static "RegisterNetSimCueTypes" on the handler itself

Public struct

TNetSimCueSetHandlerAutoRegisterHelper

Register a handler's cue types via an intermediate "set" class with a static "RegisterNetSimCueTypes" function

Public struct

TNetSimCueTraits

Actual trait struct that we use to look up traits.

Public struct

TNetSimCueTraitsExplicit

Explicit trait settings. This can be used to explicitly set your traits without using a preset.

Public struct

TNetSimCueTypeAutoRegisterHelper

Register a cue type with the global table.

Public struct

TNetSimCueTypeRequirements

Type requirements: helper to determine if NetSerialize/NetIdentical functions need to be defined for user types based on the above traits.

Public struct

TNetSimCueWrapper

Public struct

TNetSimInput

Input state: const references to the InputCmd/SyncState/AuxStates.

Public struct

TNetSimInterpolator

Public struct

TNetSimLazyWriter

Reference version of LazyWriter. This is what gets passed through chains of ::SimulationTick calls. This is to avoid copying the TFunction in TNetSimLazyWriterFunc around.

Public struct

TNetSimLazyWriterFunc

Helper struct to encapsulate optional, delayed writing of new element to buffer.

Public struct

TNetSimModelRepControllerTraits

Template struct to specialize per-model.

Public struct

TNetSimModelRepControllerTraitsBase

Traits for which RepController structs are used internally.

Public struct

TNetSimModelTraits

Public struct

TNetSimModelTraitsBase

Internal traits that are derived from the user settings (E.g, these can't go in FNetSimModelDefBase because they are dependent on the user types) These can be overridden as well via template specialization but we don't expect this to be common.

Public struct

TNetSimOutput

Output state: the output SyncState (always created) and TNetSimLazyWriter for the AuxState (created on demand since every tick does not generate a new aux frame)

Public struct

TNetSimStateAccessor

Accessors - helper structs that provide safe/cleaner access to the underlying NetSim states/events This is the equivlent of directly calling TNetworkedSimulationModel::GetPendingStateRead() / GetPendingStateWrite()

Public class

TNetworkedSimulationModel

The actual NetworkedSimulationModel templated class.

Public class

TNetworkedSimulationModelDriver

Copyright Epic Games, Inc. All Rights Reserved.

Public struct

TNetworkSimBufferBase

Common implementations shared by TNetworkSimContiguousBuffer/TNetworkSimSparseBuffer.

Public struct

TNetworkSimBufferContainer

The main container for all of our buffers.

Public struct

TNetworkSimBufferIterator

Generic iterator for iterating over each frame from tail to head.

Public struct

TNetworkSimBufferTypes

A collection of the system's buffer types. This allows us to collapse the 4 types into a single type to use a template argument elsewhere.

Public struct

TNetworkSimContiguousBuffer

Public struct

TNetworkSimSparseBuffer

Frame: arbitrary identifier for data.

Public struct

TNetworkSimTickSettings

Holds per-simulation settings about how ticking is supposed to happen.

Public struct

TNetworkSimulationModelDebugger

Public struct

TRealTimeAccumulator

Accumulator: Helper for accumulating real time into sim time based on TickSettings

Public struct

TRepController_Autonomous

Replicates TSyncState and does basic reconciliation.

Public struct

TRepController_Base

Base implementation with minimal functionality: will grant simulation time and call finalize frame.

Public struct

TRepController_Debug

Special replicator for debug buffer, this preserves the local buffer and receives into a replicator-owned buffer (we want these buffers to be distinct/not merged)

Public struct

TRepController_Empty

Empty RepController: zero functionality, just stubbed out functions and using definitions for convenience.

Public struct

TRepController_Sequence

Sequence replicator

Public struct

TRepController_Server

Server Replication Controller (FIXME: should this be called something like "client autonomous proxy -> Server RPC" ?

Public struct

TRepController_SimTime

Simulation Time replicator Just serializes simulation time.

Public struct

TRepController_Simulated

Simulated: "non locally controlled" simulations.

Public struct

TScopedSimulationTick

Scoped helper to be used right before entering a call to the sim's ::SimulationTick function.

Public struct

TSelectNetSimCueTraits

Selects explicit traits set by T.

Public struct

TSelectTypeHelper

Helper needed to specialize TNetworkSimBufferTypes::Get (must be done outside of templated struct)

Public struct

TSimulationTicker

"Ticker" that actually allows us to give the simulation time. This struct will generally not be passed around outside of the core TNetworkedSimulationModel/Replicators

Public struct

TToVoid

SFINAE helper.

Public class UClass Abstract

UNetworkPredictionComponent

UNetworkPredictionComponent This is the base component for running a TNetworkedSimulationModel through an actor component.

Public class UClass

UNetworkSimulationGlobalManager

Public struct

Weak

Non replicated cue that only plays during "latest" simulate.

Public struct

WeakClientsOnly

Same as above but will play on all clients, just not the authority.

Public struct

WeakOwningClientOnly

Same as above but will only play on the owning, autonomous proxy client (not on authority, not on simulated clients) Useful if the Cue is needed for only the controlling player, maybe like a HUD/UI notification pop

Constants

Typedefs

Name

Description

Default

Default Traits: if you do not explicitly set Traits on your class, this is what it defaults to.

FNetSimCueTypeId

Enums

Name

Description

Public enum

ENetSimCueInvoker

High level "who can invoke this". Does not take resimulate into account yet. All combinations of this enum are valid (though Authority | SimExtrapolate is a bit weird maybe)

Public enum

ENetSimCueReplicationTarget

Who a NetSimCue should replicate/be accepted by.

Public enum

ENetworkSimBufferTypeId

Copyright Epic Games, Inc. All Rights Reserved.

Public enum UEnum

EReplicationProxyTarget

Public enum UEnum

ESimulatedUpdateMode

Public enum

ESimulationTickContext

Copyright Epic Games, Inc. All Rights Reserved.

Public enum

EStandardLoggingContext

Public enum UEnum

EVisualLoggingContext

Public enum

EVisualLoggingLifetime

Functions

Name Description

Public function

 

ENUM_CLASS_FLAGS

Public function

 

ENUM_CLASS_FLAGS

(
    ENetSimCueInvoker
)

Public function

 

ENUM_CLASS_FLAGS

Public function

UObject *...

 

FindReplicatedObjectOnPIEServer

(
    const UObject * ClientObject
)

Public function

 

GENERATE_MEMBER_FUNCTION_CHECK

(
    NetSerialize,
    void ,
    FArchive &
)

Helper to compile time check if NetSerialize exists.

Public function

void

 

GenerateLocalInputCmdAtFrame

(
    typename TNetSimModelTraits < Model ...,
    TNetworkSimBufferContainer < Model >...,
    const FNetworkSimTime & DeltaSimTim...,
    int32 Frame,
    bool bProduceInputViaDriver
)

Helpers

Public function Static

constexpr ES ...

 

GetSimTickMask

(
    const ENetSimCueInvoker Invoker,
    const bool bAllowResimulate
)

Turns "Who can invoke this" + "Does this play during resimulate" into the final ESimulationTickContext mask we use at runtime. This is done so users can't make invalid configurations (like "Authority | Resimulate")

Public function

FString

 

LexToString

(
    ESimulatedUpdateMode A
)

Public function

FString

 

LexToString

(
    EVisualLoggingContext A
)

Public function

FString

 

LexToString

Public function

FString

 

LexToString

Public function

TEnableIf < T ...

 

NetSimBufferSelect::Get

(
    TContainer& Container
)

Public function

TEnableIf < T ...

 

NetSimBufferSelect::Get

(
    TContainer& Container
)

Public function

TEnableIf < T ...

 

NetSimBufferSelect::Get

(
    TContainer& Container
)

Public function

TEnableIf < T ...

 

NetSimBufferSelect::Get

(
    TContainer& Container
)

Public function

float

 

NetworkInterpolationDebugCVars::CatchUpFactor()

Public function Static

FConditional ...

 

NetworkInterpolationDebugCVars::CatchUpFactorAuto

(
    TEXT("ni.CatchUpFactor"),
    (float) 1. 50,
    TEXT("Factor we [use](API\Runtime\Engine\use) to catch up")
)

Public function

float

 

NetworkInterpolationDebugCVars::CatchUpGoal()

Public function Static

FConditional ...

 

NetworkInterpolationDebugCVars::CatchUpGoalAuto

(
    TEXT("ni.CatchUpGoal"),
    (float) 0. 010,
    TEXT("When we stop catching up (sec...
)

Public function

float

 

NetworkInterpolationDebugCVars::CatchUpThreshold()

Public function Static

FConditional ...

 

NetworkInterpolationDebugCVars::CatchUpThresholdAuto

(
    TEXT("ni.CatchUpThreshold"),
    (float) 0. 300,
    TEXT("When we start catching up (se...
)

Catchup means "interpolate faster than realtime".

Public function

int32

 

NetworkInterpolationDebugCVars::Disable()

Public function Static

FConditional ...

 

NetworkInterpolationDebugCVars::DisableAuto

(
    TEXT("ni.Disable"),
    (int32 ) 0,
    TEXT("Disables Network Interpolatio...
)

Public function

void

 

NetworkInterpolationDebugCVars::SetCatchUpFactor

(
    float V
)

Public function

void

 

NetworkInterpolationDebugCVars::SetCatchUpGoal

(
    float V
)

Public function

void

 

NetworkInterpolationDebugCVars::SetCatchUpThreshold

(
    float V
)

Public function

void

 

NetworkInterpolationDebugCVars::SetDisable

(
    int32 V
)

Public function

void

 

NetworkInterpolationDebugCVars::SetSnapGoal

(
    float V
)

Public function

void

 

NetworkInterpolationDebugCVars::SetSnapThreshold

(
    float V
)

Public function

void

 

NetworkInterpolationDebugCVars::SetVLog

(
    int32 V
)

Public function

void

 

NetworkInterpolationDebugCVars::SetWaitSlack

(
    float V
)

Public function

float

 

NetworkInterpolationDebugCVars::SnapGoal()

Public function Static

FConditional ...

 

NetworkInterpolationDebugCVars::SnapGoalAuto

(
    TEXT("ni.SnapGoal"),
    (float) 0. 010,
    TEXT("Where we snap to")
)

Public function

float

 

NetworkInterpolationDebugCVars::SnapThreshold()

Public function Static

FConditional ...

 

NetworkInterpolationDebugCVars::SnapThresholdAuto

(
    TEXT("ni.SnapThreshold"),
    (float) 0. 500,
    TEXT("If we are < this, we will sna...
)

Snap means "we are too far behind, just jump to a specific point".

Public function

int32

 

NetworkInterpolationDebugCVars::VLog()

Public function Static

FConditional ...

 

NetworkInterpolationDebugCVars::VLogAuto

(
    TEXT("ni.VLog"),
    (int32 ) 0,
    TEXT("Enables Network Interpolation...
)

Public function

float

 

NetworkInterpolationDebugCVars::WaitSlack()

Public function Static

FConditional ...

 

NetworkInterpolationDebugCVars::WaitSlackAuto

(
    TEXT("ni.WaitSlack"),
    (float) 0. 05,
    TEXT("How much slack to wait for wh...
)

Public function

int32

 

NetworkSimulationModelCVars::EnableDebugBufferReplication()

Public function Static

FConditional ...

 

NetworkSimulationModelCVars::EnableDebugBufferReplicationAuto

(
    TEXT("ns.DebugBufferReplication"),
    (int32 ) 1,
    TEXT("Replicate debug buffer (takes...
)

Public function

int32

 

NetworkSimulationModelCVars::EnableLocalPrediction()

Public function Static

FConditional ...

 

NetworkSimulationModelCVars::EnableLocalPredictionAuto

(
    TEXT("ns.EnableLocalPrediction"),
    (int32 ) 1,
    TEXT("Toggle local prediction.")
)

Public function

int32

 

NetworkSimulationModelCVars::EnableSimulatedExtrapolation()

Public function Static

FConditional ...

 

NetworkSimulationModelCVars::EnableSimulatedExtrapolationAuto

(
    TEXT("ns.EnableSimulatedExtrapolati...,
    (int32 ) 1,
    TEXT("Toggle simulated proxy extrap...
)

Public function

int32

 

NetworkSimulationModelCVars::EnableSimulatedReconcile()

Public function Static

FConditional ...

 

NetworkSimulationModelCVars::EnableSimulatedReconcileAuto

(
    TEXT("ns.EnableSimulatedReconcile"),
    (int32 ) 1,
    TEXT("Toggle simulated proxy reconc...
)

Public function

int32

 

NetworkSimulationModelCVars::ForceReconcile()

Public function Static

FConditional ...

 

NetworkSimulationModelCVars::ForceReconcileAuto

(
    TEXT("ns.ForceReconcile"),
    (int32 ) 0,
    TEXT("Forces reconcile even if stat...
)

Public function

int32

 

NetworkSimulationModelCVars::ForceReconcileSingle()

Public function Static

FConditional ...

 

NetworkSimulationModelCVars::ForceReconcileSingleAuto

(
    TEXT("ns.ForceReconcileSingle"),
    (int32 ) 0,
    TEXT("Forces a since reconcile to h...
)

Public function

void

 

NetworkSimulationModelCVars::SetEnableDebugBufferReplication

(
    int32 V
)

Public function

void

 

NetworkSimulationModelCVars::SetEnableLocalPrediction

(
    int32 V
)

Public function

void

 

NetworkSimulationModelCVars::SetEnableSimulatedExtrapolation

(
    int32 V
)

Public function

void

 

NetworkSimulationModelCVars::SetEnableSimulatedReconcile

(
    int32 V
)

Public function

void

 

NetworkSimulationModelCVars::SetForceReconcile

(
    int32 V
)

Public function

void

 

NetworkSimulationModelCVars::SetForceReconcileSingle

(
    int32 V
)

Public function

int32

 

NetworkSimulationModelDebugCVars::DrawCanvas()

Public function Static

FConditional ...

 

NetworkSimulationModelDebugCVars::DrawCanvasAuto

(
    TEXT("nsm.debug.DrawCanvas"),
    (int32 ) 1,
    TEXT("Draws Canvas Debug HUD")
)

Public function

int32

 

NetworkSimulationModelDebugCVars::DrawFrames()

Public function Static

FConditional ...

 

NetworkSimulationModelDebugCVars::DrawFramesAuto

(
    TEXT("nsm.debug.DrawFrames"),
    (int32 ) 1,
    TEXT("Draws frame data (text) in de...
)

Public function

int32

 

NetworkSimulationModelDebugCVars::DrawNetworkSendLines()

Public function Static

FConditional ...

 

NetworkSimulationModelDebugCVars::DrawNetworkSendLinesAuto

(
    TEXT("nsm.debug.DrawNetworkSendLine...,
    (int32 ) 1,
    TEXT("Draws lines representing netw...
)

Public function

int32

 

NetworkSimulationModelDebugCVars::GatherServerSidePIE()

Public function Static

FConditional ...

 

NetworkSimulationModelDebugCVars::GatherServerSidePIEAuto

(
    TEXT("nsm.debug.GatherServerSide"),
    (int32 ) 1,
    TEXT("Whenever we gather debug info...
)

Public function

void

 

NetworkSimulationModelDebugCVars::SetDrawCanvas

(
    int32 V
)

Public function

void

 

NetworkSimulationModelDebugCVars::SetDrawFrames

(
    int32 V
)

Public function

void

 

NetworkSimulationModelDebugCVars::SetDrawNetworkSendLines

(
    int32 V
)

Public function

void

 

NetworkSimulationModelDebugCVars::SetGatherServerSidePIE

(
    int32 V
)

Public function

void

 

TryGenerateLocalInput

(
    typename TNetSimModelTraits < Model ...,
    TNetworkSimBufferContainer < Model >...,
    TSimulationTicker < typename Model::...,
    bool bProduceInputViaDriver
)

Helper to generate a local input cmd if we have simulation time to spend and advance the simulation's MaxAllowedFrame so that it can be processed.

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback