Pytanie:
Ile danych zajmie świat 12550824 x 12550824 w grze Minecraft?
Phoenix
2020-04-21 00:58:31 UTC
view on stackexchange narkive permalink

Chciałbym wiedzieć, ile miejsca na dysku będę potrzebować do takiego świata w Minecrafcie.Będzie on przechowywany na USB, na którym pozostało 3,12 GB wolnego miejsca.To jest dla serwera Minecraft.Ten świat byłby wielkości zwykłego Minecrafta, z wyłączeniem nieistniejących Dalekich Krain.

Czy po prostu próbujesz udać się na dalekie krainy?Ponieważ nie stworzyłoby to świata 12550824 x 12550824.
Nie, jest to tylko odniesienie, ponieważ świat ma 12,2, migrował do klienta Minecraft 15,2.Ponieważ dalekie krainy zostały usunięte, użyłem maksymalnego świata w 1.8, zanim dalekie lądy jako odniesienia.
@Phoenix Jeśli jest to aktualizacja poprzedniego świata, powinieneś wiedzieć, jaki jest już duży, klikając prawym przyciskiem myszy folder świata i mówiąc „Właściwości”.
Nie rozszerzyłem go jeszcze ** **.Dlatego zapytałem, bo nie wiedziałem, a obecny świat nie jest kwadratem i nie do końca zbadany.
Jeśli twój obecny świat nie jest w pełni zbadany, ulepszenie go nie sprawi, że zostanie on w pełni zbadany ...
Planowałem użyć do tego MLG.
Pięć odpowiedzi:
l0b0
2020-04-21 07:35:55 UTC
view on stackexchange narkive permalink

Czy próbujesz zbudować Ziemię (w rzeczywistości ma to około 22584607 na 22584607 metrów powierzchni, około 3,2 razy więcej niż pytasz)?Cóż, wysokość bloku może przyjmować 256 wartości, a każdy blok zajmuje maksymalnie ~ 2,5 bajta, więc jest to 12550824 * 12550824 * 256 * 2,5 = 100 814 837 170 54640 bajtów, czyli 100 815 000 GB,aka 101 petabajtów.Będziesz potrzebował większego dysku;)

Kompresja może to nieco zmniejszyć, ale w dużym stopniu zależy od złożoności świata.Więc jeśli twój świat nie jest ultracienki, prawdopodobnie nadal będzie to petabajt lub więcej.

