This is output from my program
sending agent update
Created new player
Identified
sending agent update
Physics: 2 ticks this frame
time= 200
time= 300
***Packet Dropped: 2:10 ***
***Packet Dropped: 2:11 ***
***Packet Dropped: 2:12 ***
***Packet Dropped: 2:13 ***
***Packet Dropped: 2:14 ***
***Packet Dropped: 2:15 ***
***Packet Dropped: 2:16 ***
***Packet Dropped: 2:17 ***
***Packet Dropped: 2:18 ***
***Packet Dropped: 2:19 ***
***Packet Dropped: 2:20 ***
***Packet Dropped: 2:21 ***
time= 400
Physics: 2 ticks this frame
time= 500
Physics: 2 ticks this frame
Sending packets from local host to local host, packets are dropping. This only happens near the beginning. The first 10 or so packets get through, then packets after that drop. 5 to 40 packets in a row. Then packets stop dropping.
Is there any reason that this should happen?
Update:
The following code fixed the problem.
int buffsize = 65536; // 65536
setsockopt(socket, SOL_SOCKET, SO_RCVBUF, (void*)&buffsize, sizeof(buffsize));
I was sending packets too fast and exceeded the windows default receive buffer, which is only 8 KB. Increasing the buffer size fixed the problem.
Check the UDP buffer size configured by default in your OS.
If you find it less, you can explicitly provide a greater value while creating a UDP socket.
int buffer_size = 4 * 1024 * 1024 ; setsockopt(socket, SOL_SOCKET, SO_RCVBUF, &buffer_size, sizeof(buffer_size));
You may find THIS link pretty useful.
You're probably sending packets too quickly and thus overflowing buffers. You need to implement transmit pacing to make sure the transmitter does not overwhelm the receiver. You will never 100% avoid this -- it's the nature of UDP that it does not provide a delivery guarantee.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With