Nie znam się na programowaniu sieciowym, więc mogę wspomóc jedynie ogólnymi wskazówkami.
Ale najpierw muszę pogratulować: zadałeś trafne i przemyślane pytanie, widać że myślałeś nad problemem i starałeś się znaleźć własne rozwiązanie. Za to ode mnie dostałeś .
Jak pisze furas, "Podobno FPS używają UDP".
Tak być powinno - kiedy mamy coś kosztownego czasowo wykonywać w pętli czasu rzeczywistego, to nie ma wyjścia: należy spuścić głowę i uprościć model.
Fizyka w grach jest oparta na uproszczonych algorytmach, żeby tylko nadążyć za renderowaniem... Więc przesyłanie danych przez sieć, które to przesyłanie jest wąskim gardłem, należy maksymalnie uprościć: a wyrzucenie kontroli dotarcia pakietów jest pierwszym do tego krokiem. Jeśli oglądasz filmy na YT, nie zauważasz nawet, jeśli jakaś ramka została opuszczona. ;)
Co do logiki przesyłania danych: powinno się to odbywać również na zasadzie minimalizmu, tak nakazuje zdrowy rozsądek. Wysyłaj małe porcje danych - jeśli jakąś zgubisz, to trudno. Jeśli zaś miałbyś zgubić za jednym razem cały wór danych, to wtedy jest gorzej, co nie? ;)
I oczywiście przesyłaj tylko to, co jest potrzebne. Powinieneś rozgraniczyć aplikację kliencką i serwerową (grałeś kiedyś w CS'a? ;) - obliczenia SI wykonuje tylko serwer, po czym wysyła dane uaktualniające do klientów.
Chyba że jesteś na tyle ogarnięty, że poradzisz sobie z rozproszonym zarządzaniem obliczeniami na potrzeby SI... ;)
Pozdrawiam i życzę sukcesu z Twoim projektem! :)