Proyectiles, Partículas y Nombre
Como comentaba en mi post anterior, crear un Niagara System por proyectil (o incluso por partícula) al final ha demostrado ser muy poco eficiente. Aguantaría el workflow típico en UE, pero en nuestro caso estamos escalando los números de todo (proyectiles, enemigos, hits, etc.) a cantidades que no podemos manejar con lo que se “suele” usar.
Como los proyectiles y las partículas son relativamente dinámicos en cuanto a su renderizado, opté por probar durante unos días a implementar un sistema que use un solo Niagara System, ya que cada System adicional tiene un coste adicional, y que nuestro código inyecte dinámicamente una colección de posiciones y rotaciones. De esta manera, en teoría, todo el movimiento y renderizado de esas partículas ocurre en la GPU y con mínimas Draw Calls.
Al final, fue más fácil de lo que parecía desde fuera una vez me acostumbré a Niagara y su “Visual Scripting”, aunque eso no hizo que mis predicciones de tiempo fueran correctas; al final tardé más de lo esperado igualmente x)
Aun así, este sistema no está exento de problemas. El setup de cualquier partícula a añadir va a ser bastante más complicado y necesitará trabajo específico. También está por ver si el rendimiento en GPUs más antiguas es adecuado.
Aun así, el resultado por ahora es sorprendente y está excediendo todas nuestras expectativas de rendimiento. Sin hacer optimizaciones específicas, he llegado a tener varios miles de proyectiles en movimiento sin apenas notarlo.
Vídeo en el editor sin ningún tipo de optimización más allá del nuevo sistema:
Ayuda con el nombre
Seguimos dándole vueltas al nombre del juego. 'Survivors of the Wheel' es simplemente el que más nos gustó, pero está lejos de ser perfecto (o eso creemos).
¿Alguien tiene alguna sugerencia? ¿Os gusta el actual?