30.09.2013, 18:50
Myślę, że generacja rzek metodą "góry>morze" jest najlepszą z możliwych.
W swoim własnym generatorze świata generacja rzek działa tak:
1. Główny Random generuje nowy seed, którzy służy do utworzenia nowego Random do generacji rzek
2. Wybierany jest losowy punkt w danym supergrid
3. Sprawdzamy, czy w wybranym punkcie nie ma jeziora/morza/innej rzeki i czy znajduje się na odpowiedniej wysokości, jeśli nie wracamy do punktu 2.
4. Za pomocą A*, gdzie heurystyką jest wysokość schodzimy w dół aż do morza/jeziora/innej rzeki.
5. Jeśli finalna wielkość rzeki jest za mała, wracamy do punktu 2
6. Nanosimy zmiany na mapę
7. Wracamy do punktu 2 jeśli chcemy wygenerować więcej rzek
Metoda taka działa świetnie i jest stosunkowo szybka, zwykle generuje realistycznie wyglądające rzeki. Jedyną wadą jest to, że stosunkowo ciężko jest generować rzeki wykraczające poza dany supergrid, ale w przypadku generacji świata kawałkami 2500X2500 lub 5000X5000 praktycznie nie jest to zauważalne. Naturalnie jest to generacja z myślą o grze MMO, nie nadaje się do gry w której trzeba na bieżąco generować nowy teren (choć istnieje naturalnie możliwość powiększenia świata).
Tu masz przykład (dla większej widoczności zostawiłem włączoną tylko generację heightmapy, biomów podstawowych opartych na wysokości oraz rzek, 2500X2500 wygenerowane w 27 sekund):
W swoim własnym generatorze świata generacja rzek działa tak:
1. Główny Random generuje nowy seed, którzy służy do utworzenia nowego Random do generacji rzek
2. Wybierany jest losowy punkt w danym supergrid
3. Sprawdzamy, czy w wybranym punkcie nie ma jeziora/morza/innej rzeki i czy znajduje się na odpowiedniej wysokości, jeśli nie wracamy do punktu 2.
4. Za pomocą A*, gdzie heurystyką jest wysokość schodzimy w dół aż do morza/jeziora/innej rzeki.
5. Jeśli finalna wielkość rzeki jest za mała, wracamy do punktu 2
6. Nanosimy zmiany na mapę
7. Wracamy do punktu 2 jeśli chcemy wygenerować więcej rzek
Metoda taka działa świetnie i jest stosunkowo szybka, zwykle generuje realistycznie wyglądające rzeki. Jedyną wadą jest to, że stosunkowo ciężko jest generować rzeki wykraczające poza dany supergrid, ale w przypadku generacji świata kawałkami 2500X2500 lub 5000X5000 praktycznie nie jest to zauważalne. Naturalnie jest to generacja z myślą o grze MMO, nie nadaje się do gry w której trzeba na bieżąco generować nowy teren (choć istnieje naturalnie możliwość powiększenia świata).
Tu masz przykład (dla większej widoczności zostawiłem włączoną tylko generację heightmapy, biomów podstawowych opartych na wysokości oraz rzek, 2500X2500 wygenerowane w 27 sekund):