Dalam posting RPG.SE ini halaman yang telah lama hilang dengan beberapa generator online disebutkan.
Saya sangat ingin tahu tentang cara kota dihasilkan. Ambil gambar ini misalnya:
Meskipun banyak hal yang dapat ditingkatkan dari segi grafis, itu sangat bagus mengingat alat yang tersedia saat itu (pertengahan hingga akhir 90-an):
- Tata ruang jalan tampak cukup organik (meskipun mempertimbangkan semua jalan ditempatkan secara orthogonal).
- Tidak semua jalan harus terhubung, tetapi rasanya benar .
- Bangunan ditempatkan di tempat-tempat yang dapat dipercaya .
- Bahkan pohon tampaknya ditempatkan di tempat yang logis .
Saya pikir akan menyenangkan untuk mencobanya dan mencobanya sendiri. Terutama karena upaya saya sebelumnya terlalu "ganjil":
Anda akan melihat bahwa saya menggambarkan banyak kualitas dengan kata sifat yang tidak terlalu terukur ( sepertinya , terasa , dapat dipercaya , dll) jadi saya mengalami kesulitan menerjemahkannya ke instruksi dan akhirnya ke sebuah algoritma.
Apakah ada algoritma yang dicoba-dan-benar untuk pembuatan kota?
Saya mengerti ini sepertinya terlalu luas, jadi pertimbangkan ini: Jika saya meminta algoritma untuk menghasilkan peta massa daratan, saya akan mendapatkan referensi untuk Perlin dan algoritma kebisingan lainnya segera; diikuti oleh Voronoi.
Saya telah melihat pertanyaan seperti ini tetapi mereka tampaknya sudah memiliki gagasan yang lebih konkret (yaitu: 2x2 rumah, jumlah rumah tetap, pembatasan kanal dan penempatan jalan).
Yang ingin saya miliki adalah sesuatu yang tidak terlalu dibatasi. Kecuali mungkin untuk tata letak grid, yang seharusnya jauh lebih mudah untuk upaya pertama daripada, katakanlah, sistem-L.
sumber
Jawaban:
Perangkat Lunak Introversi membuat generator kota yang sangat mengesankan untuk proyek Subversion mereka yang
dibatalkantanpa batas waktu :Algoritma ini dirancang untuk menghasilkan metropol besar dan modern. Tetapi teknik yang sama dapat digunakan untuk menghasilkan lebih banyak pemukiman pedesaan.
Ini adalah algoritma top-down yang menghasilkan garis besar kasar pertama dan kemudian menghasilkan lebih banyak dan lebih detail untuk masuk ke dalamnya (untuk pendekatan bottom-up yang berlawanan dengan generasi prosedural, periksa jawabannya oleh uliwitness). Berikut adalah video yang memvisualisasikan algoritma yang sedang berjalan .
Algoritme tampaknya berfungsi sebagai berikut (sedikit disederhanakan):
Mengenai penempatan pohon: Pendekatan pertama saya adalah mengintegrasikan mereka dalam algoritma generasi bangunan. Sebuah bangunan tidak perlu mengisi lotnya sepenuhnya. Anda dapat mengisi ruang kosong dengan benda-benda dekoratif yang sesuai.
Masalah dengan pendekatan top-down adalah bahwa sementara itu mungkin menghasilkan kota yang masuk akal, itu mungkin tidak menghasilkan kota yang masuk akal dengan semua yang Anda inginkan . Katakanlah setiap kota dalam gim Anda membutuhkan satu toko senjata, satu toko baju besi, satu toko ramuan, dan satu penginapan. Algoritme di atas memilih bangunan berdasarkan persyaratan lot, sehingga Anda mungkin berakhir dengan 12 toko baju besi tetapi tidak satu pun penginapan. Saya akan mendekati masalah itu dalam fase pembuatan generasi. Sebelum Anda mulai membuat bangunan secara acak, telusuri daftar bangunan yang harus dimiliki dan pilihlah lot yang paling sesuai untuk masing-masingnya. Kemudian isi banyak yang tersisa dengan bangunan acak.
Saya menantikan untuk menjelajahi kota-kota yang dihasilkan secara prosedural dalam game Anda.
sumber
Dapatkan kendala dari kehidupan nyata
Seringkali jawaban tentang bagaimana menemukan algoritma yang tepat dimulai dengan melihat bagaimana hal-hal ini terjadi dalam kehidupan nyata. Apakah Anda sudah melihatnya? Dari atas kepala saya, saya bisa memikirkan hal berikut:
Terapkan ke topografi Anda
Setelah Anda memiliki kendala ini, Anda dapat mencoba membangun algoritma di sekitarnya. Misalnya, hasilkan topografi Anda dan bagikan sumber daya yang dibutuhkan di sekitar peta (mungkin mengawasi penempatan simpanan kecil dari sumber daya paling penting di area awal, lalu simpanan yang lebih besar semakin jauh dan dari satu sama lain). Di sinilah kebutuhan permainan Anda dan mekanik ikut bermain, tentu saja, tetapi Anda mungkin juga akan menambahkan elemen acak.
Kemudian bangun bisnis (dan bangunan tempat tinggal mereka) di dekat sumber daya yang menggunakannya. Misalnya tambang di sebelah gunung besar. Kemudian tambahkan infrastruktur yang dibutuhkan oleh mereka. Misalnya sebuah pos perdagangan dengan kantor pos dan kedai tempat mereka dapat melakukan bisnis dan menjual produk mereka, seorang pandai besi untuk menyediakan alat, dll.
Untuk memutuskan apa yang terjadi, pisahkan peta menjadi ubin tempat Anda menghitung angka untuk setiap ubin seberapa diinginkannya untuk tujuan tertentu, menggunakan fungsi pembobotan. Letakkan bangunan di ubin yang paling diinginkan untuk bangunan semacam itu. Tambahkan aturan seperti "satu pos perdagangan dapat menangani 50 bisnis atau 100 rumah", yang meningkatkan kemungkinan menambahkan pos perdagangan lain jika suatu kota mencapai ukuran tertentu.
Setelah Anda memilikinya, Anda harus mendapatkan beberapa peta yang cukup baik. Jika Anda melihat bahwa peta semua berakhir sebagai bentuk yang tidak alami, tambahkan hukuman ke fungsi bobot Anda untuk bentuk itu, seperti "jika jalan saya berakhir tepat di sebelah jalan lain, -100 keinginan", atau "jika jalan saya melintasi sendiri, -100 keinginan "dll. Anda selalu dapat menambahkan elemen acak untuk memungkinkan ini untuk merasa lebih unik, atau menambahkan mekanik lain seperti" jika persimpangan memiliki lebih dari N bangunan terhubung ke jalan-jalannya, ubahlah menjadi bundaran ".
Anda bahkan dapat menggunakan batasan-batasan ini untuk memberikan nuansa berbeda pada peta yang berbeda, seperti membuat negara tertentu memiliki lebih banyak gunung dalam topografinya, atau memiliki budaya tertentu membangun jalan yang lebih berliku, dan yang lain lebih suka jalan lurus dll. Semua hanya dengan memodifikasi salah satu dari Anda fungsi pembobotan.
Menyederhanakan
Tentu saja, pendekatan ini terlalu rumit untuk gim yang bukan simulasi perdagangan, tetapi tetap selesaikan ini, dan lihat jenis bangunan apa yang masuk akal untuk gim Anda, dan hilangkan yang tidak dibutuhkan. Kemudian muncul dengan aturan yang disederhanakan seperti "tempatkan kota di dekat sungai, gunung atau tanah yang bagus. 1 bangunan per 100 sumber daya, bisnis berdasarkan jenis sumber daya, 10 bangunan tempat tinggal untuk setiap rangkaian penuh sumber daya makanan / kerajinan ... atau hanya" 1m sungai / 1sqm tanah dapat mendukung 10 bangunan tempat tinggal ... apa pun yang masuk akal untuk sebuah game. Namun, begitu Anda tahu berapa banyak area yang Anda miliki (mis. Tidak ada bangunan di sisi gunung yang curam), dan berapa banyak bangunan yang dapat didukung oleh area tersebut, cukup tempatkan set bangunan di area itu hingga penuh (seperti, 1 bangunan bisnis, 10 perumahan) , 3 infrastruktur, atau apa pun) dan menghubungkannya dengan jalan.
sumber
Have you looked into that?
Saya sudah. Yah, semacam (saya tidak bisa memikirkan banyak "aturan kehidupan nyata"). Tetapi ini cukup membuka mata dibandingkan dengan usaha saya sebelumnya: Saya gagal mengenali sumber daya yang mungkin tidak saya gambar (yaitu: ada hutan di timur ... terlepas dari apakah saya menggambarnya atau tidak).