Saya memulai / memulai permainan RPG tilemap 2D di Jawa dan saya ingin menerapkan pembuatan peta acak. Saya memiliki daftar ubin yang berbeda, (tanah / pasir / batu / rumput / kerikil dll) bersama dengan ubin air dan ubin jalan, masalah yang saya miliki adalah bahwa saya tidak tahu harus mulai dari mana membuat peta secara acak.
Itu perlu memiliki bagian medan (Seperti bagian dari itu akan menjadi pasir, sebagian kotoran, dll.) Mirip dengan bagaimana Minecraft di mana Anda memiliki bioma yang berbeda dan mereka mulus berubah menjadi satu sama lain. Terakhir saya juga perlu menambahkan jalur acak ke ini juga pergi ke arah yang berbeda di seluruh peta.
Saya tidak meminta siapa pun untuk menulis saya semua kode atau apa pun, cukup minta saya ke arah yang benar.
tl; dr - Hasilkan peta ubin dengan bioma, jalur, dan pastikan bioma saling bertukar secara mulus.
Sementara jawaban lain di sini sangat baik untuk menghasilkan jenis lanskap statis yang akan bekerja untuk kebutuhan spesifik ini. Ada metode lain yang mungkin dicari orang dari pertanyaan ini jika mereka ingin membuat lanskap yang berubah seiring waktu atau tampak jauh lebih realistis, Anda dapat mengikuti teknik ini.
Berbeda dengan jawaban lain, Anda memulai ini dengan peta yang sepenuhnya kosong. Mulailah dengan apa yang Anda anggap sebagai permukaan laut. Gunakan Perlin Noise untuk menambahkan variasi yang sangat sedikit, jika Anda memiliki 256 ketinggian yang mungkin, jangan ubah lebih dari 3-5 di kedua arah. Ini membangun beberapa miliar tahun pertama lanskap Anda tanpa harus benar-benar menjalankan simulasi selama itu.
Lempeng Tektonik
Membagi peta di sepanjang garis lurus atau lengkung untuk membuat piring, semakin detail bentuk piring, semakin menarik lansekap Anda. Buat mereka tetap besar. Beri setiap lempeng arah, kecepatan. Selama jangka waktu tertentu, gerakkan lempeng-lempeng dengan cara yang bijaksana di sekitar peta, seret semua ubin di atasnya.
Ketika dua lempeng melintas, tentukan pilihan mana yang akan dilewati dan mana yang akan masuk, pilihan ini bisa acak. Ubin di piring yang ditunjuk di bawah ini langsung dikurangi ketinggiannya dengan 5 langkah. Setelah sebuah piring telah ditentukan atas atau di bawah, semua interaksi di masa depan dengan pelat akan mengikuti aturan ini:
Semua pelat yang melintas lambat sebesar 20% dari kecepatan saat ini setiap langkah. Untuk menambahkan realisme, tambahkan perubahan acak -10% hingga 10% dalam arah gerakan setiap langkah.
Setelah melakukan jumlah langkah yang diinginkan. Mungkin 5-10 banyak. Setiap ubin di mana tidak ada plat yang ada, harus dijatuhkan ke level terendah yang ada.
Besar atau kecil?
Peta ini dapat digunakan apa adanya, atau diperluas untuk membuat peta yang jauh lebih besar dengan memecahnya menjadi potongan 4X4 (sel) ubin dan memperluas bagian-bagian tersebut berdasarkan ketinggian masing-masing. Perlakukan ketinggian setiap sel sebagai titik, dan buat gradasi halus di peta yang lebih besar di antara titik-titik itu. Jadi, jika peta yang lebih besar adalah 40X40 bukannya 4X4, dan titik (0,0) adalah 10 dan titik (0,1) adalah 1, ubin di peta yang lebih besar di antara mereka akan menjadi 10,9,8,7,6 , 5,4,3,2,1 tingginya. Selanjutnya Perlin Noise dapat ditambahkan untuk mengurangi kelerengan lereng. Secara keseluruhan teknik penskalaan ini mirip dengan algoritma Diamond Square .
air
Untuk mensimulasikan sungai dan danau, lautan dan permukaan air. Saya lebih suka menggunakan automata seluler .
Ketinggian menjadi mengapung atau rentang int yang diperluas untuk memungkinkan pelacakan berbutir lebih halus. Sel-sel air memiliki nilai saturasi, katakanlah dalam kisaran 1-256. Peta harus dimulai secara merata. Anda harus bermain dengan angka untuk ukuran peta Anda sendiri, namun umumnya Anda akan mengikuti aturan seperti ini:
Lakukan pemeriksaan ini untuk setiap sel tetangga. Jalankan melalui sejumlah langkah yang cukup. Jika Anda mau, Anda bisa menambahkan suhu pada simulasi ini dengan mengubah jumlah saturasi yang hilang / didapat oleh suhu itu. Anda juga dapat mengubahnya berdasarkan ketinggian. Danau dan sungai alami harus terbentuk. Beberapa akan jatuh ke laut. (Lautan mungkin tidak akan diisi oleh metrik apa pun, tetapi Anda akan menetapkan apa pun di bawah permukaan laut untuk menjadi air yang diisi pada akhirnya.)
Anda dapat menyimpan data suhu dan saturasi untuk digunakan, seperti pada jawaban lain, untuk membuat bioma. Mereka harus JAUH lebih akurat dan menarik. Dengan bioma bersalju di kutub dan yang panas di tengah (jika Anda menggunakan daftar suhu yang lancar.)
Anda juga dapat mensimulasikan angin, dan karenanya perubahan suhu berdasarkan ketinggian. Anda dapat bolak-balik antara menjalankan simulasi suhu dan simulasi air jika Anda mau. Namun saya belum membuat apa pun menggunakan perubahan suhu jadi saya tidak akan mengomentari bagaimana melakukan itu.
Bentang Alam yang Berkembang
Jika Anda menyimpan simulasi untuk tanah, air, dan panas di sekitar dan secara dramatis mengurangi efeknya dan juga menghentikan pelat agar tidak bergerak, Anda dapat terus mengubah semua metrik ini dari waktu ke waktu. Saya tidak akan menjalankan perhitungan terlalu sering, tetapi Anda bisa mendapatkan peta dunia yang merespons perubahan dengan cara ini.
Kesimpulan
Sementara jenis teknik ini jauh lebih terlibat, mereka menghasilkan efek yang lebih realistis dan berkembang. Ambillah untuk apa nilainya?
sumber
Anda dapat menggunakan Perlin Noise untuk generasi medan, berikut adalah cara kerja bioma di Minecraft. Seperti yang Anda lihat, dia menggunakan peta panas dalam kombinasi dengan peta hujan untuk membuat bioma.
sumber