Metode untuk menghasilkan peta

27

Saya ingin membuat peta sederhana yang dibuat secara acak untuk permainan kecil.

Gim ini terdiri dari pemandangan dunia dari atas ke bawah, dengan daratan dan wilayah lautan. Pikirkan peta garis besar dunia yang sederhana misalnya.

Hal terdekat yang bisa saya pikirkan yang pernah saya lihat sebelumnya adalah generator level untuk game SimCity lama , atau seri Civ , di mana Anda dapat mengatur preferensi untuk satu benua dibandingkan banyak pulau, dll.

Algoritma macam apa yang cocok? Peta harus cukup diperbesar, sehingga saya dapat memiliki tampilan "seluruh dunia", dan juga tampilan lokal yang lebih diperbesar, tetapi saya pikir saya akan menyelesaikannya nanti.

Awalnya saya tidak memerlukan konsep ketinggian, hanya dua area - darat dan laut, meskipun saya mungkin memperpanjangnya nanti.

Silindris
sumber
Saya berpikir sepanjang garis generasi menggunakan fungsi perlin-noise dari beberapa jenis, tetapi saya tidak yakin bagaimana mendapatkan dari apa yang pada dasarnya adalah peta ketinggian 2D, ke satu set garis yang menghubungkan semua area pada ketinggian X.
Cylindric

Jawaban:

21

Amit "terkenal" (dengan halaman raksasa dari berbagai topik pemrograman game) memiliki blog pemrograman game, dan dia baru saja menyelesaikan tutorial 3-bagian tentang metode pembuatan peta yang menarik. Saya sangat menikmati bacaannya, dan ada demo yang berfungsi di bagian bawah artikel ketiga yang cukup bagus.

"Pembuatan peta poligon" bagian 1 , bagian 2 , bagian 3 .

Ini mungkin teknik yang Anda ingin sesuaikan dengan kebutuhan Anda! Paling tidak, ia menyebutkan algoritma yang ia gunakan pada setiap langkah proses: ia mulai dengan poligon Voronoi generasi , mengendurkannya ke distribusi yang lebih merata menggunakan relaksasi Lloyd , menggunakan "fungsi sederhana untuk membagi dunia menjadi tanah dan air" , dan kemudian banjir mengisi untuk menentukan lautan dan danau. Sepertinya Anda bisa berhenti di situ, atau baca terus untuk gunung dan lembah dan mengubahnya menjadi 3D dan sebagainya.

Ricket
sumber
2
Oh wow, saya menggunakan panduan Amit dalam jumlah besar untuk belajar A *. Ini seperti dia melihat ke kepalaku :) Saatnya untuk mendapatkan tato "<3 Amit" itu ...
Cylindric
1
Itu sangat luar biasa
Colm
Voronoi, bagus. :)
user712092