Saya baru saja memulai proyek baru di mana saya ingin dunia game terdiri dari lokasi yang dihasilkan secara prosedural yang terhubung oleh para teleporter. Setelah sedikit riset, saya menemukan ini disebut "teori grafik" atau "rumit berdarah", tergantung pada siapa yang membahasnya. Sayangnya, saya menemukan sangat sedikit informasi tentang menghasilkan grafik; sebagian besar alat yang saya lihat diarahkan untuk memeriksa grafik yang ada.
Dengan asumsi saya memiliki terminologi yang diurutkan dengan benar, persyaratan saya adalah bahwa grafiknya adalah:
- sederhana - tidak ada lokasi (vertex) harus memiliki teleporter (tepi) yang menghubungkan kembali ke dirinya sendiri, juga dua simpul tidak memiliki banyak tepi yang menghubungkannya
- terhubung - harus mungkin untuk melakukan perjalanan antara dua simpul dalam grafik (meskipun saya tidak melihat pernah perlu menemukan jalan; hanya mengetahui pemain bisa menemukan satu jika mereka memilih cukup)
- siklik - harus ada lebih dari satu jalur antara dua simpul
- tidak diarahkan - semua sisi dapat dilalui ke arah mana pun
- infinite - jika pemain menginginkannya, mereka harus dapat melakukan perjalanan tanpa batas, dengan grafik terus bertambah secara bertahap ketika mereka mendekati simpul tereksplorasi yang
paling luar. - terbatas secara lokal - gelar vertex tidak boleh berubah setelah pemain mengunjunginya
- diberi label secara stabil - setiap titik mewakili lokasi yang akan dihasilkan secara prosedural dari sebuah benih; seed yang sama harus ditugaskan ke vertex tanpa memandang jalur apa yang digunakan pemain untuk melakukan perjalanan ke sana atau seberapa besar grafik ketika mereka melakukannya
Saya sudah memiliki beberapa ide (yang belum saya coba terapkan) mengenai penggunaan maxima lokal 2D noise perlin sebagai simpul (input x dan y kemudian dapat digunakan sebagai labelnya), tetapi itu terasa kikuk dan rumit.
Apakah ada cara yang lebih baik untuk menghasilkan grafik seperti ini? Saya sedang mengembangkan di Python 2.6 menggunakan Panda3D dan numpy, dan tentu saja mau melihat termasuk perpustakaan lain jika mereka akan membantu dengan masalah ini!
Edit
Saya pikir saya telah melakukan pekerjaan yang buruk dengan menjelaskan beberapa persyaratan saya, jadi sekarang saatnya ilustrasi! Semoga ini bisa menyelesaikan semuanya.
Yang saya maksud dengan memiliki label stabil adalah bahwa saya ingin, misalnya, Pemain A untuk dapat melakukan banyak penjelajahan dan menemukan, antara lain, jalur siklik kembali ke lokasi awal mereka dan gunung yang terlihat seperti kucing. Game-nya sekarang terlihat seperti berikut ini (simpul diberi nomor dengan seed dan edge-nya dengan urutan pemain melewati mereka). Dia mulai pada titik 8329 (hijau) dan Gunung Happycat berada di puncak 6745 (biru).
Teman baik Player A, Player B adalah penggemar kucing, jadi dia ingin menunjukkannya padanya. Dia memberinya benih akar untuk dunianya dan arah di sepanjang rute yang lebih pendek ke gunung yang menarik. Game-nya sekarang akan terlihat seperti ini:
Masalah saya saat ini yang paling sulit adalah "Bagaimana cara menghasilkan benih yang sama untuk Player B ketika eksplorasi belum mengikuti jalur yang sama?" Itulah yang mengarahkan saya pada ide untuk menggunakan Perlin noise - selama seed root yang sama digunakan, maxima tidak akan bergerak, sehingga koordinat mereka dapat digunakan sebagai seed vertex yang stabil.