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(); }