Czy uwzględniłeś kompresję?Wspomniano o tym w linku.
Nie jestem pewien, jak to dokładnie działa, ale jeśli _I_ miałbym stworzyć Minecrafta (i mam powód, by wierzyć, że ludzie pracujący nad Minecraftem mogą wiedzieć, co robią lepiej niż ja), to zapisałbym tylko fragmenty, które uległy zmianieponieważ zostały wygenerowane przez algorytm generowania terenu.W takim przypadku całkowity rozmiar mapy nie ma znaczenia, tylko ile zmieniłeś mapę.
@Turksarama Musiałbyś (ponownie) generować miliony bloków na sekundę, gdy użytkownik się przemieszczał, co byłoby powolne i kosztowne.Jestem prawie pewien, że obecne rozwiązanie jest bliskie optymalnego.
Gdy tylko kawałek zostanie wygenerowany, byty zaczynają się w nim poruszać, lawa i woda zaczynają płynąć, bambus i trzcina cukrowa zaczynają rosnąć, dzieje się wiele innych rzeczy, więc cały czas są zmiany w kawałku.Co oznacza, że fragment musi zostać zapisany;po prostu nie ma żadnych nieskazitelnie wygenerowanych fragmentów w Minecrafcie.
Mimo że wysokość bloku wynosi 256, kawałek jest dzielony na 16 części w pionie, a części całkowicie wypełnione powietrzem nie są przechowywane.Używasz również przestarzałej liczby 2,5 bajtów na blok, ponieważ nowsze wersje Minecrafta używają systemu opartego na "palecie / indeksie", w którym masz paletę bloków na 16x16x16, co oznacza, że przestrzeń zajmowana przez blok jest znacznie zmniejszona.(4-5 bitów na blok jest typowy, z kilkoma kolcami do skrzyń i innymi zaawansowanymi blokami).Musisz również wziąć pod uwagę, że przechowywanie palety zajmuje miejsce
Ponadto, jeśli próbujesz zbudować Ziemię, jak spekuluje ta odpowiedź, generowany proceduralnie fragment prawie nigdy nie jest tym, czego chcesz.
Nie próbuję budować Ziemi.Ale czy obecny rozmiar, powiedzmy, 101 PT, ma wpływ na kompresję używaną przez Minecraft, jak wspomniano w odpowiedzi w linku?Użyj średniej kompresji na zupełnie normalnym świecie generowanym przez Minecrafta, plus trochę sztucznej konstrukcji (drewniany dom z łóżkiem i skrzynią).
-1
Nie sądzę, aby próba uzyskania większej dokładności była pomocna.@Phoenix zapytał o 3 GB, a odpowiedź jest wyraźnie oddalona o kilka wielkości.
@Phoenix Tak, fragment zawiera listę jednostek w tym fragmencie, a podczas zapisywania fragmentu ta lista również zostanie zapisana.Każdy z plików regionu (w world / regiony / r.X.Y.mca) ma macierz składającą się z fragmentów 32x32, a każdy z nich jest indywidualnie kompresowany w tym pliku.
@phoenix Nawet przy najbardziej zdumiewającym ze wszystkich współczynników kompresji, powiedzmy 90%, będzie to daleko poza normalną ligą komputerów.Realistycznie można uzyskać tablicę o pojemności 100 TB za nie absurdalną cenę (a wciąż mówimy tutaj o tysiącach dolarów) (16x 8 TB), a to nawet nie wpłynęłoby na wymagane kwoty.
Z mojego doświadczenia wynika, że większość fragmentów w Minecrafcie ma zwykle 8 lub 12 KiB po skompresowaniu (format pliku Anvil dzieli fragmenty na wielokrotność 4096 bajtów, aby poprawić wydajność dostępu do dysku).Oznaczałoby to wielkość świata około 2 PB.
Przechowywanie 1PB przez rok kosztuje około 400 tysięcy dolarów.To ** milion dolarów ** na uruchomienie tego serwera przez rok.
@l0b0 ktoś z terabajtami pamięci może mieć podobne pytanie, natknąć się na to i bardzo mu pomoże jednoznaczna odpowiedź, że nie, kilka terabajtów też nie wystarczy, nawet biorąc pod uwagę wszystkie rodzaje kompresji
Guntram Blohm supports Monica
2020-04-21 15:09:42 UTC
view on stackexchange narkive permalink

Ponieważ w istniejących odpowiedziach można się tylko domyślać o kompresji, oszacowałem zapotrzebowanie na miejsce z istniejącego serwera. Ten serwer ma świat 60kx60k (od -30000 do +30000 każdy X i Z), który jest generowany w około 50% i który potrzebuje 28 GB.

Załóżmy, że potrzebuje w pełni wygenerowanych 56 GB.

Twój świat ma ~ 210 razy większy rozmiar w X ORAZ Z, a więc 44 100 razy większy. 44 100 * 56 GB daje 24 696 000, a więc nieco mniej niż 25 000 TB, czyli 25 PB.

Jest to o wiele więcej niż osiągalne na standardowym komputerze, ale jeśli zbudujesz superkomputer, będzie on bardzo łatwo dostępny. IBM Summit ma dziesięć razy więcej, a to prawdziwa okazja za 200 milionów dolarów.

