Ada dua hal berbeda yang perlu dipertimbangkan ketika mengukur dan mengoptimalkan kinerja sistem entitas berskala besar.
Pada level rendah, Anda memiliki representasi fisik dari entitas Anda yang cenderung mulai menggunakan tata letak penyimpanan yang efisien seperti SoA (struct of arrays) untuk mengurangi biaya pengulangan dan memperbarui semua entitas yang aktif.
Di level yang lebih tinggi, Anda memiliki logika pengambilan keputusan, logika game umum, AI, dan pencarian jalur. Ini semua adalah tugas yang memiliki kesamaan yang tidak harus dijalankan pada kecepatan pembaruan yang sama seperti rendering Anda.
Karena Anda akan mendapatkan waktu bingkai yang tidak rata jika Anda mengambil pendekatan naif dengan hanya melakukan tugas-tugas itu setiap N bingkai, cenderung bermanfaat untuk mengamortisasi biaya melalui beberapa bingkai.
Jika tugas bersifat incremental, Anda dapat menjalankan sebagian dari algoritma setiap frame dan menggunakan hasil parsial dalam pembaruan Anda.
Jika tugas sebagian besar monolitik tetapi dapat dipisahkan per entitas, Anda bisa melakukan tugas itu untuk subset entitas game Anda per frame, berputar di antara mereka dalam mode round-robin. Ini memiliki manfaat mengurangi kompleksitas hal-hal seperti merintis jalan dan AI, karena Anda tidak memiliki semua orang yang mencoba untuk bertindak sekaligus.
Dalam RTS taktis skala besar yang saya kerjakan, kami fokus pada memiliki struktur data yang kuat untuk menanyakan representasi tingkat rendah dalam algoritme tingkat tinggi, untuk menemukan tetangga entitas game. Proses pembaruan tingkat rendah bertindak berdasarkan niat yang disediakan oleh simulasi tingkat tinggi yang memperbarui lambat, dan pada akhirnya bermuara pada simulasi partikel murah, meningkatkan hingga ribuan.