Latar Belakang
Saya menjalankan server minecraft di mana saya akan merancang kota pemula dengan skala yang cukup besar. Saya memiliki serangkaian hal, seperti tanda peraturan dan kandang gerombolan, saya ingin menempatkan bangunan di sana. Kota itu sendiri akan sangat besar dan menyebar, lebih disukai hingga 1000 oleh 1000 blok dalam ukuran.
Bangunan itu sendiri akan memiliki jejak kaki kubus atau persegi panjang yang didasarkan pada kubus dasar tertentu, seperti semua kelipatan dari 3 blok. Jalan-jalan dan jarak antara bangunan akan lebih disukai 5-11 blok lebar, tergantung pada pentingnya jalan.
Ketika saya memulai rencana untuk kota, saya akan tahu persis seberapa besar saya ingin bangunan dan berapa banyak akan ada.
Masalah
Masalahnya adalah merancang tata letak kota. Tentunya dengan sesuatu skala seperti itu, dan saya datang dari latar belakang pemrograman daripada latar belakang perencana kota, cukup sulit untuk bahkan mulai membungkus kepala saya di sekitar masalah.
Masalahnya secara khusus adalah bahwa saya ingin kota terlihat sealami mungkin. Tentu saja ini akan cukup mudah dibangun di atas pola kisi sederhana, tetapi saya ingin menghindari kisi, atau apa pun yang terlihat seperti kisi, sebanyak mungkin.
Pertanyaan
Algoritme apa yang mungkin dapat saya kejar agar dapat membantu saya mendesainnya menggunakan kode? Saya berpikir bahwa itu akan terlihat paling alami jika saya menggunakan fraktal dalam beberapa cara, karena minecraft sudah menggunakan fraktal dalam generasi medannya, dan sebuah kota tampaknya tumbuh dalam pola fraktal secara alami.
Saya pikir itu mirip dalam beberapa hal dengan algoritma tetris playing, jadi jika ada yang punya solusi yang ada di arah itu maka itu akan membantu juga. Saya membayangkan sesuatu di mana saya dapat menentukan bentuk yang ingin saya gunakan, dan perangkat lunak kemudian beralih hingga menemukan solusi yang paling "optimal" untuk pemerataan bangunan. Apakah ada yang sudah ada untuk membantu saya memecahkan masalah ini menggunakan python, lebih disukai secara visual menggunakan pygame?
Secara alami ini juga memiliki implikasi yang menarik untuk generasi kota secara umum dalam desain game, jadi saya sangat senang melihat apa solusi terbaiknya.
sunting Untuk lebih jelas, saya hanya mencari tata letak pada titik ini karena bangunan akan dirancang dan dibangun dalam gim.
Jawaban:
Saya baru-baru ini mengimplementasikan algoritma untuk tata kota prosedural. Ini masih banyak pekerjaan yang sedang berjalan, tetapi tampaknya menjanjikan bagi saya. Lihatlah:
Algoritma yang digunakan untuk membuat tata letak ini secara longgar didasarkan pada L-Systems . Saya memiliki
Element
kelas dasar , yang memiliki persegi panjang menandai tempatnya di peta dan metodeGrow
, yang membuat lainnyaElements
di dalam persegi panjang, dan / atau memunculkan beberapa objek di peta. Lalu ada elemen yang sebenarnya, yang diwarisi dari kelas dasar ini:City
,Street
,Building
dllGenerasi dimulai dengan sejumlah objek "seed" (dalam kasus saya, hanya satu
City
elemen yang ditempatkan secara acak di peta). Kemudian sistem mengulangi semua elemen, memanggilGrow
, hingga semua elemen menjadi tidak aktif (Grow
kembalifalse
), atau sejumlah besar iterasi berlalu.Kota dalam gambar dibangun hanya menggunakan beberapa aturan sederhana:
City
menjadiStreet
elemen yang membelah area di suatu tempat.Street
tumbuh di sisi jalan 0-3, semakin membelah daerah tersebut.Street
s terus mencoba untuk menyesuaikan ukuran acakBuilding
di samping.Hasilnya tidak terlalu menarik, tetapi juga tidak buruk. Sistem dapat diperluas dengan mudah, dan cukup sederhana untuk memahami apa yang terjadi (-8
sumber
Ada pembicaraan GDC ini tentang generasi pembangunan prosedural dari beberapa tahun yang lalu. Ini untuk membuat bangunan individu berdasarkan seperangkat templat, tetapi tidak untuk membuat seluruh kota (menata jalan-jalan dan sebagainya). Sayangnya, tidak ada kode gratis untuk menggunakannya. Sistem yang dijelaskan dalam ceramah diimplementasikan dalam Unreal meskipun saya tidak jelas apakah itu dalam versi gratis UDK atau tidak. Bagaimanapun, Anda dapat menggunakan beberapa ide yang sama untuk membangun sistem Anda sendiri.
"Gedung prosedural" Google atau "kota prosedural" juga akan memberi Anda beberapa makalah dan artikel lain tentang topik tersebut.
sumber
Saya menemukan tutorial yang sangat bagus / terperinci untuk membuat kota prosedural beberapa waktu lalu. Ada video @ http://www.youtube.com/watch?v=-d2-PtK4F6Y Tutorialnya ada di blog penulis: http://www.shamusyoung.com/twentysidedtale/?p=2940 Semoga ini bisa membantu amb
sumber