feat : 이동 패킷 전달
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user