Generowanie Świata
Generowanie świata w grze Minecraft jest skomplikowanym procesem, a Sponge dodaje również swoje własne komplikacje. Tutaj przedstawiamy podstawowy przegląd tego, jak to działa dla zainteresowanego czytelnika. Możesz pominąć to i przejść bezpośrednio do szczegółów interfejsu API pod adresem:
Omówienie generacji świata w Minecraft
Generacja światowa w grze Minecraft opiera się na fragmentach. Za każdym razem, gdy gra wymaga kawałka, który jeszcze nie istnieje, generowana jest prośba do generatora świata o dostarczenie tego kawałka. Proces dostarczania tej porcji podzielony jest na dwie odrębne fazy o nazwie Generacja i Populacja.
Faza generowania
Pierwszym etapem dostarczania porcji jest Faza Generowania. Jest to głównie odpowiedzialne za stworzenie podstawowego kształtu terenu, generowanie biomów i większych elementów, takich jak wioski i jaskinie.
Informacja
Umieszczenie bloku w fazie generowania odbywa się całkowicie w buforze, ponieważ obiekt Chunk nie jest tworzony aż do ostatniego kroku w fazie.
Pierwszym krokiem jest, aby generator biomów wypełnił 2d biome bufor biomami, które będą odpowiadały każdej kolumnie 1x1 w kawałku. Następnie baza :javadoc:`Wypełniacz generacji` tworzy podstawowy kształt terenu. Na tym etapie świat jest w całości wykonany z kamienia. Domyślne generowanie to po prostu mapa wysokości generowana z szumu perlin, a następnie wypełnia - pozostawiając powietrze, jeżeli jest większe niż poziom morza i wody, jeśli jest poniżej. Ten krok może być zastąpiony, wywołując :javadoc: Generator świata# setBaseGenerationPopulator (Wypełniacz generacji), aby dostarczyć własnego niestandardowego wypełniacza do generatora świata.
Następnie, korzystając z buforu biome utworzonego powyżej, generator zastępuje górne warstwy terenu za pomocą :javadoc: stan bloku s i głębokości określone przez biome :javadoc:`Warstwa pokrywająca ziemię` s. Biomy są dostarczane przez :javadoc:`Generator biomów` - które można również zastosować do generatora światowego za pomocą metody :javadoc:` Generator świata# setBiomeGenerator (Generator biomów) `.
Teraz, kiedy podstawowy teren został wygenerowany i zagruntowany, uruchamiamy :javadoc: Populator generacji s. Są one podzielone na dwie grupy: określone globalnie dla generatora światowego i określone dla określonego biomu. Użyty zestaw `` Populator generacji`` jest związkiem Populator generacji` określonym dla każdego unikalnego biomu w kawałku.
GenerationPopulator
s are designed for large intensive operations, and are applied to the buffer rather than
the (as yet non-existent) Chunk object. This means that there must be the restriction that GenerationPopulator
s may not place
any blocks outside of the confines of the currently generating chunk. Content being generated by a GenerationPopulator
which
spans multiple chunks must generate in pieces using the chunk position and world seed to determine which piece
of the whole goes into the current chunk.
Finally, with the base terrain created, the biomes applied, and the GenerationPopulator
s run, we have
completed the generation phase, and the Chunk object can be constructed and returned.
Faza populacji
The Population Phase can only run on a chunk once the three chunks adjacent to it in the positive x and z directions
are loaded. This allows objects during this phase to expand outside the 16x16 chunk area being populated, without
requiring the partial generation used for GenerationPopulator
s. To support this, the actual area populated
during this phase is a 16x16 area offset by 8 in each of the x and z axes.
Only the Populators of the biome at the position (x*16+16, 0, z*16+16) are applied to this area. It does
not apply a union of all the biomes as is the case for GenerationPopulator
s.
Populators are ideal for small features (e.g. desert wells) and additional terrain covering (e.g. trees). Sponge provides access to a great number of vanilla specified populators which may be reconfigured for your use.