Entonces, existe este proyecto llamado BulletML, que es un lenguaje de marcado para crear patrones complejos de partículas / viñetas. Seguramente necesitarás portar el código a tu propio idioma, pero puede hacer algunas cosas realmente sorprendentes.
Por ejemplo, este jefe se realizó en una extensión (muy modificada) de BulletML para Unity3D (el autor de ese patrón subió ese video y Misery es una locura, así como buena 1 ). Es la variación más difícil de ese enemigo y muestra lo que BulletML es capaz de hacer bastante bien (y echa un vistazo a algunos de los otros jefes de Misery, como Wallmaster ).
O puedo mostrar este ejemplo, que es un patrón que escribí mientras trabajaba en una expansión para The Last Federation , usando una revisión anterior del sistema que es menos amigable con los mods y usa solo variables AZ de un solo carácter:
Las balas verdes que hacen esos anillos allí se generan a partir de una bala principal que gira a alta velocidad, pero no tienen movimiento. Infligen un daño masivo, manteniendo al jugador a un rango más largo, restringiéndolos a armas de menor daño y permitiendo a los defensores móviles acosar al jugador (el jugador gana si la estructura inmóvil en el medio allí fue destruida).
Aquí hay una parte de la sintaxis XML que crea esas burbujas:
<bullet_pattern name="Barrier">
$WallShotAngle B=.3 A=90
$WallShotAngle B=.3 A=-90
$WallShotAngle B=.3 A=0
$WallShotAngle B=.375 A=180
</bullet_pattern>
<var name="WallShotAngle">
<bullet angle="[A]" speed="4000" interval_mult=".01" dumbfire="1" shot_type="GravityWavePurple">
<wait time="[B]" />
<change angle="0" speed="1000" time=".0001" />
<spawn>
<bullet_pattern>
<bullet angle="[A]" speed="0" shot_type="CurveBarGreen" damage_mult="8">
<wait time="12" />
<die />
</bullet>
</bullet_pattern>
</spawn>
<die />
</bullet>
</var>
Puede ver algunas de las tomas púrpuras de "ondas de gravedad" en la captura de pantalla, que viajan casi instantáneamente desde la fuente (que gira) hasta el borde de la burbuja, con lo que genera la toma verde de "barra curva", que se encuentra allí durante 12 segundos antes desesperando Los tiros azules y amarillos que he omitido, ya que son mucho más complicados.
Misery escribió uno de los otros patrones (un proyectil de artillería ) en la expansión, aunque le hice algunas modificaciones. Inicialmente, es un disparo penetrante de bajo daño que vuela a gran distancia y luego explota en una gran exhibición de fuegos artificiales, infligiendo toneladas de daño. Su alcance máximo fue mucho más alto de lo que el jugador pudo lograr, esencialmente forzando al jugador a atacar a corto alcance, lo que fue ventajoso para los otros tipos de unidades NPC debido al efecto de escopeta (más balas agrupadas en una zona pequeña).
BulletML es fácil de trabajar, en general, y puede hacer cosas increíbles. Las viñetas pueden cambiar de dirección, cambiar la velocidad, generar otros patrones, morir temprano, repetir la recopilación de comandos en un bucle, usar retrasos, cambiar la imagen del sprite de bala, seguir a su padre (o no) ... Y cualquier cosa que no sea compatible con usted podría escribir en él
Definitivamente lo recomendaría si estás haciendo un juego serio de disparos. Aún necesitaría resolver las matemáticas de coordenadas para obtener las formas deseadas, como Charanor habla en su respuesta, pero un motor de bala como BulletML le dará mucha más flexibilidad que pasará más tiempo diseñando nuevos patrones que descubriendo cómo codificarlos.
- Para explicar cuán buena es Misery, esos videos están en contra de los jefes de piso con equipo de arranque : sin módulos, sin consumibles y el tirador básico de guisantes. Y xe solo recibe un golpe a pesar de la naturaleza alargada de la pelea. Ok, 9 golpes contra Centrifuge (que no aparece hasta el tercer piso después de que el jugador definitivamente tenga mejoras que resulten en al menos el doble de daño comparativamente).