Generowanie Świata

Ostrzeżenie

Ta dokumentacja została napisana dla SpongeAPI 7 i możliwe, że jest już przestarzała. Jeśli masz ochotę wspomóc w jej aktualizacji, prosimy, utwórz PR!

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.

GenerationPopulators 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 GenerationPopulators 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 GenerationPopulators 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 GenerationPopulators. 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 GenerationPopulators.

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.