Dado que la gente ya le ha informado sobre algunas de las soluciones técnicas, voy a abordar esto desde una perspectiva de diseño.
En primer lugar, ¿de cuántos zombis estamos hablando? ¿Y cuántas balas? 2 matrices de 100 elementos cada una no es realmente un gran problema, especialmente en una PC. Tal vez si se trata de un juego para dispositivos móviles, es posible que tenga un problema diferente con la ubicación de la memoria caché y los cpus más bajos, pero Ns más pequeños, algo que no me preocupa.
Como Daniel Super mencionó: ¡aquí hay más problemas que “ciclos de CPU zomg!”. Mi solución general para la detección de colisión para movimientos rápidos es hacer una verificación general (verificación del radio de colisión para el tamaño del movimiento del cuadro más un factor de fudge) para obtener una lista más pequeña para hacer verificaciones más complejas como las verificaciones de malla. Es un gran uso para AABB o cilindros de colisión.
- ¿Cómo se diseña el algoritmo de búsqueda difusa en Sublime Text? ¿Cómo diseñarías algo similar?
- ¿Cuáles son algunos algoritmos conocidos para encontrar una coincidencia perfecta en un gráfico bipartito?
- ¿Qué es la clasificación estable?
- ¿Qué debe saber todo programador sobre Lisp?
- ¿Es CLRS realmente una 'introducción'? Si es así, ¿qué sigue?
Pero antes de intentar “arreglarlo”, averigüe si es un problema. Perfílelo y vea exactamente cuánto tiempo pasa en las matemáticas. Si no está afectando el tiempo del cuadro, puede ignorarlo hasta que las cosas cambien.