Skocz do zawartości

Sposób przechowywania map


Stelma

Polecane posty

Witam,

 

Jeżeli zły dział to przepraszam ale nie wiedziałem gdzie go wrzucić. Bo nie chodzi mi o konkretny kod, a raczej jedynie o dyskusje.

 

Lubie różne rozkminy zupełnie nikomu nie potrzebne i ostatnio naszła mnie pewna i szpiesze do was z prośbą o doradzenie :P

 

Załóżmy że mamy świat 2D niech będzie średnich rozmiarów. 60.000 x 60.000 i na każdym kafelku niech się da położyć 255 przedmiotów. czyli było by to 60.000 x 60.000 x 255 łącznie 918.000.000.000. Robi się dość mocno dla pamięci komputera. Nawet zakładając że w mapie przechowuje jedynie unikatowy identyfikator "kafelka".

 

I teraz w czym problem. A no w tym że chciałbym wykminić sposób jak przechowywać takie kolosy, a jednocześnie utrzymać krótki czas dostępu do danych. Oczywiście dla gry typu single player nie ma problemu bo program doczytuje jedynie określony obszar wokół gracza, a reszta leży spokojnie na dysku. Ale jak już napisałem ja lubię komplikować sobie życie i zakładam że leżało by to na serwerze. Oczywistym jest że nie każdy kafel będzie zapełniony także można by bylo uszczuplić mape przechowując jedynie elementy "istniejące" w posortowanej tablicy dynamicznej. Ale tu przychodzi pytanie czy to nie będzie za wolne dla x graczy ?

 

Btw. Jeżeli ktoś posiada wiedzę na temat dobrze rozwiązanych takich problemów z dużymi mapami to zapraszam do wyjaśnienia mi w jaki sposób serwery np. WoW'a potrafią przechowywać ogromne mapy dla kilku tysięcy graczy w trybie online i jeszcze nie mają kosmicznych wymagań.

 

 

Link do komentarza
Udostępnij na innych stronach

  • 4 months later...

Mapa 60kx60k w postaci tilowej to okolo 3,5GB ramu aby trzymac ja na stale w pamieci. Na standardy serwerowe to zaden dramat. Ale MMO raczej nie robi sie na jednej maszynie tylko na klastrze. Co wiecej mozna swiat podzielic na mniejsze sekcje i rozdzielic obsluge kazdej z sekcji na rozne serwery.

 

Pozatym nie ma obowiazku w mapie 60k x 60k ustawiania tilesa dla kazdego pola. Mozna powiedzmy ustalic jakies Master Nody powiedzmy co 10x10 tilesow i tylko im nadac wartosci. Natomiast wszystko pomiecy tymi nodami robic przez aproksymacje/interpolacje/filla czy inna acje. i wtedy pamieciozernosc spada ci diametralnie. Pozatym serwer nie musi wcale miec wizualizacji. To klient ma ta cala grafike itd. Serwer musi miec mape kolizji + pozycje graczy i itemow. Nawet jak na serwie jest 80 mln ludzi online to powiedzmy to zajmuje 800MB danych. Koszt pamieciowy jest pomijalny.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...