Inilah ide dasarnya: Saya memiliki permainan Rogue-ish, mungkin Dwarf Fortress-ish, dengan dunia luar yang dibuat secara acak dan beberapa pintu masuk ruang bawah tanah tersebar di sekitarnya. Saya sudah memiliki ruang bawah tanah pada dasarnya tertutup, tapi saya terjebak pada aspek dunia luar.
Said overworld, yang dianggap sebagai peta layar 2D, mungkin memiliki distribusi yang mungkin seperti gumpalan dari empat tema atau bioma yang berbeda - padang rumput, gurun, salju dan rawa, masing-masing dengan jumlah layar sendiri. Katakanlah peta tersebut berukuran 8x8, yang memberikan 64 layar unik. Setengah dari itu bisa berupa padang rumput, seperempat gurun, dan rawa dan salju masing-masing mendapat seperempat:
Tampaknya pengurangan palet telah membuat salju warna sama dengan rawa. Awalnya, ada delapan layar salju di sudut bawah, dan area rawa delapan layar agak terhuyung di tengah. Maaf, tapi abaikan penanda lokasi.
Yang terbaik yang bisa saya dapatkan adalah beberapa bentuk ular, dan cukup sering dengan kombinasi yang tidak masuk akal seperti padang pasir yang menembus salju (atau sebaliknya). Saya tidak bisa seumur hidup saya mencari cara untuk mendapatkan itu bagus dan blobby, apalagi itu masuk akal secara iklim (?). Jadi bagaimana cara menghasilkan peta bioma seperti di maket?
Oke, atas permintaan: dunia benar-benar tidak jauh lebih besar dari contoh itu, dan yang saya butuhkan hanyalah cara untuk menyebarkan gumpalan yang menentukan penampilan tematik, dengan batasan ekstra bahwa salju tidak dapat menyentuh gurun. Layar tidak menggulir, dan jika layar diatur ke "gurun", tidak akan ada rumput di mana pun di atasnya.
Jawaban:
Ada banyak cara untuk menguliti kucing ini, namun salah satu yang lebih menarik adalah menggunakan automata seluler . Mulailah dengan kotak kosong Anda dan tambahkan beberapa sel awal benih di lokasi acak. Ini harus dari beberapa jenis dasar bioma non-campuran. Katakan: Rumput, Gurun, Salju, Samudra.
Berdasarkan aturan pertumbuhan desain Anda sendiri, yang dapat menampilkan beberapa keacakan (saya tidak peduli bahwa itu secara teknis merusak ide CA, kan?) Minta mereka menanamkan setiap langkah ke dalam peta. Aturan tambahan bisa sedemikian rupa sehingga jika Anda berada di lautan dan berada di sebelah rumput atau rawa, Anda bisa berubah menjadi rawa. Jika Anda berada di sebelah salju, Anda bisa menjadi es, jika berada di dekat gurun, Anda bisa mengering dan menjadi gurun juga.
Hal yang sama mungkin berlaku untuk campuran lainnya, dan secara teori bahkan sub-campuran seperti rawa beku, atau tundra, atau hutan tumbuh dari hamparan hutan besar yang tumbuh dari hamparan luas padang rumput.
Kemungkinannya tidak terbatas, dan juga bisa berkelanjutan. Karena semua aturan ini sederhana, Anda dapat menerapkan lingkungan yang berubah seiring waktu. Dikombinasikan dengan informasi ketinggian, dan aturan yang memperhitungkannya, Anda dapat menumbuhkan danau dan sungai, menghalangi pertumbuhan hutan di atas pegunungan dan hal-hal mewah lainnya.
Peta ketinggian itu bisa merupakan hasil dari perlin noise, atau diamond square, atau bahkan seluruh model CA lainnya. Bahkan, Anda dapat memodifikasi peta itu seiring berjalannya waktu juga dengan memodelkan lempeng tektonik, mendorong gunung, tenggelam di parit, dan bahkan membiarkan sungai menurunkan lanskap menciptakan ngarai.
Lubang kelinci ini memanjang selamanya.
sumber
Jawaban singkat tetapi Anda harus benar-benar memeriksa artikel ini di www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/ Ini menjelaskan satu algoritma pada generasi generasi acak lahan kering dan bioma berdasarkan zona kelembaban yang ditunjuk dan daerah ketinggian. Tetapi dalam kasus Anda, cukup tetapkan nilai Anda sendiri untuk distribusi yang Anda inginkan.
(suntingan besar) Saya akan membuatnya lebih jelas untuk konsep pembuatan peta apa yang perlu Anda terapkan. Gunakan sistem koordinat dengan 1 unit per layar, dalam nilai floating point. Hasilkan satu set kecil titik acak dalam koordinat ini, seolah-olah Anda membuat diagram Voronoi tetapi kami tidak akan benar-benar membuat bentuk acak. Sebaliknya diagram akan tersirat dan didekati oleh peta setelah bioma ditetapkan.
Setiap titik adalah pusat untuk setiap area bioma. Tetapkan aturan Anda sendiri untuk mengaitkan suatu titik dengan bioma. Misalnya jika Anda ingin gurun di timur dan tidak terlalu jauh ke selatan atau utara, semua titik yang lebih besar dari nilai X tertentu dan dalam rentang Y tertentu akan memiliki gurun yang mengelilinginya.
Kaitkan setiap layar dengan salah satu titik ini, yang dilakukan dengan mengambil bagian tengah layar dalam koordinat XY (katakanlah 4.5, 8.5) dan mengembalikan titik terdekat ke pusat layar.
Berikut gambar kasar diagram bentuk pada kisi layar. Kami tidak benar-benar peduli dengan garis yang mengelilingi bentuk, tetapi ada di sana untuk menggambarkan bagaimana layar mulai mendekati daerah bentuk.
Ulangi untuk setiap layar, berikan masing-masing bioma sendiri.
sumber
Jawaban 1:
tumbuh salju dan gurun, ketika itu dilakukan, mencari persimpangan (dilarang) dan tumbuh (lebih atau kurang besar) rawa di sana.
Bangkit dan ulangi.
Jawaban 2:
Untuk bagian 'gumpalan', saya memindahkan komentar saya (seperti yang diminta) ke pos:
Jika Anda tumbuh dengan iterasi, yaitu. menetapkan 1 titik gurun dan kemudian tumbuh secara acak di sekitar titik gurun (setiap kali secara acak mengambil salah satu titik gurun yang ada dan menambahkan 1 titik di salah satu sisinya (di mana tidak ada apa-apa)) maka Anda harus mendapatkan efek goyah ( tidak ada garis panjang misalnya).
Anda juga dapat menambahkan aturan sehingga Anda tidak dapat membuat ubin gurun jika ada salju di ubin mana pun di sekitarnya.
sumber