group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
ClientPerfRecorder.hpp
Go to the documentation of this file.
1
3
4#pragma once
5
6#include <cstddef>
7#include <cstdint>
8#include <string>
9#include <vector>
10
17{
18 std::uint64_t frameNumber = 0;
19 double timestampMs = 0.0;
20 float wallFrameMs = 0.0f;
21 float cpuFrameMs = 0.0f;
22
23 float preambleMs = 0.0f;
24 float inputMs = 0.0f;
25 float networkStatsMs = 0.0f;
26 float physicsMs = 0.0f;
27 float networkPollMs = 0.0f;
28 float snapshotApplyMs = 0.0f;
29 float reconciliationMs = 0.0f;
30 float refreshPlayersMs = 0.0f;
32 float refreshRespawnsMs = 0.0f;
34 float refreshPowerupsMs = 0.0f;
35 float cameraResolveMs = 0.0f;
36 float cameraMs = 0.0f;
37 float localVfxMs = 0.0f;
38 float dispatchMs = 0.0f;
39 float particlesMs = 0.0f;
40 float audioMs = 0.0f;
41 float interpolationMs = 0.0f;
42 float animationMs = 0.0f;
43 float entityCmdsMs = 0.0f;
44 float viewmodelMs = 0.0f;
45 float recorderFpsMs = 0.0f;
46 float imguiMs = 0.0f;
47 float hudMs = 0.0f;
48 float pauseMenuMs = 0.0f;
49 float imguiRenderMs = 0.0f;
50 float drawFrameMs = 0.0f;
51 float drawAcquireMs = 0.0f;
52 float drawRecordMs = 0.0f;
53 float drawSubmitMs = 0.0f;
54 float frameLimiterMs = 0.0f;
55
56 std::uint32_t physicsTicks = 0;
57 std::uint32_t tickCount = 0;
58 std::uint32_t snapshotApplyCount = 0;
59 std::uint32_t snapshotApplied = 0;
60 std::uint32_t reconcileRequestedTicks = 0;
61 std::uint32_t reconcileReplayedTicks = 0;
62 std::uint32_t reconcileMissingTicks = 0;
63 std::uint32_t reconcileSkippedExact = 0;
64 std::uint32_t reconcileReplayForced = 0;
65 std::uint32_t reconcileMissingHistory = 0;
66 std::uint32_t clientPredictTick = 0;
67 std::uint32_t serverAckedClientTick = 0;
70 float accumulatorMs = 0.0f;
71 float measuredPhysicsHz = 0.0f;
72 float fpsCurrent = 0.0f;
73 float fps1pLow = 0.0f;
74 float fps5pLow = 0.0f;
75
76 std::uint32_t playerEntities = 0;
77 std::uint32_t localPlayers = 0;
78 std::uint32_t renderableEntities = 0;
79 std::uint32_t projectileEntities = 0;
80 std::uint32_t fireFields = 0;
81 std::uint32_t animatedCandidates = 0;
82 std::uint32_t animatedSampled = 0;
83 std::uint32_t animatedDrawn = 0;
84 std::uint32_t skinnedInstances = 0;
85 std::uint32_t boneMatrices = 0;
86 std::uint32_t entityRenderCmds = 0;
87 std::uint32_t pointLights = 0;
88 std::uint32_t beamPointLights = 0;
89
90 std::uint32_t impactParticles = 0;
91 std::uint32_t tracerParticles = 0;
92 std::uint32_t ribbonVertices = 0;
93 std::uint32_t hitscanBeams = 0;
94 std::uint32_t arcVertices = 0;
95 std::uint32_t smokeParticles = 0;
96 std::uint32_t decals = 0;
97
98 std::uint32_t audioSourcesActive = 0;
99 std::uint32_t voiceSourcesActive = 0;
100 std::uint64_t audioEventsPosted = 0;
101 std::uint64_t audioCommandsGenerated = 0;
102 std::uint64_t audioSourcesStarted = 0;
103 std::uint64_t audioDroppedByCooldown = 0;
104 std::uint64_t audioDroppedByLimit = 0;
105 std::uint64_t audioStolenSources = 0;
106
107 float rttMs = 0.0f;
108 float avgRttMs = 0.0f;
109 float recvKBps = 0.0f;
110 float sendKBps = 0.0f;
111 float registryUpdateKB = 0.0f;
112
113 std::uint32_t swapchainWidth = 0;
114 std::uint32_t swapchainHeight = 0;
115 std::uint32_t rendererWorldInstances = 0;
116 std::uint32_t rendererEntityCmds = 0;
117 std::uint32_t rendererEntityDraws = 0;
118 std::uint32_t rendererPointLights = 0;
119 std::uint32_t rendererSkinnedInstances = 0;
120 std::uint32_t rendererWeaponDrawn = 0;
121 std::uint32_t rendererModelDraws = 0;
122 std::uint32_t rendererMeshDraws = 0;
123 std::uint32_t rendererIndexedDraws = 0;
124 std::uint32_t rendererTriangles = 0;
125
126 std::uint32_t imguiDrawLists = 0;
127 std::uint32_t imguiVertices = 0;
128 std::uint32_t imguiIndices = 0;
129
130 std::uint32_t perfMovementCalls = 0;
131 std::uint32_t perfMovementPlayers = 0;
132 std::uint32_t perfCollisionCalls = 0;
133 std::uint32_t perfCollisionPlayers = 0;
134 std::uint32_t perfKccCalls = 0;
135 std::uint32_t perfKccBumpHits = 0;
136 std::uint32_t perfKccCaIterations = 0;
137 std::uint32_t perfKccSweepHits = 0;
138 std::uint32_t perfWallDetectCalls = 0;
139 std::uint32_t perfWallMeshProbes = 0;
140 std::uint32_t perfWallMeshProbeMeshes = 0;
141 std::uint32_t perfWallSphereFallbacks = 0;
142 std::uint32_t perfWallAttachmentCalls = 0;
143 std::uint32_t perfWallAttachmentMeshes = 0;
149 std::uint32_t perfStaticBroadphaseMeshes = 0;
150 std::uint32_t perfSweepAabbAllCalls = 0;
151 std::uint32_t perfSweepCapsuleAllCalls = 0;
155 std::uint32_t perfDeepestCapsuleCalls = 0;
159 std::uint32_t perfClosestPointMeshCalls = 0;
160 std::uint32_t perfClosestPointMeshNodes = 0;
161 std::uint32_t perfClosestPointMeshTris = 0;
169};
170
177{
178public:
179 void configureFromEnv(const char* basePath);
180 void start();
181 void stop();
182 void record(const ClientPerfFrame& frame);
183
184 [[nodiscard]] bool isEnabled() const noexcept { return enabled_; }
185 [[nodiscard]] bool isRecording() const noexcept { return recording_; }
186 [[nodiscard]] const std::string& sessionDir() const noexcept { return sessionDir_; }
187
188private:
189 bool enabled_ = false;
190 bool recording_ = false;
191 std::size_t reserveFrames_ = 240000;
193 std::string baseDir_;
194 std::string sessionDir_;
195 std::vector<ClientPerfFrame> frames_;
196
197 void writeFramesCsv() const;
198 void writeSummary() const;
199};
Session recorder enabled by GROUP2_CLIENT_PERF=1.
Definition ClientPerfRecorder.hpp:177
void writeFramesCsv() const
Definition ClientPerfRecorder.cpp:249
std::string baseDir_
Definition ClientPerfRecorder.hpp:193
std::uint64_t framesBeyondInitialReserve_
Definition ClientPerfRecorder.hpp:192
bool isEnabled() const noexcept
Definition ClientPerfRecorder.hpp:184
bool isRecording() const noexcept
Definition ClientPerfRecorder.hpp:185
void start()
Definition ClientPerfRecorder.cpp:206
std::vector< ClientPerfFrame > frames_
Definition ClientPerfRecorder.hpp:195
std::string sessionDir_
Definition ClientPerfRecorder.hpp:194
bool recording_
Definition ClientPerfRecorder.hpp:190
bool enabled_
Definition ClientPerfRecorder.hpp:189
void configureFromEnv(const char *basePath)
Definition ClientPerfRecorder.cpp:186
void writeSummary() const
Definition ClientPerfRecorder.cpp:264
const std::string & sessionDir() const noexcept
Definition ClientPerfRecorder.hpp:186
void record(const ClientPerfFrame &frame)
Definition ClientPerfRecorder.cpp:240
std::size_t reserveFrames_
Definition ClientPerfRecorder.hpp:191
void stop()
Definition ClientPerfRecorder.cpp:229
One rendered client frame worth of timing and workload counters.
Definition ClientPerfRecorder.hpp:17
std::uint32_t rendererIndexedDraws
Definition ClientPerfRecorder.hpp:123
float entityCmdsMs
Definition ClientPerfRecorder.hpp:43
std::uint32_t perfDeepestCapsuleCalls
Definition ClientPerfRecorder.hpp:155
float refreshPlayersMs
Definition ClientPerfRecorder.hpp:30
std::uint32_t perfDeepestCapsuleTriMeshTris
Definition ClientPerfRecorder.hpp:158
float measuredPhysicsHz
Definition ClientPerfRecorder.hpp:71
std::uint32_t impactParticles
Definition ClientPerfRecorder.hpp:90
std::uint32_t perfStaticBroadphaseQueries
Definition ClientPerfRecorder.hpp:148
std::uint32_t animatedSampled
Definition ClientPerfRecorder.hpp:82
std::uint32_t perfClosestPointWallAttachmentCalls
Definition ClientPerfRecorder.hpp:166
std::uint32_t reconcileRequestedTicks
Definition ClientPerfRecorder.hpp:60
std::uint32_t imguiIndices
Definition ClientPerfRecorder.hpp:128
float dispatchMs
Definition ClientPerfRecorder.hpp:38
float preambleMs
Definition ClientPerfRecorder.hpp:23
std::uint32_t perfSweepCapsuleTriMeshNodes
Definition ClientPerfRecorder.hpp:153
std::uint32_t perfWallDetectCalls
Definition ClientPerfRecorder.hpp:138
float cameraMs
Definition ClientPerfRecorder.hpp:36
float drawFrameMs
Definition ClientPerfRecorder.hpp:50
std::uint32_t snapshotApplied
Definition ClientPerfRecorder.hpp:59
std::uint32_t ribbonVertices
Definition ClientPerfRecorder.hpp:92
float snapshotApplyMs
Definition ClientPerfRecorder.hpp:28
std::uint32_t animatedDrawn
Definition ClientPerfRecorder.hpp:83
float recvKBps
Definition ClientPerfRecorder.hpp:109
std::uint32_t rendererEntityCmds
Definition ClientPerfRecorder.hpp:116
std::uint32_t animatedCandidates
Definition ClientPerfRecorder.hpp:81
double timestampMs
Definition ClientPerfRecorder.hpp:19
float networkStatsMs
Definition ClientPerfRecorder.hpp:25
std::uint32_t perfSweepAabbAllCalls
Definition ClientPerfRecorder.hpp:150
float frameLimiterMs
Definition ClientPerfRecorder.hpp:54
float particlesMs
Definition ClientPerfRecorder.hpp:39
std::uint32_t pointLights
Definition ClientPerfRecorder.hpp:87
float refreshRespawnsMs
Definition ClientPerfRecorder.hpp:32
std::uint32_t reconcileReplayedTicks
Definition ClientPerfRecorder.hpp:61
std::uint32_t perfCollisionPlayers
Definition ClientPerfRecorder.hpp:133
std::uint32_t rendererWeaponDrawn
Definition ClientPerfRecorder.hpp:120
std::uint32_t swapchainWidth
Definition ClientPerfRecorder.hpp:113
std::uint32_t perfWallAttachmentPrevTriangleHits
Definition ClientPerfRecorder.hpp:145
std::uint32_t fireFields
Definition ClientPerfRecorder.hpp:80
float drawRecordMs
Definition ClientPerfRecorder.hpp:52
std::uint32_t perfMovementPlayers
Definition ClientPerfRecorder.hpp:131
std::uint32_t rendererPointLights
Definition ClientPerfRecorder.hpp:118
std::uint32_t tracerParticles
Definition ClientPerfRecorder.hpp:91
std::uint32_t playerEntities
Definition ClientPerfRecorder.hpp:76
std::uint32_t voiceSourcesActive
Definition ClientPerfRecorder.hpp:99
std::uint32_t skinnedInstances
Definition ClientPerfRecorder.hpp:84
std::uint32_t smokeParticles
Definition ClientPerfRecorder.hpp:95
std::uint32_t arcVertices
Definition ClientPerfRecorder.hpp:94
std::uint32_t perfClosestPointMeshTris
Definition ClientPerfRecorder.hpp:161
std::uint32_t perfSweepCapsuleTriMeshCalls
Definition ClientPerfRecorder.hpp:152
std::uint32_t perfClosestPointWallProbeCalls
Definition ClientPerfRecorder.hpp:163
std::uint32_t rendererWorldInstances
Definition ClientPerfRecorder.hpp:115
std::uint32_t reconcileMissingTicks
Definition ClientPerfRecorder.hpp:62
float refreshProjectilesMs
Definition ClientPerfRecorder.hpp:31
std::uint32_t rendererSkinnedInstances
Definition ClientPerfRecorder.hpp:119
std::uint32_t perfKccCaIterations
Definition ClientPerfRecorder.hpp:136
std::uint32_t perfClosestPointTriangleCalls
Definition ClientPerfRecorder.hpp:162
std::uint32_t rendererMeshDraws
Definition ClientPerfRecorder.hpp:122
std::uint32_t perfClosestPointMeshNodes
Definition ClientPerfRecorder.hpp:160
std::uint32_t audioSourcesActive
Definition ClientPerfRecorder.hpp:98
float reconcileErrorPosition
Definition ClientPerfRecorder.hpp:68
std::uint64_t audioStolenSources
Definition ClientPerfRecorder.hpp:105
float registryUpdateKB
Definition ClientPerfRecorder.hpp:111
std::uint32_t perfKccSweepHits
Definition ClientPerfRecorder.hpp:137
std::uint32_t reconcileReplayForced
Definition ClientPerfRecorder.hpp:64
std::uint32_t clientPredictTick
Definition ClientPerfRecorder.hpp:66
std::uint32_t perfWallAttachmentBroadphaseFallbacks
Definition ClientPerfRecorder.hpp:147
std::uint32_t beamPointLights
Definition ClientPerfRecorder.hpp:88
float hudMs
Definition ClientPerfRecorder.hpp:47
std::uint32_t perfSweepCapsuleAllCalls
Definition ClientPerfRecorder.hpp:151
std::uint64_t audioDroppedByLimit
Definition ClientPerfRecorder.hpp:104
std::uint32_t perfClosestPointWallAttachmentTris
Definition ClientPerfRecorder.hpp:168
std::uint32_t renderableEntities
Definition ClientPerfRecorder.hpp:78
float drawSubmitMs
Definition ClientPerfRecorder.hpp:53
std::uint32_t reconcileSkippedExact
Definition ClientPerfRecorder.hpp:63
std::uint32_t entityRenderCmds
Definition ClientPerfRecorder.hpp:86
std::uint32_t perfWallAttachmentNeighborHits
Definition ClientPerfRecorder.hpp:146
float rttMs
Definition ClientPerfRecorder.hpp:107
float recorderFpsMs
Definition ClientPerfRecorder.hpp:45
float refreshPowerupsMs
Definition ClientPerfRecorder.hpp:34
float reconcileErrorVelocity
Definition ClientPerfRecorder.hpp:69
std::uint32_t imguiVertices
Definition ClientPerfRecorder.hpp:127
float imguiMs
Definition ClientPerfRecorder.hpp:46
std::uint32_t physicsTicks
Definition ClientPerfRecorder.hpp:56
std::uint32_t perfWallSphereFallbacks
Definition ClientPerfRecorder.hpp:141
std::uint32_t perfClosestPointWallProbeTris
Definition ClientPerfRecorder.hpp:165
std::uint32_t projectileEntities
Definition ClientPerfRecorder.hpp:79
std::uint32_t perfWallAttachmentMeshes
Definition ClientPerfRecorder.hpp:143
std::uint32_t perfDeepestCapsuleTriMeshCalls
Definition ClientPerfRecorder.hpp:156
std::uint32_t perfClosestPointWallAttachmentNodes
Definition ClientPerfRecorder.hpp:167
std::uint64_t frameNumber
Definition ClientPerfRecorder.hpp:18
std::uint32_t swapchainHeight
Definition ClientPerfRecorder.hpp:114
float audioMs
Definition ClientPerfRecorder.hpp:40
float sendKBps
Definition ClientPerfRecorder.hpp:110
std::uint32_t perfKccBumpHits
Definition ClientPerfRecorder.hpp:135
std::uint64_t audioDroppedByCooldown
Definition ClientPerfRecorder.hpp:103
std::uint32_t perfStaticBroadphaseMeshes
Definition ClientPerfRecorder.hpp:149
std::uint32_t rendererModelDraws
Definition ClientPerfRecorder.hpp:121
std::uint32_t perfDeepestCapsuleTriMeshNodes
Definition ClientPerfRecorder.hpp:157
std::uint32_t decals
Definition ClientPerfRecorder.hpp:96
std::uint32_t perfWallMeshProbeMeshes
Definition ClientPerfRecorder.hpp:140
float pauseMenuMs
Definition ClientPerfRecorder.hpp:48
float inputMs
Definition ClientPerfRecorder.hpp:24
std::uint32_t perfSweepCapsuleTriMeshTris
Definition ClientPerfRecorder.hpp:154
std::uint32_t reconcileMissingHistory
Definition ClientPerfRecorder.hpp:65
float accumulatorMs
Definition ClientPerfRecorder.hpp:70
float fps1pLow
Definition ClientPerfRecorder.hpp:73
float physicsMs
Definition ClientPerfRecorder.hpp:26
float cpuFrameMs
Definition ClientPerfRecorder.hpp:21
std::uint32_t perfMovementCalls
Definition ClientPerfRecorder.hpp:130
std::uint64_t audioEventsPosted
Definition ClientPerfRecorder.hpp:100
std::uint64_t audioCommandsGenerated
Definition ClientPerfRecorder.hpp:101
std::uint32_t perfClosestPointWallProbeNodes
Definition ClientPerfRecorder.hpp:164
std::uint32_t rendererTriangles
Definition ClientPerfRecorder.hpp:124
std::uint32_t hitscanBeams
Definition ClientPerfRecorder.hpp:93
std::uint32_t boneMatrices
Definition ClientPerfRecorder.hpp:85
float animationMs
Definition ClientPerfRecorder.hpp:42
std::uint32_t perfCollisionCalls
Definition ClientPerfRecorder.hpp:132
float viewmodelMs
Definition ClientPerfRecorder.hpp:44
std::uint32_t perfWallMeshProbes
Definition ClientPerfRecorder.hpp:139
std::uint32_t serverAckedClientTick
Definition ClientPerfRecorder.hpp:67
std::uint32_t snapshotApplyCount
Definition ClientPerfRecorder.hpp:58
std::uint32_t imguiDrawLists
Definition ClientPerfRecorder.hpp:126
float fps5pLow
Definition ClientPerfRecorder.hpp:74
float avgRttMs
Definition ClientPerfRecorder.hpp:108
float cameraResolveMs
Definition ClientPerfRecorder.hpp:35
float drawAcquireMs
Definition ClientPerfRecorder.hpp:51
std::uint32_t tickCount
Definition ClientPerfRecorder.hpp:57
float interpolationMs
Definition ClientPerfRecorder.hpp:41
float networkPollMs
Definition ClientPerfRecorder.hpp:27
std::uint32_t rendererEntityDraws
Definition ClientPerfRecorder.hpp:117
std::uint64_t audioSourcesStarted
Definition ClientPerfRecorder.hpp:102
float refreshDroppedWeaponsMs
Definition ClientPerfRecorder.hpp:33
float reconciliationMs
Definition ClientPerfRecorder.hpp:29
std::uint32_t perfWallDetectSkippedByGate
Definition ClientPerfRecorder.hpp:144
float fpsCurrent
Definition ClientPerfRecorder.hpp:72
float wallFrameMs
Definition ClientPerfRecorder.hpp:20
std::uint32_t perfClosestPointMeshCalls
Definition ClientPerfRecorder.hpp:159
std::uint32_t perfWallAttachmentCalls
Definition ClientPerfRecorder.hpp:142
std::uint32_t localPlayers
Definition ClientPerfRecorder.hpp:77
float imguiRenderMs
Definition ClientPerfRecorder.hpp:49
float localVfxMs
Definition ClientPerfRecorder.hpp:37
std::uint32_t perfKccCalls
Definition ClientPerfRecorder.hpp:134