Skate, yardimci olmasi acisindan: Istemci ve sunucu arasindaki latency'i olcmek icin kendi algoritmani gelistirmektense, Windows TCP/IP stack'inden bu bilgileri isteyebilirsin.
Windows Vista ve Windows Server 2008 ile birlikte gelen yeni nesil TCP/IP stack'i ESTATS olarak da bilinen TCP baglanti tabanli gelismis istatistik destegi getiriyor. Gerekli API'lar iphlpapi'da:
http://msdn2.microsoft.com/en-us/library/bb485738.aspxhttp://msdn2.microsoft.com/en-us/library/bb451840.aspxhttp://msdn2.microsoft.com/en-us/library/bb451854.aspx FINE_RTT diye arat. Bu istatistikler hem smoothed, hem cok granuler, hem de TCP rexmit gibi eventler hesaplarin icinde var. IPHLPAPI'i zaten oyle ya da boyle kullanmak zorunda olacaksin.
Windows 2000, Windows XP ve Windows Server 2003 de benzer ancak daha az granuler istatistikleri (baska API'lar ile) tutuyor. IPHLPAPI'dan aratarak kullanabilirsin.
Problemin cozumu icin IMHO, istemci'lerin karar vermesini kisitlamalisin. Sunucu zamani tick'lere bolmeli (1 tick == 100ms mesela), ve bu tick'ler icinde eline gecen bilgileri degerlendirip oyuncularin tick sonu itibariyle state'lerini butun istemcilere timestamp ile gondermeli. Istemciler "bu timestamp'te burada ise simdi yaklasik olarak surada olmali" gibi varsayimlarda bulunmamali, boylece cok granuler time sync gerekliligi de ortadan kalkar.