To pytanie jest trochę trudne, ale postaram się wyjaśnić.
Powiedzmy, że tworzę grę online (nie w skali MMO), ale która obsługuje jak najwięcej graczy, w sposób autorytatywny. Chcę naprawdę dużych światów z dużą ilością symulowanych wrogów AI.
Jestem świadomy kilku strategii oszczędzania procesora serwera, dzieląc przestrzeń i nie przetwarzając tego, co nie wymaga przetwarzania. Już podzieliłem świat na regiony, które będą wymagały czasu ładowania i małych przejść, co moim zdaniem jest ważne, aby utrzymać jakość gry podczas gry lokalnej (samemu lub nawet z kilkoma przyjaciółmi). Nie oczekuję, że gracze będą w więcej niż jednym lub dwóch regionach.
Problem polega na tym, że region może stać się całkiem duży i jednocześnie symulować wielu NPC. Jak sobie z tym poradzić bez wpływu na doświadczenie graczy? Podejścia takie jak jeden serwer na region i podobne nie są w tabeli.
Szukam głównie struktur danych do przechowywania hord wrogów, a nawet pokojowych NPC. Aby zakończyć pytanie, należy pamiętać, że istnieją pojazdy, dlatego ich podróżowanie w obrębie regionu jest bardzo szybkie, co wpływa na to, kiedy „zabić” obszary.
Odpowiedzi:
Z tego, co rozumiem, będziesz mieć jakąś fizykę działającą na twoim serwerze.
W takim przypadku istnieją również inne techniki sztucznej inteligencji / fizyki inne niż podział przestrzeni kosmicznej. Od większości do mniej oczywistych:
Po wdrożeniu tych mechanizmów możesz zdecydować, ile i jak często ich potrzebujesz. Wspaniałą rzeczą jest to, że później możesz dodać kilka serwerów, które będą mogły przejąć niektóre zadania zamiast aplikacji klienckich.
Oczywiście przybliżone wykrywanie kolizji spowoduje pewne aberracje, ale będziesz w stanie je rozwiązać, dodając od czasu do czasu większą precyzję.
Także jeśli chodzi o fizykę, powinieneś rzucić okiem na biblioteki lib, które obsługują jakiś system GPGPU, taki jak OpenCL lub CUDA, jeśli masz dostęp do serwera, który obsługuje którykolwiek z nich.
źródło