Bomberman Multiplayer
Authoritative multiplayer networking layer for Bomberman.
Loading...
Searching...
No Matches
NetDiagShared.h
Go to the documentation of this file.
1#ifndef BOMBERMAN_NET_NETDIAGSHARED_H
2#define BOMBERMAN_NET_NETDIAGSHARED_H
3
4#include <cstdint>
5#include <string>
6
12namespace bomberman::net
13{
15 inline constexpr uint32_t kDiagnosticsReportVersion = 1;
16
18 enum class NetEventType : uint8_t
19 {
20 Unknown,
21 SessionBegin,
22 SessionEnd,
23 PeerLifecycle,
24 PacketSent,
25 PacketRecv,
26 Simulation,
27 Flow
28 };
29
31 enum class NetPeerLifecycleType : uint8_t
32 {
33 TransportConnected,
34 PlayerAccepted,
35 PeerRejected,
36 PeerDisconnected,
37 TransportDisconnectedBeforeHandshake
38 };
39
41 enum class NetPacketDirection : uint8_t
42 {
43 Outgoing,
44 Incoming
45 };
46
48 enum class NetPacketResult : uint8_t
49 {
50 Ok,
51 Dropped,
52 Rejected,
53 Malformed
54 };
55
57 enum class NetSimulationEventType : uint8_t
58 {
59 Gap,
60 BufferedDeadlineRecovery,
61 RoundEnded
62 };
63
65 struct NetEvent
66 {
67 NetEventType type = NetEventType::Unknown;
68 uint64_t timestampMs = 0;
69
70 NetPacketDirection packetDirection = NetPacketDirection::Outgoing;
71 NetPacketResult packetResult = NetPacketResult::Ok;
72 NetPeerLifecycleType lifecycleType = NetPeerLifecycleType::TransportConnected;
73 NetSimulationEventType simulationType = NetSimulationEventType::Gap;
74
75 uint8_t peerId = 0xFF;
76 uint8_t channelId = 0xFF;
77 uint8_t msgType = 0;
78
79 uint32_t seq = 0;
80 uint32_t detailA = 0;
81 uint32_t detailB = 0;
82
83 std::string note;
84 };
85
88 {
89 uint8_t peerId = 0xFF;
90 uint64_t timestampMs = 0;
91 uint32_t rttMs = 0;
92 uint32_t rttVarianceMs = 0;
93 uint32_t packetLossPermille = 0;
94 uint32_t queuedReliable = 0;
95 uint32_t queuedUnreliable = 0;
96 };
97
100 {
101 uint8_t peerId = 0xFF;
102 uint64_t timestampMs = 0;
103 uint64_t directDeadlineConsumes = 0;
104 uint64_t simulationGaps = 0;
105 uint64_t bufferedDeadlineRecoveries = 0;
106 uint32_t lastReceivedInputSeq = 0;
107 uint32_t lastProcessedInputSeq = 0;
108 };
109
112 {
113 uint64_t lastEmittedTimestampMs = 0;
114 };
115} // namespace bomberman::net
116
117#endif // BOMBERMAN_NET_NETDIAGSHARED_H
Shared multiplayer protocol types and transport-facing wire helpers.
Definition ClientPrediction.cpp:13
NetSimulationEventType
Simulation/input-timeline events worth retaining in recent-event history.
Definition NetDiagShared.h:58
NetEventType
High-level kinds of recent events captured during a diagnostics session.
Definition NetDiagShared.h:19
NetPacketDirection
Packet travel direction recorded in a recent packet event.
Definition NetDiagShared.h:42
NetPacketResult
Diagnostics classification for one packet attempt or receive path outcome.
Definition NetDiagShared.h:49
constexpr uint32_t kDiagnosticsReportVersion
Shared JSON report schema version for diagnostics outputs.
Definition NetDiagShared.h:15
NetPeerLifecycleType
Peer lifecycle milestones emitted by multiplayer networking flows.
Definition NetDiagShared.h:32
Discrete diagnostics event stored in a recent-event ring buffer.
Definition NetDiagShared.h:66
uint8_t channelId
Raw ENet channel id for packet events.
Definition NetDiagShared.h:76
uint8_t peerId
Gameplay player id when known, otherwise 0xFF.
Definition NetDiagShared.h:75
uint64_t timestampMs
Monotonic timestamp. Zero means "stamp on record".
Definition NetDiagShared.h:68
std::string note
Optional short note for reports.
Definition NetDiagShared.h:83
uint8_t msgType
Raw EMsgType value for packet events.
Definition NetDiagShared.h:77
NetPacketResult packetResult
Valid for packet events.
Definition NetDiagShared.h:71
NetPacketDirection packetDirection
Valid for packet events.
Definition NetDiagShared.h:70
NetSimulationEventType simulationType
Valid for simulation events.
Definition NetDiagShared.h:73
NetPeerLifecycleType lifecycleType
Valid for lifecycle events.
Definition NetDiagShared.h:72
Aggregate input-continuity facts for one authoritative gameplay player id.
Definition NetDiagShared.h:100
Latest sampled transport health values for a single gameplay player id.
Definition NetDiagShared.h:88
Recent-event dedupe state keyed by semantic event signature.
Definition NetDiagShared.h:112