Seperti kebanyakan gamedev, jawaban untuk bagaimana game sim kota mencapai prestasi yang tampaknya mustahil ini adalah: mereka mungkin tidak. Mereka hanya berpura-pura baik. ;)
Sims seperti ini biasanya akan beroperasi pada tingkat "chunked", memodelkan kelompok orang, lingkungan, koridor lalu lintas, atau dinamika kota lainnya secara keseluruhan, daripada memproses AI untuk setiap satu dari ribuan atau jutaan penduduk.
Ada beberapa cara untuk mendekati ini:
Bottom-up "jarang": di sini kita masih mensimulasikan warga kota individu, tetapi tidak "terlalu banyak" dari mereka, dan tidak setiap frame. Anda bisa memikirkan ini seperti jajak pendapat atau sensus yang dikeluarkan untuk sampel acak orang setiap minggu. Anda menginterpolasi hasil untuk menghasilkan perkiraan populasi virtual yang lebih luas - di mana mereka tinggal, panggilan mereka, pendapatan, demografi, dll.
Jadi misalnya, jika Anda hanya mensimulasikan seratus penduduk di kota Anda, dan 5 dari mereka adalah siswa, maka Anda dapat memperkirakan bahwa sekitar 5% dari populasi kota Anda adalah siswa, dan menjadi contoh permintaan sekolah.
Anda mungkin perlu membuat kembali sampel acak Anda dari distribusi populasi kota Anda sesekali, untuk menghindari kelebihan pengelompokan / sparseness (mis. Jika suatu lingkungan menjadi tidak populer dan semua penduduk sensus Anda pindah, Anda ingin mencatat eksodus tanpa meninggalkannya sepenuhnya tanpa representasi di sim Anda!)
Top-down: Di sini Anda datang dengan formula utama yang melihat kota Anda dan memodelkan dinamikanya secara keseluruhan. Dalam gaya yang mirip dengan ekonomi makro, kami mengabaikan rincian agen individu, atau menganggap mereka sebagai semacam "cairan" aktivitas ekonomi yang terus-menerus dapat dibagi yang mengalir sesuai dengan hukum berbasis prinsip.
Daripada memikirkan preferensi individu dan variabilitas orang, aturan permainan Anda mungkin lebih mirip persamaan diferensial yang berkaitan dengan perkiraan kemudahan dan tarif pajak serta produktivitas dan nilai properti serta tingkat kejahatan dan dan dan ...
Middle-out: Berbagai hibrida antara keduanya dimungkinkan - misalnya, mensimulasikan setiap "faksi," "industri," atau segmen demografis kota sebagai meta-person-nya sendiri, membuat keputusan sendiri, tetapi menyebar dalam peta panas atau fungsi gelombang di kota daripada ada di satu tubuh. Atau memecah kota menjadi lingkungan yang masing-masing memproses aturan skala kecil mereka sendiri dalam interaksi dengan tetangga mereka.
Sekarang, ketika pemain memperbesar cukup dekat untuk melihat orang individu, atau melihat laporan statistik mengutip jumlah individu - itu tidak selalu merupakan kebenaran dasar yang digunakan untuk menjalankan sim. Sebaliknya, mereka dapat menjadi produk yang disimpulkan.
Katakanlah kita memperbesar blok kota tertentu. Dari keseluruhan sim kota kami, kami mengetahui populasi kasar bagian kota ini, jenis kegiatan yang terjadi di sana, saat-saat ketika aktif. Jadi atas permintaan, kita dapat menelurkan sejumlah orang yang tepat dari demografi yang tepat melakukan jenis-jenis kegiatan di sana. AI mereka bisa sangat sederhana, mungkin hanya sesederhana memainkan animasi di tempat atau mengikuti titik arah ke tepi pintu / layar terdekat tempat mereka dapat bertelur.
Ini berarti kita biasanya tidak perlu melakukan pathfinding untuk setiap agen. Sebagai gantinya, kita dapat melakukan satu pass master-pemetaan aliran di seluruh jaringan jalan, untuk mengidentifikasi volume keseluruhan dari berbagai jenis lalu lintas di sepanjang setiap segmen. Kemudian kita dapat menelurkan cukup kendaraan jenis yang tepat di segmen tersebut untuk mencerminkan kepadatan itu. Setelah bertelur, agen bisa bertahan dengan setir lokal atau titik arah yang dibuat sebelumnya untuk sampai ke titik de-spawn. Menjaga agar spawn di sepanjang setiap segmen seimbang dengan tingkat de-spawning memungkinkan kita mempertahankan volume lalu lintas yang kita inginkan.
Dengan cara ini, orang & kendaraan yang dilihat pemain adalah isapan jempol, seperti sistem partikel sup-up yang memberi kesan awan realistis tanpa benar-benar menghitung dinamika fluida penuh pada setiap molekul uap. ;) Kami mengaturnya sebagai set dressing untuk mengomunikasikan keadaan simulasi, daripada mengendarainya.
Untuk banyak game, ini sudah cukup. Pemain sering tidak dapat memilih agen individu untuk menginterogasi mereka tentang apa yang mereka lakukan di sana atau ke mana mereka pergi, jadi sulit untuk menemukan jahitannya dan perhatikan jika agen melakukan sesuatu yang tidak masuk akal, seperti mengemudi di blok yang sama tiga kali.
Tetapi jika Anda membutuhkan agen yang benar-benar konsisten dalam lingkungan yang padat penduduk, Anda dapat melihat teknik yang rapi yang disebut " Generasi Alibi ." Ini adalah teknik pengambilan sampel yang canggih yang memungkinkan Anda menghasilkan agen yang Anda harapkan akan ditemukan dalam situasi tertentu. Kemudian, jika pemain mencoba untuk menyelidiki satu lebih detail, Anda dapat secara surut mengambil sampel lebih detail tentang apa yang mereka lakukan, dengan cara yang konsisten dengan apa yang telah diamati pemain tentang mereka sejauh ini. Idenya adalah bahwa Anda masih mendapatkan manfaat ringan dari orang-orang "kardus berdiri" sebagian besar waktu, tetapi di tempat mereka dapat membuat alibi yang masuk akal untuk lulus sebagai agen yang sepenuhnya disimulasikan.