From 4ef58c2fadae8ee7dff4e22879138731d28a3f1e Mon Sep 17 00:00:00 2001 From: qornwh1 Date: Wed, 4 Mar 2026 10:02:48 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20=EC=9D=B4=EB=8F=99=20=ED=8C=A8?= =?UTF-8?q?=ED=82=B7=20=EC=A0=84=EB=8B=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DummyService/DummyClients.cs | 32 ++++++++----------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/ClientTester/EchoClientTester/DummyService/DummyClients.cs b/ClientTester/EchoClientTester/DummyService/DummyClients.cs index 0944d41..1a4adeb 100644 --- a/ClientTester/EchoClientTester/DummyService/DummyClients.cs +++ b/ClientTester/EchoClientTester/DummyService/DummyClients.cs @@ -91,8 +91,6 @@ public class DummyClients packetHeader.BodyLength = 4 + sizeof(long); writer.Put(clientId); peer.Send(writer, DeliveryMethod.ReliableOrdered); - - // 초기화 }; listener.NetworkReceiveEvent += (peer, reader, channel, deliveryMethod) => @@ -176,27 +174,23 @@ public class DummyClients int seq = seqNumber++; pendingPings[seq] = Stopwatch.GetTimestamp(); - // 응답 없는 오래된 ping 정리 (패킷 유실 시 메모리 누수 방지) - if (pendingPings.Count > MAX_PENDING_PINGS) + TransformPlayerPacket transformPlayerPacket = new TransformPlayerPacket { - int cutoff = seq - MAX_PENDING_PINGS; - foreach (int key in pendingPings.Keys) + PlayerId = (int)clientId, + RotY = rotY, + Position = new Packet.Vector3 { - if (key < cutoff) - { - pendingPings.TryRemove(key, out _); - } + X = position.X, + Y = 0, // 높이는 버린다. + Z = position.Z } - } + }; - PacketHeader packetHeader = new PacketHeader(); - packetHeader.Code = 0; - packetHeader.BodyLength = (ushort)$"Echo seq:{seq}".Length; - writer.Put((short)packetHeader.Code); - writer.Put((short)packetHeader.BodyLength); - writer.Put($"Echo seq:{seq}"); - // 순서보장 안함 HOL Blocking 제거 - peer.Send(writer, DeliveryMethod.ReliableUnordered); + // Protobuf 직렬화 + 헤더 조립 + byte[] data = PacketSerializer.Serialize((ushort)PacketCode.TRANSFORM_PLAYER, transformPlayerPacket); + writer.Put(data); + // 이동은 손실 감수함 + peer.Send(writer, DeliveryMethod.Unreliable); SentCount++; writer.Reset(); }