Użyj filtrowania obszaru zainteresowania. Jeśli świat jest podzielony na 3 serwery, a obszar na serwerze 1 nie znajduje się w pobliżu obszaru serwera 3, nie ma powodu, aby dzielili się informacjami o bytach.
Podobnie, na jednym serwerze, wysyłaj tylko odpowiednie informacje do klientów. Jeśli gracz A znajduje się na przeciwległym końcu mapy od gracza B, nie ma powodu, aby przesyłać informacje o B do A lub odwrotnie.
Gdy masz wiele serwerów w ciągłym świecie, będziesz mieć jednostki blisko krawędzi na serwerze 2, które są blisko jednostek na serwerze 1. Możesz wysyłać aktualizacje z serwera „autorytatywnego” dla jednostki na inny serwer (w razie potrzeby) , a także odpowiednio przekazywać wszelkie wiadomości do wiarygodnego serwera.
Tak, w takim przypadku jeden serwer będzie nieco nieaktualny dla poszczególnych podmiotów. Nie próbuj tego rozwiązywać. Licz sie z tym. Załóżmy, że podmioty mogą być nieco nieaktualne. Wykonuj dowolną logikę, która wymaga aktualnych informacji tylko na serwerze, który jest autorytatywnym właścicielem jednostek. Kiedy jednostka wpływa na inną, wyślij wiadomość i załóż, że może potrwać wiele tyknięć logiki gry, zanim zostanie przetworzona i twój widok się zaktualizuje.
Taka konstrukcja znacznie ułatwia wątkowanie pojedynczego serwera. Żaden podmiot nie powinien bezpośrednio modyfikować innego, tylko wysyłać wiadomości, a lokalne pamięci podręczne proxy na serwer / wątek powinny być nieco nieaktualne.
Na przykład, jeśli jednostka A atakuje jednostkę B, nie sprawdzaj żywotności B, a następnie wyślij wiadomość o śmierci, jeśli osiągnie 0. Po prostu wyślij wiadomość „uszkodzoną”, pozwól, aby serwer autorytatywny dla B zajął się nią, a następnie dowolną komunikat „byt umarł” wysłany później przez serwer B, jeśli bytu A to obchodzi.
To samo dotyczy każdej dużej, skalowalnej aplikacji innej niż gry. Centralna baza danych nie jest magiczną technologią natychmiastowego udostępniania. Dwa serwery muszą komunikować się z komunikatami, asynchronicznie, partiami, aby zachować wysoką przepustowość. Stąd popularność technologii takich jak AMPQ i tym podobne. Bazy danych służą do przechowywania i wsparcia synchronizacji z konieczności, umożliwiając ich wykorzystanie do komunikacji, a nie dlatego, że same są przeznaczone do synchronizacji lub komunikacji.