UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetAnalyticsTypes.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6
15{
16public:
17
19 : Name(InName)
21 {
22 }
23
26};
27
28// With this formatting, an array of these (or even just a single entry) will have
29// the same form as a map "key:value,key:value,..."
31{
32 return FString::Printf(TEXT("%s:%f"), *Value.Name.ToString(), Value.TimeSeconds);
33}
34
35struct FDelinquencyKeyFuncs : public BaseKeyFuncs<FDelinquencyNameTimePair, FDelinquencyNameTimePair, false>
36{
38 {
39 return Element;
40 }
41
43 {
44 return LHS.Name == RHS.Name;
45 }
46
48 {
49 return GetTypeHash(Key.Name);
50 }
51};
52
60{
61public:
62
64
66
70
71 void Emplace(FName Name, float TimeSeconds)
72 {
73 Add(FDelinquencyNameTimePair(Name, TimeSeconds));
74 }
75
89
91 {
92 return TopOffenders;
93 }
94
96 {
97 return AllDelinquents;
98 }
99
100 const float GetTotalTime() const
101 {
102 return TotalTime;
103 }
104
106 {
107 return NumberOfTopOffendersToTrack;
108 }
109
110 ENGINE_API void Reset();
111
112 ENGINE_API void CountBytes(class FArchive& Ar) const;
113
114private:
115
118 float TotalTime;
119
120 // This is explicitly non const, as we will be copying / moving these structs around.
121 uint32 NumberOfTopOffendersToTrack;
122};
123
170
216
219{
220public:
221
223 : NumberOfTrackedFrames(0)
224 , NumberOfSaturatedFrames(0)
225 , LongestRunOfSaturatedFrames(0)
226 , NumberOfReplications(0)
227 , NumberOfSaturatedReplications(0)
228 , LongestRunOfSaturatedReplications(0)
229 , CurrentRunOfSaturatedFrames(0)
230 , CurrentRunOfSaturatedReplications(0)
231 {
232 }
233
236 {
237 return NumberOfTrackedFrames;
238 }
239
242 {
243 return NumberOfSaturatedFrames;
244 }
245
248 {
249 return LongestRunOfSaturatedFrames;
250 }
251
257 {
258 return NumberOfReplications;
259 }
260
263 {
264 return NumberOfSaturatedReplications;
265 }
266
269 {
270 return LongestRunOfSaturatedReplications;
271 }
272
274 ENGINE_API void Reset();
275
276private:
277
278 friend class UNetConnection;
279
280 ENGINE_API void TrackFrame(const bool bIsSaturated);
281
282 ENGINE_API void TrackReplication(const bool bIsSaturated);
283
284 uint32 NumberOfTrackedFrames;
285 uint32 NumberOfSaturatedFrames;
286 uint32 LongestRunOfSaturatedFrames;
287
288 uint32 NumberOfReplications;
289 uint32 NumberOfSaturatedReplications;
290 uint32 LongestRunOfSaturatedReplications;
291
292 uint32 CurrentRunOfSaturatedFrames;
293 uint32 CurrentRunOfSaturatedReplications;
294};
295
298{
299public:
300
302 : bSawPacketLossBurstThisFrame(false)
303 , NumberOfAcksThisFrame(0)
304 , NumberOfNaksThisFrame(0)
305 , NumberOfMissingPacketsThisFrame(0)
306 , NumberOfPacketsThisFrame(0)
307 , CurrentRunOfDroppedOutPackets(0)
308 , LongestRunOfDroppedOutPackets(0)
309 , LongestRunOfDroppedInPackets(0)
310 , NumberOfFramesWithBurstsOfPacketLoss(0)
311 , NumberOfFramesWithNoPackets(0)
312 , NumberOfTrackedFrames(0)
313 {
314 }
315
318 {
319 return LongestRunOfDroppedInPackets;
320 }
321
324 {
325 return LongestRunOfDroppedOutPackets;
326 }
327
330 {
331 return NumberOfFramesWithBurstsOfPacketLoss;
332 }
333
336 {
337 return NumberOfFramesWithNoPackets;
338 }
339
342 {
343 return NumberOfTrackedFrames;
344 }
345
346 const double GetBurstyPacketLossPerSecond(double DurationSec) const
347 {
348 return DurationSec > 0.0 ? GetNumberOfFramesWithBurstsOfPacketLoss() / DurationSec : 0.0;
349 }
350
352 ENGINE_API void Reset();
353
354private:
355
356 friend class UNetConnection;
357
358 ENGINE_API void TrackAck(int32 PacketId);
359 ENGINE_API void TrackNak(int32 PacketId);
360 ENGINE_API void TrackInPacket(uint32 InPacketId, uint32 NumberOfMissingPackets);
361
362 ENGINE_API void Tick();
363
364 bool bSawPacketLossBurstThisFrame : 1;
365
366 uint32 NumberOfAcksThisFrame;
367 uint32 NumberOfNaksThisFrame;
368
369 uint32 NumberOfMissingPacketsThisFrame;
370 uint32 NumberOfPacketsThisFrame;
371
372 uint32 CurrentRunOfDroppedOutPackets;
373 uint32 LongestRunOfDroppedOutPackets;
374 uint32 LongestRunOfDroppedInPackets;
375
376 uint32 NumberOfFramesWithBurstsOfPacketLoss;
377 uint32 NumberOfFramesWithNoPackets;
378 uint64 NumberOfTrackedFrames;
379};
380
381
386template<uint32 NbPeriodsForAverage>
388{
389public:
390
392 float GetLossPercentage() const { return LossPercentage; }
393
395 float GetAvgLossPercentage() const { return AvgLossPercentage; }
396
399 {
400 // Update the current statistic
401 const int32 PacketsDuringLastPeriod = TotalPackets - TotalPacketsAtPeriodStart;
402 LossPercentage = PacketsDuringLastPeriod > 0 ? ((float)NbPacketsLost / (float)PacketsDuringLastPeriod) : 0.0f;
403
404 // Update the rolling average
405 const int32 SampleIndex = SampleCount % NbPeriodsForAverage;
406 LossSamples[SampleIndex] = LossPercentage;
407
408 float RollingAverage = 0.0f;
409 for (float LossSample : LossSamples)
410 {
412 }
413 AvgLossPercentage = RollingAverage / NbPeriodsForAverage;
414
415 // Store data for the next update
416 TotalPacketsAtPeriodStart = TotalPackets;
417 }
418
419private:
425 float LossSamples[NbPeriodsForAverage] = { 0.0f };
426
427 int32 TotalPacketsAtPeriodStart = 0;
428 float LossPercentage = 0.0f;
429 float AvgLossPercentage = 0.0f;
430};
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FString LexToString(const FDelinquencyNameTimePair &Value)
Definition NetAnalyticsTypes.h:30
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition NameTypes.h:617
Definition Array.h:670
Definition NetConnection.h:284
@ false
Definition radaudio_common.h:23
Definition SetUtilities.h:23
TCallTraits< FDelinquencyNameTimePair >::ParamType ElementInitType
Definition SetUtilities.h:26
TCallTraits< FDelinquencyNameTimePair >::ParamType KeyInitType
Definition SetUtilities.h:25
Definition NetAnalyticsTypes.h:60
const FDelinquencyAnalytics & operator=(const FDelinquencyAnalytics &)=delete
void Emplace(FName Name, float TimeSeconds)
Definition NetAnalyticsTypes.h:71
ENGINE_API void CountBytes(class FArchive &Ar) const
Definition NetAnalyticsTypes.cpp:155
FDelinquencyAnalytics & operator=(FDelinquencyAnalytics &&)=default
ENGINE_API void Reset()
Definition NetAnalyticsTypes.cpp:148
const TArray< FDelinquencyNameTimePair > & GetTopOffenders() const
Definition NetAnalyticsTypes.h:90
const TSet< FDelinquencyNameTimePair, FDelinquencyKeyFuncs > & GetAllDelinquents() const
Definition NetAnalyticsTypes.h:95
const float GetTotalTime() const
Definition NetAnalyticsTypes.h:100
const uint32 GetNumberOfTopOffendersToTrack() const
Definition NetAnalyticsTypes.h:105
FDelinquencyAnalytics(const FDelinquencyAnalytics &)=delete
Definition NetAnalyticsTypes.h:36
static uint32 GetKeyHash(KeyInitType Key)
Definition NetAnalyticsTypes.h:47
static bool Matches(KeyInitType LHS, KeyInitType RHS)
Definition NetAnalyticsTypes.h:42
static KeyInitType GetSetKey(ElementInitType Element)
Definition NetAnalyticsTypes.h:37
Definition NetAnalyticsTypes.h:15
FName Name
Definition NetAnalyticsTypes.h:24
FDelinquencyNameTimePair(FName InName, float InTimeSeconds)
Definition NetAnalyticsTypes.h:18
float TimeSeconds
Definition NetAnalyticsTypes.h:25
Definition NetAnalyticsTypes.h:133
uint32 MaxConcurrentAsyncLoads
Definition NetAnalyticsTypes.h:168
const FNetAsyncLoadDelinquencyAnalytics & operator=(const FNetAsyncLoadDelinquencyAnalytics &)=delete
FDelinquencyAnalytics DelinquentAsyncLoads
Definition NetAnalyticsTypes.h:167
FNetAsyncLoadDelinquencyAnalytics(const uint32 NumberOfTopOffendersToTrack)
Definition NetAnalyticsTypes.h:140
void CountBytes(FArchive &Ar) const
Definition NetAnalyticsTypes.h:156
FNetAsyncLoadDelinquencyAnalytics()
Definition NetAnalyticsTypes.h:134
FNetAsyncLoadDelinquencyAnalytics(const FNetAsyncLoadDelinquencyAnalytics &)=delete
FNetAsyncLoadDelinquencyAnalytics(FNetAsyncLoadDelinquencyAnalytics &&Other)
Definition NetAnalyticsTypes.h:146
FNetAsyncLoadDelinquencyAnalytics & operator=(FNetAsyncLoadDelinquencyAnalytics &&)=default
void Reset()
Definition NetAnalyticsTypes.h:161
Definition NetAnalyticsTypes.h:298
const uint32 GetLongestRunOfDroppedInPackets() const
Definition NetAnalyticsTypes.h:317
ENGINE_API void Reset()
Definition NetAnalyticsTypes.cpp:213
const uint32 GetLongestRunOfDroppedOutPackets() const
Definition NetAnalyticsTypes.h:323
const uint32 GetNumberOfFramesWithBurstsOfPacketLoss() const
Definition NetAnalyticsTypes.h:329
const uint64 GetNumberOfTrackedFrames() const
Definition NetAnalyticsTypes.h:341
const uint32 GetNumberOfFramesWithNoPackets() const
Definition NetAnalyticsTypes.h:335
const double GetBurstyPacketLossPerSecond(double DurationSec) const
Definition NetAnalyticsTypes.h:346
FNetConnectionPacketAnalytics()
Definition NetAnalyticsTypes.h:301
Definition NetAnalyticsTypes.h:219
const uint32 GetNumberOfSaturatedFrames() const
Definition NetAnalyticsTypes.h:241
const uint32 GetNumberOfSaturatedReplications() const
Definition NetAnalyticsTypes.h:262
ENGINE_API void Reset()
Definition NetAnalyticsTypes.cpp:199
const uint32 GetNumberOfReplications() const
Definition NetAnalyticsTypes.h:256
const uint32 GetLongestRunOfSaturatedFrames() const
Definition NetAnalyticsTypes.h:247
FNetConnectionSaturationAnalytics()
Definition NetAnalyticsTypes.h:222
const uint32 GetNumberOfTrackedFrames() const
Definition NetAnalyticsTypes.h:235
const uint32 GetLongestRunOfSaturatedReplications() const
Definition NetAnalyticsTypes.h:268
Definition NetAnalyticsTypes.h:178
FNetQueuedActorDelinquencyAnalytics()
Definition NetAnalyticsTypes.h:179
FNetQueuedActorDelinquencyAnalytics(const uint32 NumberOfTopOffendersToTrack)
Definition NetAnalyticsTypes.h:185
FNetQueuedActorDelinquencyAnalytics(const FNetQueuedActorDelinquencyAnalytics &)=delete
FNetQueuedActorDelinquencyAnalytics & operator=(FNetQueuedActorDelinquencyAnalytics &&)=default
void CountBytes(FArchive &Ar) const
Definition NetAnalyticsTypes.h:202
uint32 MaxConcurrentQueuedActors
Definition NetAnalyticsTypes.h:214
FNetQueuedActorDelinquencyAnalytics(FNetQueuedActorDelinquencyAnalytics &&Other)
Definition NetAnalyticsTypes.h:191
const FNetQueuedActorDelinquencyAnalytics & operator=(const FNetQueuedActorDelinquencyAnalytics &)=delete
FDelinquencyAnalytics DelinquentQueuedActors
Definition NetAnalyticsTypes.h:213
void Reset()
Definition NetAnalyticsTypes.h:207
Definition NetAnalyticsTypes.h:388
float GetAvgLossPercentage() const
Definition NetAnalyticsTypes.h:395
float GetLossPercentage() const
Definition NetAnalyticsTypes.h:392
void UpdateLoss(int32 NbPacketsLost, int32 TotalPackets, int32 SampleCount)
Definition NetAnalyticsTypes.h:398