Obecnie pracuję nad opartą na kafelkach platformówką 2D podobną do Terrarii, chociaż mam trudności z generowaniem terenu. Mam pewne podstawy, chociaż nie są one przydatne.
Wypróbowałem kilka różnych technik, takich jak hałas Perlina, i czytałem o innych, takich jak przesunięcie punktu środkowego, chociaż nie jestem pewien, która z nich byłaby najlepsza, ani kombinacja różnych technik generowania różnych obszarów. (Takich jak przesunięcie punktu środkowego dla ogólnego kształtu terenu i hałas Perlina dla jaskiń).
Znalazłem doskonałe wyjaśnienie, w jaki sposób mogę podzielić go za pomocą Accidental Noise Library , chociaż jest on w C ++, i nie znam wystarczającej ilości C ++, aby skompilować go do biblioteki DLL, której mogę używać z C #. Próbowałem skopiować to w C #, chociaż nie wiem, jak mogę połączyć dwa efekty razem (gradient dla ogólnej podstawy, a następnie fraktal dla szczegółów).
Obecnie używam Fractal Plazmy, a wyniki są bardzo zróżnicowane. Na przykład może generować teren, na którym prawie nie ma powierzchni, lub może generować teren, na którym w ogóle nie ma powierzchni.
Przykład lepszej mapy byłby jednak lepszy z kilkoma ulepszeniami. (Czarny jest jednolity, biały to powietrze):
I przykład strasznej mapy. (Czarny jest jednolity, biały to powietrze):
Zasadniczo pytam o to, jaki byłby lepszy sposób generowania terenu lub zmuszania go do upewnienia się, że jest odpowiednia ilość powierzchni, z czasem generowania tak szybko, jak to możliwe. Lub, alternatywnie, w jaki sposób byłbym w stanie osiągnąć taki sam wynik jak Accidental Noise Library, ale w C #.
Wszelkie przykłady byłyby bardzo mile widziane.
źródło
Odpowiedzi:
Spróbowałbym trzymać się szumu Perlina, ale dodając do niego ciężar na podstawie wysokości, aby zapewnić pewną średnią gęstość na pewnych wysokościach. Cytując część wpisu Notcha na temat generowania terenu w Minecraft :
Zasadniczo bierzesz mały kawałek terenu Minecraft. Generuj więc szum Perlina 2D, ale zważ go tak, aby wszystko powyżej pewnego punktu mogło być powietrzem, a wszystko poniżej pewnego punktu prawdopodobnie ziemią.
Zapewni to dobry teren, z kilkoma nawisami i ciekawymi funkcjami, a także niektórymi jaskiniami i pływającymi wyspami. (Jeśli nie chcesz pływających wysp, możesz je przetestować i usunąć je ręcznie.) Ta metoda nie da ci takich rzeczy jak tunele, więc będziesz potrzebować metody dodawania ich po wygenerowaniu terenu, na przykład losowy spacer .
źródło