Hello,

I have multiple clients connected to the server. The server echos the received data from any single client to the rest of the clients. I would like to know the time when a packet is sent by the original client. How do I do that? It is clearly a very common situation in games. I get position of a player with the velocity. Given that some time elapsed since the packet was sent I can estimate current position by using elapsed time and the velocity to get the offset.

To simplify, let's take an example: Client A sends a packet to the server, server then sends this packet to the Client B. Client B needs to know who many seconds ago Client A sent the packet.

There are two stages: first the server needs to know how many seconds ago Client A sent the packet, let's call it DelayA; second Client B needs to know how many seconds ago the server sent the packet (DelayB), as well, as DelayA.

I assume I can use round trip delay to get both delays. The only issue is that I am using unreliable packets, meaning that I do not get acknowledgments. This means I do not get round trip delays. Is there a way around it?

What I plan to do is, to open the communications on three channels. Channel 0 will be used to send unreliable packets (the actual data). Channel 1 will be used to estimate round trip delays by sending reliable packets from the server to every client every N seconds. Server then sends information about round trip delays about every client to every other client on Channel 2, so that every client could estimate the delay for messages that are received. Of course, I could load the server by modifying actual packets that are transmitted to the clients to include DelayA, and DelayB will be measured directly by the clients.

Any suggestions are welcome. Maybe there is already existing implementation to this situation?

Thanks a lot,
Alexander
_______________________________________________
ENet-discuss mailing list
[email protected]
http://lists.cubik.org/mailman/listinfo/enet-discuss

Reply via email to