Anggaplah Anda memiliki permainan di mana ada banyak (banyak banyak) entitas yang melayani beberapa fungsi, tidak semua yang terus-menerus diperlukan atau perlu dipertimbangkan dalam setiap frame. Masalah konkret yang saya kerjakan di mana masalah ini hadir adalah simulasi rinci dari tubuh termasuk organ-organnya.
Dalam permainan, setiap makhluk memiliki tubuh sendiri yang dipisahkan menjadi bagian-bagian yang lebih kecil (batang tubuh, kaki, dll.) Dan kadang-kadang bagian-bagian ini mengandung organ, yang melayani fungsi tertentu di dalam tubuh. Apakah suatu organ saat ini melayani suatu tujuan atau aktif tidak pernah benar-benar jelas. Bagaimanapun, seekor hewan mungkin memiliki perut kosong yang karenanya tidak perlu mencerna apa pun. Akan sangat konyol untuk memeriksa atau mensimulasikan setiap objek di setiap frame dan sangat mahal segera setelah Anda memiliki banyak makhluk di dunia. Jadi saya sedang memikirkan cara untuk secara pintar membedakan antara objek yang perlu diperbarui dan yang tidak.
Apa yang saya hasilkan sepertinya solusi paling tidak ok. Ini menciptakan antrian / tumpukan sederhana (penting adalah bahwa setiap elemen akan dihapus segera setelah dibaca; urutannya tidak relevan) yang disebut "tumpukan perhatian" di mana objek yang perlu disimulasikan berada. Objek yang perlu perhatian hanya akan menempatkan diri ke tumpukan atau diletakkan di sana oleh objek lain. Objek-objek ini mungkin akan mengimplementasikan antarmuka sederhana dengan fungsi mensimulasikan () -.
Diterapkan ke contoh pencernaan saya sebelumnya ini berarti:
Pemain memilih sesuatu untuk dimakan (asumsikan roti) dari inventaris dan memasukkannya ke mulut karakternya dan mulut dimasukkan ke tumpukan perhatian. Dalam bingkai berikutnya mulut diambil dari tumpukan dan fungsi simulasikan () -nya disebut. Karena ini mulut, akan masuk akal untuk mensimulasikan mengunyah di sini. Ini bisa berlangsung selama beberapa bingkai di mana mulut terus menempatkan dirinya ke tumpukan sampai memutuskan makanan siap untuk ditelan. Dalam hal ini mulut memasukkan roti yang dikunyah ke dalam perut (saya tahu itu tidak langsung ke sana, tetapi kerongkongan ditinggalkan untuk penyederhanaan), yang kemudian juga dimasukkan ke tumpukan perhatian. Pada frame berikutnya, simulasi proses pencernaan dimulai. Demikian seterusnya untuk sisa organ yang diperlukan.
Masalah yang dapat diprediksi dengan ini adalah objek yang tidak digunakan. Hewan tidur adalah contoh yang baik untuk hal ini. Ini bisa dilakukan seperti yang dijelaskan sebelumnya dengan meletakkan hewan yang tidur di tumpukan dan memeriksa setiap kali jika perlu bangun, tetapi itu sepertinya sia-sia karena hanya itu yang dilakukan. Untuk membuat objek pemalasan lebih efisien saya berencana untuk menambahkan semacam jadwal yang menyimpan pekerjaan yang harus dilakukan pada waktu tertentu. Jika seekor hewan tidur, itu akan menempatkan pekerjaan pada jadwal yang akan dijadwalkan untuk jangka waktu tertentu setelah hewan itu tidur. Pekerjaan ini kemudian akan menempatkan hewan tidur ke tumpukan perhatian lagi. Sekarang, Anda bisa mengatakan bahwa hewan tidur yang tidak berada di tumpukan perhatian dapat kehilangan diserang oleh sesuatu karena AI-nya tidak disimulasikan,
Sekarang, sejujurnya saya tidak tahu apakah ini bahkan dekat dengan solusi elegan untuk masalah ini karena kurangnya pengalaman. Apakah saya dekat dengan sesuatu yang dapat digunakan? Bagaimana ini biasanya dilakukan atau apakah ada yang punya saran atau solusi yang lebih baik?