Zamiast tego możesz użyć bazy danych - PostgreSQL ma pewne specjalne możliwości indeksowania zoptymalizowane dla tego typu danych, które są zlokalizowane za pomocą współrzędnych X i Y. Możesz również określić, że zwracane dane mieszczą się w określonym promieniu, a nie w obszarze o kształcie kwadratu lub podłużnego.
PostgreSQL (darmowy i open source)
http://www.postgresql.org/
Istnieją również inne bazy danych, a po stronie klienta może się okazać, że niektóre typy będą lepiej do tego dostosowane, ponieważ mogą one działać autonomicznie (inicjowane przez aplikację klienta gry) lub mogą być włączone jako część biblioteki kodów którego możesz „po prostu użyć”. Zaletą jest to, że nie trzeba projektować schematu indeksowania, ponieważ większość silników baz danych SQL już to robi całkiem dobrze.
Zaletą podejścia opartego na bazie danych jest to, że możesz zmniejszyć swoje fragmenty (lub całkowicie się ich pozbyć i po prostu bezpośrednio użyć kafelków, ale użycie co najmniej małych fragmentów / grup wielu kafelków może być bardziej wydajne w zależności od projektu), a następnie użyj zapytania SQL, aby wprowadzić większy obszar niż jest widoczny. Kafelki można przygotować wcześniej, ładując wstępnie tak, aby zachodziły na nie widoczne obszary gracz poruszy swoją postacią, co zapewni lepszą (miejmy nadzieję płynniejszą) rozgrywkę.
Zauważyłem, że niektóre gry przechowują „pamięć podręczną” danych mapy na lokalnym dysku twardym po ich uzyskaniu za pierwszym razem (niewątpliwie ma to na celu zmniejszenie liczby operacji we / wy w sieci), takich jak Ashen Empires:
Ashen Empires (darmowa gra, piękna implementacja 2D)
http://www.ashenempires.com/
Pomocne będzie również śledzenie znaczników czasu „ostatniej aktualizacji” dla każdego fragmentu / kafelka, ponieważ tam, gdzie dostępne są lokalnie przechowywane dane, zapytanie SQL może zawierać dodatkową klauzulę „GDZIE kolumna znacznika czasu> $ local_timestamp”, dzięki czemu tylko zaktualizowane fragmenty / kafelki otrzymają pobrane (dwie zalety oszczędzania przepustowości, takie jak to, to niższe koszty łączności i mniejsze opóźnienie dla graczy, co stanie się bardziej oczywiste, gdy twoja gra stanie się popularna).
Zrzut ekranu z Ashen Empires (kilka postaci znajduje się w lokalnym banku, a po wyglądzie tych kości na podłodze wygląda na to, że kilka szkieletowych potworów musiało wejść i prawdopodobnie zostało zabitych przez strażników miejscowego miasta):