Teraz sprawdźmy, ile czasu potrzebujesz, aby wygenerować świat. Na moim Ryzenie 7 3800X za pomocą WorldBorder mogę wygenerować ok. 200 kawałków na sekundę. Twój świat ma (12550284²) / (16²) ~ 6,1 * 10¹¹ fragmentów. To daje 30 bilionów sekund, czyli 35606 dni. Wow, zaledwie 100 lat na zapełnienie Twojego świata po zmontowaniu komputera do przechowywania danych i rozpoczęciu procesu generowania.

Oczywiście w superkomputerze prawdopodobnie będzie więcej niż jeden procesor. Załóżmy, że masz 64 rdzenie, skonfiguruj 64 instancje gry Minecraft i pozwól każdemu z nich wygenerować część świata. Zakładając, że procesory są szybsze od mojego, może to dać współczynnik 100. Twój świat może zostać ukończony w ciągu zaledwie 1 roku!

Po prostu robię matematykę w mojej głowie ... ~ 10 ^ 7 / ~ 10 ^ 4 ~ 10 ^ 3.10 ^ 3 ^ 2 = 10 ^ 6.Tak więc dana mapa jest z grubsza milion razy większa niż Twój istniejący serwer, a nie 440 razy.Myślę, że oryginalny świat pomyliłeś o rząd wielkości.
Doh, masz rację.Kiedy pisałem swoją odpowiedź, na ekranie pojawiła się odpowiedź Odda, w której brakuje cyfry, a nie oryginalny post.
Więc to znaczy, że gdybym teleportował się do nieistniejących już Dalekich krain, byłby on niesamowicie wolny na zwykłym komputerze z Intel i5?
Nie, ponieważ generowane są tylko te fragmenty, które faktycznie odwiedzasz;teleportowanie się w dowolne miejsce tworzy fragmenty wokół miejsca, do którego się teleportowałeś, a nie cały świat między spawnem a tym miejscem.
Duże superkomputery mają dziesiątki tysięcy mikroprocesorów, więc można sobie wyobrazić, że można wygenerować świat w jeden dzień, biorąc pod uwagę, że reszta analizy jest rozsądna.
100 000 USD za 1 PB pamięci masowej;https://www.youtube.com/watch?v=C2uLSOmRx_c, więc 25 PB powinno być osiągalne za niewiele więcej niż 3 mln USD.(Oczywiście brak superkomputera zaszkodzi, jeśli chodzi o wypełnianie danych)
Teraz koszt energii elektrycznej ...
Wykorzystanie superkomputera (Tianhe-1A to ~ 4MW na godzinę, czyli 400 USD na godzinę przy 10 centach / kWh, co w ciągu dnia daje 9600 USD)?
@Phoenix: Odkładając na bok żarty na temat superkomputerów, prawdopodobnie taniej byłoby zaprojektować lepszy system logiczny, który skuteczniej osiągnie cel.Chodzi mi o to, że wątpię, aby twoim celem było faktycznie _ przechowywanie_ tak ogromnego świata, ponieważ te same problemy z przechowywaniem / generowaniem go dotyczą obserwowania go.
Myślę, że ta odpowiedź jest znacznie lepsza od akceptowanej, ponieważ opiera się na danych z prawdziwego serwera Minecraft, a nie tylko na szacunkach opartych na liczbach teoretycznych.
Nie potrzebujesz superkomputera, ale potrzebujesz normalnego komputera z podłączonymi do niego milionami dysków twardych.Zasadniczo potrzebujesz 50 [tych serwerów] (https://www.backblaze.com/blog/open-source-data-storage-server/), które prawdopodobnie zajmą 2 lub 3 szafy.I mnóstwo pieniędzy.
(ale nie potrzebujesz tego, aby udać się w dalekie krainy)
Pharap
2020-04-23 01:34:33 UTC
view on stackexchange narkive permalink

W odniesieniu do głównego pytania „Ile bajtów wymagałby świat tej wielkości?”

Odpowiedź na to pytanie różni się w zależności od wersji Minecrafta, rodzaju stosowanej kompresji i specyfiki tworzonego świata, a zatem nie można uzyskać nic więcej niż figurkę boiska.


Jeśli chodzi o drugorzędne pytanie „Czy mogę zmieścić świat tej wielkości w 3 GB pozostałych na mojej pamięci USB”, Chciałbym pokazać inny sposób udowodnienia, że ​​3 GB nie jest wystarczająco blisko, używając praktycznego przykładu i kilku fikcyjnych założeń, aby matematyka była nieco bardziej atrakcyjna.

Załóżmy, że:

  • 1 kawałek = 16x16x256 bloków
  • 1 porcja wymaga 1 bajtu
    • To prawdopodobnie dużo więcej, to uproszczenie

W takim przypadku pojawia się pytanie, ile bajtów potrzebujesz, aby zapisać świat 12550824 * 12550824 ...

  • 12550824/16 to 784426.5
    • Liczba porcji wzdłuż każdego wymiaru
  • 784426.5 * 784426.5 to 615324933902,25 bajtów
    • Liczba wszystkich fragmentów, a tym samym liczba bajtów potrzebnych do przechowywania tych fragmentów, przy założeniu 1 bajta na porcję
  • 615324933902.25 / 1024 to 600903255.763916015625 KB
  • 600903255.763916015625 / 1024 to 586819.5857069492340087890625 GB
  • 586819.5857069492340087890625/1024 to 573.06600166694261133670806884766 TB
    • Łączna liczba terabajtów, na tym koniec, ponieważ jest mniejsza niż 1 petabajt

~ 574 terabajtów wartości fikcyjnych 1-bajtowych fragmentów.

Zakładając więc, że 1 kawałek może być magicznie przechowywany w jednym bajcie (wyczyn, który jest, o ile wiem, niemożliwy), już patrzysz na terabajty informacji. W rzeczywistości fragmenty niewątpliwie wymagałyby czegoś więcej niż tylko jednego bajtu informacji, więc łatwo byłoby spojrzeć na więcej niż tylko kilka terabajtów.

Dlatego odpowiedź brzmi „Nawet nie blisko”.Zmniejsz swój świat lub kup większą pamięć USB.

„[O] r zdobądź większą pamięć USB”.Racja, muszę znaleźć mój klucz flash 1PB ... Wiesz, gdzie mogę go kupić, jeśli nie mogę go znaleźć?
@Himitsu_no_Yami Jeśli masz wystarczająco dużo pieniędzy, może wystarczyć dom pełen dysków SSD o pojemności 32 TB podłączonych do serwerów.(Nie wspominając o rachunku za energię i ciekłym azocie potrzebnym do utrzymania odpowiedniej temperatury).
Ale to już nie jest pamięć USB
@Himitsu_no_Yami Tak jest, jeśli budujesz dom w kształcie pamięci USB.Ale już robią [pendrive'y w kształcie domu] (https://ae01.alicdn.com/kf/HTB1ZXEcpQSWBuNjSszdq6zeSpXaN/Wooden-Mini-House-Shape-USB-Flash-Drive-4G-8G-U-Disk-16G-32G-Us2-0-PenDrive.jpg), więc na pewno nikt nie znałby różnicy, gdybyś po prostu wetknął kabel USB z boku domu.
Odd
2020-04-21 07:47:37 UTC
view on stackexchange narkive permalink

W porządku, więc ... masz 1255084 x 1255084 bloki x 256 (pozostałe bloki powietrza lub inny blok, który chcesz umieścić) i pomnóż.otrzymasz 4,0326038e + 15.zakładając, że każdy blok jest bajtem, masz 4.0326038e + 15 bajtów, czyli DUŻO więcej niż 3 GB.więc możesz rozważyć mniejszy świat.Najlepsze pendrive'y USB sprzedane w tej chwili przy takiej ilości danych kosztują setki dolarów.

To nie 1255084, ale 125508 ** 2 ** 4 - brakuje ci cyfry.Więc możesz trochę się przespać;)
więc technicznie byłoby to prawie dziesięć razy więcej niż moja poprzednia odpowiedź.to dużo bajtów
w rzeczywistości prawie sto razy.również, cześć @Odd, czy nie masz jeszcze uprawnień do edytowania własnej odpowiedzi?
mogę edytować swoją odpowiedź, ale jest to tylko 10 razy więcej danych niż moje poprzednie błędne obliczenia
TheHansinator
2020-04-23 21:31:14 UTC
view on stackexchange narkive permalink

Jak podały inne odpowiedzi, w pełni wygenerowany świat 12550824 x 12550824 może zająć do 12550824 x 12550824 x 256 x 2,5 bajtów = 1,00815e + 17 bajtów lub 101 PB. Jeśli chcemy być hojni i zakładamy, że duże fragmenty bloków powietrza nie są przechowywane, prawdopodobnie możemy zmniejszyć efektywną wysokość do 128 bloków, uzyskując 50,5 petabajtów. Jednak twój świat zajmie tyle miejsca tylko wtedy, gdy każdy pojedynczy fragment w tej przestrzeni zostanie zaobserwowany przez gracza.

Jeśli zamiast tego spawnujesz o (0, 0) i natychmiast teleportujesz się do (12550824, 12550824) ( / tp 12550824 ~ 12550824 ), zamiast tego wygenerujesz tylko fragmenty bezpośrednio wokół (0, 0) i (12550824, 12550824). Jeśli odległość renderowania wynosi 32 fragmenty, oznacza to, że zostanie wygenerowanych około 32 x 32 x 2 = 2048 fragmentów. Daje to w sumie 134.217.728 bloków, do 335.544.320 bajtów, lub 335 MB - dobrze w granicach twojego dysku USB. Żaden z pozostałych fragmentów, ani między dwoma punktami teleportacji, ani nigdzie indziej w tych kwadratowych granicach, nie istnieje - nigdy ich nie widziałeś, więc dlaczego silnik miałby mieć problem z ich wygenerowaniem?

Rozważmy teraz przypadek, w którym zamiast teleportować się, po prostu walk na wschód, aż dotrzesz do (12550824, 0) . Zasadniczo wygeneruje to prostą linię kawałków wokół ciebie, sięgającą do 32 fragmentów (lub 1024 bloków) po obu stronach linii, plus 1024 bloki za punktem początkowym i 1024 bloki przed punktem końcowym. Oznacza to, że zostanie wygenerowany prostokątny pryzmat o wymiarach (12550824 + 2048) x 2048 x 256 = 6,581,320,155,136 bloków lub do 16.453.300.387.840 bajtów lub 16,5 TB. Wciąż za duży na pamięć USB, ale niewielka kompresja prawdopodobnie pozwoliłaby uzyskać mniej niż 16 TB, a dobrej jakości dyski twarde o pojemności 16 TB można kupić za mniej niż 500 USD.

Rozważmy możliwość teleportacji za pomocą metod innych niż polecenia - za pomocą portali Nether. Każdy blok w dół w Netherze odpowiada 8 długościom w Overworld, więc jeśli budujesz portal do Netheru w (0, 0), pójdziesz na wschód do (1568853, 0) i zbudujesz tam kolejny portal do Netheru, pojawi się się na (12550824, 0) w Overworld. Nether wygeneruje prostokąt fragmentów, jak w poprzednim akapicie, chociaż ten prostokąt będzie ośmiokrotnie mniejszy: (1568853 + 2048) x 2048 x 256 = 823 604 543 488 bloków, czyli 2,06 TB. Jednak w Overworld przestrzeń między dwoma portalami nie zostanie wygenerowana , a otrzymasz dwie wyspy fragmentów opisane w przypadku / tp - tylko 335 MB, co utrzymuje efektywne dane ogółem w 2.06 TB. Niewielka kompresja pozwoli uzyskać mniej niż 2 TB, a dyski 2 TB są jeszcze bardziej przystępne, a dobrej jakości dyski kosztują niewiele ponad 50 USD.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 4.0, w ramach której jest rozpowszechniana.
Loading...