From d893ca30e6ee2ac8f4f094549c586a248aaec38e Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Thu, 4 Jul 2024 01:32:53 +0530 Subject: [PATCH] ping icons --- src/Marble.hx | 1 + src/ProfilerUI.hx | 5 +++-- src/net/Net.hx | 8 +++++++- src/net/NetPacket.hx | 11 +++++++---- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/Marble.hx b/src/Marble.hx index 08239b3a..daa082ee 100644 --- a/src/Marble.hx +++ b/src/Marble.hx @@ -1938,6 +1938,7 @@ class Marble extends GameObject { marbleUpdate.netFlags = this.netFlags; marbleUpdate.gravityDirection = this.currentUp; marbleUpdate.trapdoorUpdates = this.trapdoorContacts; + marbleUpdate.pingTicks = connection != null ? connection.pingTicks : 0; marbleUpdate.serialize(b); this.trapdoorContacts = []; diff --git a/src/ProfilerUI.hx b/src/ProfilerUI.hx index 61234ddc..410a3607 100644 --- a/src/ProfilerUI.hx +++ b/src/ProfilerUI.hx @@ -118,13 +118,14 @@ class ProfilerUI { + 'Server Move Queue Size: ${Net.isClient ? @:privateAccess MarbleGame.instance.world.lastMoves.myMarbleUpdate.moveQueueSize : 0}\n' + 'Last Sent Move: ${Net.isClient ? lastSentMove : 0}\n' + 'Last Ack Move: ${Net.isClient ? @:privateAccess Net.clientConnection.moveManager.lastAckMoveId : 0}\n' - + 'Move Ack RTT: ${Net.isClient ? @:privateAccess Net.clientConnection.moveManager.ackRTT : 0}'; + + 'Move Ack RTT: ${Net.isClient ? @:privateAccess Net.clientConnection.moveManager.ackRTT : 0}' + + 'Ping: ${Net.clientConnection.pingTicks}'; } if (Net.isHost) { var strs = []; strs.push('World Ticks: ${MarbleGame.instance.world.timeState.ticks}'); for (dc => cc in Net.clients) { - strs.push('${cc.id} move: sz ${@:privateAccess cc.moveManager.getQueueSize()} avg ${@:privateAccess cc.moveManager.serverAvgMoveListSize}'); + strs.push('${cc.id} move: sz ${@:privateAccess cc.moveManager.getQueueSize()} avg ${@:privateAccess cc.moveManager.serverAvgMoveListSize}, ping: ${cc.pingTicks}'); } instance.networkStats.text = strs.join('\n'); diff --git a/src/net/Net.hx b/src/net/Net.hx index 561c081c..595a9569 100644 --- a/src/net/Net.hx +++ b/src/net/Net.hx @@ -716,6 +716,8 @@ class Net { var marbleUpdatePacket = new MarbleUpdatePacket(); marbleUpdatePacket.deserialize(input); var cc = marbleUpdatePacket.clientId; + var client = cc != Net.clientId ? clientIdMap[cc] : Net.clientConnection; + client.pingTicks = marbleUpdatePacket.pingTicks; if (MarbleGame.instance.world != null && !MarbleGame.instance.world._disposed) { var m = MarbleGame.instance.world.lastMoves; m.enqueue(marbleUpdatePacket); @@ -726,9 +728,13 @@ class Net { var movePacket = new MarbleMovePacket(); movePacket.deserialize(input); var cc = clientIdMap[movePacket.clientId]; - if (cc.state == GAME) + if (cc.state == GAME) { + var startRecvId = cc.moveManager.getQueueSize(); for (move in movePacket.moves) cc.queueMove(move); + var endRecvId = cc.moveManager.getQueueSize(); + cc.pingTicks = movePacket.moves.length - (endRecvId - startRecvId); + } } case PowerupPickup: diff --git a/src/net/NetPacket.hx b/src/net/NetPacket.hx index a5ddcbc5..19d890aa 100644 --- a/src/net/NetPacket.hx +++ b/src/net/NetPacket.hx @@ -71,16 +71,18 @@ class MarbleUpdatePacket implements NetPacket { var oob:Bool; var powerUpId:Int; var moveQueueSize:Int; + var pingTicks:Int; var netFlags:Int; var trapdoorUpdates:Map = []; public function new() {} public inline function serialize(b:OutputBitStream) { - b.writeByte(clientId); + b.writeInt(clientId, 6); MoveManager.packMove(move, b); b.writeUInt16(serverTicks); - b.writeByte(moveQueueSize); + b.writeInt(moveQueueSize, 6); + b.writeInt(pingTicks, 6); b.writeFloat(position.x); b.writeFloat(position.y); b.writeFloat(position.z); @@ -160,10 +162,11 @@ class MarbleUpdatePacket implements NetPacket { } public inline function deserialize(b:InputBitStream) { - clientId = b.readByte(); + clientId = b.readInt(6); move = MoveManager.unpackMove(b); serverTicks = b.readUInt16(); - moveQueueSize = b.readByte(); + moveQueueSize = b.readInt(6); + pingTicks = b.readInt(6); position = new Vector(b.readFloat(), b.readFloat(), b.readFloat()); velocity = new Vector(b.readFloat(), b.readFloat(), b.readFloat()); omega = new Vector(b.readFloat(), b.readFloat(), b.readFloat());