feat : 이동 패킷 전달

This commit is contained in:
qornwh1
2026-03-04 10:02:48 +09:00
parent d16e4a05e5
commit 4ef58c2fad

View File

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