Hay dos cosas distintas a tener en cuenta al medir y optimizar el rendimiento de un sistema de entidades a gran escala.
En el nivel bajo, tiene la representación física de sus entidades que tiende a reducirse al uso de diseños de almacenamiento eficientes como SoA (estructuras de matrices) para reducir el costo de iterar y actualizar todas las entidades activas.
En el nivel superior, tienes lógica de toma de decisiones, lógica general del juego, IA y búsqueda de caminos. Estas son todas las tareas que tienen en común que no tienen que ejecutarse a la misma velocidad de actualización que su representación.
Como obtendría un tiempo de trama desigual si toma el enfoque ingenuo de solo hacer esas tareas cada N tramas, tiende a ser beneficioso amortizar el costo en varias tramas.
Si la tarea es de naturaleza incremental, puede ejecutar parte del algoritmo en cada cuadro y utilizar resultados parciales en sus actualizaciones.
Si la tarea es en gran parte monolítica pero separable por entidad, puede realizar esa tarea para un subconjunto de sus entidades de juego por fotograma, rotando entre ellas de forma circular. Esto tiene el beneficio de reducir la complejidad de cosas como la búsqueda de caminos y la IA, ya que no todos tienen que tratar de actuar a la vez.
En el RTS táctico a gran escala en el que trabajé, nos centramos en tener estructuras de datos robustas para consultar la representación de bajo nivel en los algoritmos de alto nivel, para encontrar a los vecinos de las entidades del juego. El proceso de actualización de bajo nivel actuó según las intenciones proporcionadas por la simulación de alto nivel de actualización lenta, y al final se redujo a una simulación de partículas barata, aumentando a miles.