Jalan melengkung 2D yang dihasilkan secara prosedur di peta

9

Saya telah bereksperimen dengan algoritma untuk secara otomatis menghasilkan peta jalan untuk game yang saya kerjakan.

Saya menggunakan game " Kingdom Rush " sebagai titik referensi karena mereka memiliki beberapa peta yang tampak hebat.

Contoh peta jalan dari game "Kingdom Rush"

Saya baru dalam pembuatan konten prosedural, dan bertanya-tanya apakah ada orang di sini yang memiliki petunjuk. Saya telah bereksperimen dengan menghasilkan topologi jalan acak, misalnya beberapa simpul masuk / sumber, beberapa simpul dalam (fork and merge), dan beberapa simpul keluar, kemudian menggunakan algoritma tata letak grafik untuk membuat peta jalan aktual berdasarkan informasi ini.

Berikut ini satu contoh menggunakan algoritma Fruchterman-Reingold untuk tata letak jalan:

Peta yang dihasilkan PCG 1

Grafik biru menggunakan beberapa titik kontrol Bézier yang dibuat secara acak untuk membuat tepian terlihat kurang lurus.

Berikut contoh lain yang dihasilkan menggunakan algoritma yang sama tetapi angka acak berbeda:

Peta yang dihasilkan PCG 2

Masalahnya adalah sebagian besar hasil akhirnya tampak sangat mirip, dan saya tidak yakin aturan apa yang dapat saya tambahkan untuk meningkatkan kemampuan kontrol dan keragaman peta yang dihasilkan secara prosedural.

Setiap saran dihargai.

SixTwoOne
sumber
Pertanyaan yang luar biasa Gambar referensi sangat membantu seperti halnya hal-hal yang telah Anda coba sejauh ini. Bisakah Anda menguraikan sedikit lebih banyak tentang apa yang Anda maksud dengan 'kemampuan kontrol'? Ada banyak hal yang bisa Anda kendalikan; beberapa contoh akan membantu.
Pikalek
Hai! Terima kasih atas tanggapannya. Dengan kemampuan pengendalian, maksud saya apakah mungkin untuk menulis aturan tertentu (mis. Jangan menempatkan persimpangan lebih dekat dari jarak tertentu satu sama lain; jangan biarkan sudut lebih tajam dari x derajat) dan minta algoritma pembangkitan menghargai kendala ini? Selain itu, aturan ini seharusnya tidak menghambat kemampuan algoritma untuk menghasilkan beragam peta menarik. Namun, dorongan Anda membesarkan hati. Saya mulai frustrasi dengan detail agar ini berhasil!
SixTwoOne

Jawaban:

2

Contoh jalan Anda memiliki kurva pada ruas di antara persimpangan yang tidak Anda buat. Sudahkah Anda mencoba menambahkan lebih banyak titik kontrol "redundan" di jalan Anda?

Bagaimana kalau jumlah loop menjadi parameter generasi? Juga "kelengkungan" (jumlah titik kontrol redundan) Jumlah pintu keluar akan menjadi yang lain.

Saya pikir Anda juga bisa mengakhiri jalan ketika mereka menabrak persimpangan dengan memberi mereka titik kontrol ganda. Itu seharusnya membuat persimpangan terlihat lebih baik.

Osthekake
sumber
Saya pikir saran poin kontrol menengah baik! Algoritma tata letak grafik yang saya gunakan saat ini hanya menghasilkan garis lurus, tetapi saya bisa menempatkan simpul "lengkung" di suatu tempat di antara dua simpul lain dan menggunakan heuristik untuk menempatkan titik kontrol di dekatnya yang akan membuatnya terlihat cantik. Saya pasti perlu melihat lebih dalam lagi, karena ini juga terkait dengan menciptakan persimpangan yang lebih baik.
SixTwoOne