Saya memprogram permainan berbasis ubin dan saya memiliki beberapa ubin dasar (rumput, kotoran, dll.), Tapi saya tidak tahu cara membuat generasi peta acak yang baik, karena ketika saya melakukan beberapa pemilihan acak, jika ubin harus rumput / kotoran, saya mendapatkan ini:
Saya mengerti mengapa ini terjadi, tetapi yang saya inginkan adalah membuat beberapa area rumput atau tanah yang acak dan terus menerus. Sesuatu yang lebih masuk akal, seperti ini:
Jawaban:
Yang bisa Anda lakukan adalah membuat peta Voronoi secara acak seperti ini:
center points
(lihat titik-titik hitam) dan secara acak memutuskan apakah itu rumput atau tanah.center point
tanah atau rumput.Jika yang Anda lakukan sebelumnya adalah "melempar koin" untuk setiap ubin (noise), membuat diagram Voronoi akan memberikan hasil yang jauh lebih baik.
Anda dapat meningkatkan ini dengan membagi ke
center points
dalamislands
dengan algoritma yang:centers points
dan tunjuk sebagaileaders
.sumber
center points
. Kemudian putuskan apakah itu rumput atau kotoran. Sekarang lewati array dan putuskan apakah setiap ubin paling dekat dengan titik tanah atau titik rumput. Mungkin beritahu saya bagian mana yang menantang?Anda bisa menggunakan perlin noise, yang biasanya digunakan untuk pembuatan peta ketinggian. Perlin noise dalam game
Kemudian Anda bisa menggunakan ketinggian sebagai penasihat, seberapa tinggi kemungkinan rumput / kotoran terjadi di satu wilayah peta.
Contoh (Nilai kebisingan Perlin dari 0-256): Jika nilainya lebih dari 200 kemungkinan rumput ditempatkan adalah 80% (kotoran 20%). Jika nilainya antara 100 dan 200 kemungkinan rumput ditempatkan adalah 50% (kotoran juga 50%). Jika nilainya di bawah 100 kemungkinan rumput ditempatkan adalah 20% (kotoran 80%).
sumber
http://gamedevelopment.tutsplus.com/tutorials/generate-random-cave-levels-using-cellular-automata--gamedev-9664
di sini adalah versi saya dari metode automata seluler mulai dengan mengisi grid dengan acak kemudian jalankan aturan automata cullular ini beberapa kali
dan akhirnya tampak seperti gua
indeks dapat dikonversi ke posisi x & y dan kembali dengan kode ini
saya baru saja mengembalikan daftar bools karena saya menggunakan daftar ini untuk banyak hal: gua, pohon, bunga, rumput, kabut, air Anda bahkan dapat menggabungkan beberapa daftar dengan cara yang berbeda di sini saya pertama-tama menghapus semua gua yang lebih kecil kemudian menyatukan dua daftar acak
sumber
Pilih satu titik di peta. Tempatkan jenis ubin yang diinginkan dengan nilai dasar seperti 40. Melacak di mana Anda menempatkan ubin yang baru Anda inginkan. Tambahkan titik awal ke daftar.
Untuk setiap titik dalam daftar ini, Anda mengunjungi semua tetangga. Meskipun Anda memiliki sisa daya yang cukup (mulai dari 40) tambahkan ubin yang diinginkan dan tambahkan ke daftar yang akan dikunjungi. Berikan daya ubin yang baru lebih sedikit, ditentukan oleh Anda. Paling mudah = penurunan acak. Setelah Anda mengunjungi ubin dari daftar, hapus. Mulai lagi dengan mengunjungi ubin yang belum dikunjungi tetapi dibuat.
sumber