¿Debo limitar la cantidad de llamadas recurrentes en mi videojuego programado ya que demasiadas congelan mi juego temporalmente?

Tal vez estos enlaces ayudarán (no sé nada sobre Unity, pero encontré la siguiente búsqueda de (tasa de fotogramas lenta de búsqueda de recursividad de unidad):

Problemas de rendimiento con la ruta de AI

Tienda de activos

Esto es asombroso, pero si es demasiado, toma la versión gratuita

(36 de 41 encontró útil esta reseña)

Comencé con la versión gratuita (que es mejor y más fácil que muchas de las otras herramientas de búsqueda de rutas) del sitio web de Aron y quedé bastante impresionado. Fue fácil de usar y rápido de configurar. Actualicé a pro para obtener la funcionalidad de evitación de objetos. También veo que el autor revisa sus foros y responde preguntas con bastante frecuencia. Hay un buen trabajo puesto en esto y el autor continúa prestándole atención.

Unidad – Ejecutar un algoritmo de Pathfinding en un hilo separado

Optimización para grandes grupos de enemigos.

Y basado en una sugerencia en otro enlace, investigó Rain:

Tienda de activos

Y la búsqueda de (rendimiento de unidad pathfinding) produce:

http://gamedev.stackexchange.com/questions/60020/pathfinding-performance-in-unity3d

Una estrella:

A * Proyecto Pathfinding

Mejora de la eficiencia:

A * Pathfinding, múltiples enemigos, objetivo en movimiento. Consejo de eficiencia

El manual de Unity:

Navegación y Pathfinding

Más sobre Astar:

A * Proyecto Pathfinding

Curso de video 2D Unity 5 Pathfinding (no gratuito):

Unidad 5 2D: Pathfinding

Unidad A * Proyecto Pathfinding: Repath hace que el personaje se mueva en la dirección opuesta

Apex (no gratis):

Apex Path – Herramientas de juego Apex

La recursión causa cierta lentitud ya que muchas cosas suceden detrás de escena durante una llamada a la función, pero en realidad no debería hacer que su juego se congele.

Debe salir de la idea de que la recurrencia es la causa de su problema y comenzar a buscar en otro lado. Por suerte para ti, Unity tiene un gran generador de perfiles. Puede leer sobre esto aquí, pero la esencia básica es que determinará dónde se pasa el tiempo ejecutando.

Es más que probable que el 10% de su código esté ocupando el 90% del tiempo de ejecución según la versión de software del principio de Pareto. Esto significa que con la ayuda del generador de perfiles puede identificar ese 10% de su código y trabajar para optimizar solo esa parte de su código.

Deja de preocuparte por la recursividad.

Ciertamente es posible que la recursividad haga eso, dependiendo de cómo se implemente cuando se compila.

Cualquier recursión puede reescribirse como un bucle. Mi mejor sugerencia es probar eso y ver si ayuda. No debería tomar mucho trabajo.

Si no ayuda, solo tendrá que comenzar a optimizar. Determine qué grupos de líneas se ejecutan con mayor frecuencia, intente reescribirlas de manera más eficiente y vea si hace una diferencia apreciable.

“¿Debería limitar la cantidad de llamadas de recursión en mi videojuego programado ya que demasiadas congelan mi juego temporalmente?”

No parece que la recurrencia sea tu problema tanto como la eficiencia.

Si tiene algún procedimiento que es lo suficientemente ineficiente como para que su velocidad de cuadros disminuya porque toma demasiado tiempo calcularlo, básicamente tiene dos opciones.

Puede refactorizarlo para que sea más eficiente o dividirlo en varios cuadros.

Sugiero profundizar en la programación dinámica si está actualizando en cada paso del tiempo.

Una función recursiva puede requerir [math] \ mathcal {O} (n) [/ math] pasos en cada iteración, sin embargo, con la programación dinámica, puede reducirla a [math] \ mathcal {O} (1). [/matemáticas]

A veces un compromiso es el mejor enfoque. Si, por ejemplo, puede disminuir la precisión (de la búsqueda de rutas en su caso) al 95% mientras disminuye el uso del tiempo de CPU al 10%, hágalo.