Saat ini saya sedang mengerjakan platformer 2D berbasis ubin yang mirip dengan Terraria dalam beberapa hal, meskipun saya mengalami kesulitan dengan generasi terain. Saya memiliki beberapa dasar yang dilakukan, meskipun mereka tidak keluar sebagai sesuatu yang bermanfaat.
Saya telah mencoba beberapa teknik berbeda seperti Perlin Noise dan membaca tentang beberapa yang lain seperti Midpoint Displacement, walaupun saya tidak yakin mana yang terbaik, atau kombinasi teknik yang berbeda untuk menghasilkan area yang berbeda. (Seperti Pemindahan Titik Tengah untuk bentuk umum medan dan Perlin Noise untuk gua-gua.)
Saya telah menemukan penjelasan yang sangat bagus tentang bagaimana saya bisa melapisinya dengan Perpustakaan Kebisingan Kebetulan , meskipun dalam C ++, dan saya tidak tahu cukup C ++ untuk mengkompilasinya menjadi DLL yang dapat saya gunakan dari C #. Saya telah mencoba menyalin ini dalam C #, walaupun, saya tidak tahu bagaimana saya bisa menggabungkan dua efek bersama (gradien untuk basis umum, dan kemudian fraktal untuk detail).
Saat ini saya menggunakan Fraktal Plasma dan hasilnya sangat bervariasi. Misalnya dapat menghasilkan medan di mana hampir tidak ada permukaan, atau dapat menghasilkan medan di mana tidak ada permukaan sama sekali.
Contoh peta yang oke, akan lebih baik dengan beberapa perbaikan lagi. (Hitam solid, putih udara):
Dan contoh peta yang mengerikan. (Hitam solid, putih udara):
Pada dasarnya, yang saya tanyakan adalah, apa cara yang lebih baik untuk menghasilkan medan, atau memaksanya untuk memastikan bahwa ada jumlah permukaan yang masuk akal, dengan waktu pembuatan secepat mungkin. Atau, sebagai alternatif, bagaimana saya bisa mencapai hasil yang sama dengan Perpustakaan Kebisingan Kebetulan, tetapi dalam C #.
Setiap contoh akan sangat dihargai.
sumber
Jawaban:
Saya akan mencoba bertahan dengan kebisingan Perlin, tetapi menambahkan bobot pada itu berdasarkan ketinggian, untuk memastikan kepadatan rata-rata pada ketinggian tertentu. Mengutip bagian dari pos Notch di generasi medan Minecraft :
Intinya, Anda mengambil sepotong medan Minecraft. Jadi hasilkan 2D Perlin noise, tetapi timbanglah sehingga apa pun yang berada di atas titik tertentu kemungkinan besar adalah udara, dan apa pun di bawah titik tertentu kemungkinan besar adalah tanah.
Ini akan memberi Anda medan tanah yang baik, dengan beberapa overhang dan fitur menarik, serta beberapa gua dan pulau terapung. (Jika Anda tidak ingin pulau terapung, Anda dapat mengujinya dan menghapusnya secara manual.) Metode ini tidak akan memberi Anda hal-hal seperti terowongan, jadi Anda akan menginginkan metode untuk menambahkannya di generasi setelah medan, seperti berjalan secara acak .
sumber