Hi there,

In my opinion you will never get the clients running exactly the same time as the server does. And I don't see the need to run all PCs exactly the same tick.

The server can not send sync packets to many clients the same time and you can not assure that all packets have the same delivery time. It's like a highway where the cars are the data-packets. Not all cars can reach their destination the same time (ok, we're talking about nanoseconds here )

So all you could do is something like that:

- start server application
- spread start message to all clients
- do your thing

If the start message is spread and every client has got it, this is the time where the clients should start working. Because otherwise the first client would start while other clients are still waiting for the start message.

So I would do it like this:

As you said before, try to find a good time value for delivery of the packet.
Then send the start message (I would send a delaytime in the packet) to each client and the delay time should decrease with each client.

for i := AmountOfClients downto 1 do
SendStartMessage(Delaytime * i, ClientIP[i], ClientPort);

Something like this...

By the way, the UDP-protocol has no guaranteed delivery implemented. So what do you do if packets do not reach their destination? Put a thought on using another protocol.

Regards,
Dirk