Método de desove enemigo en un tirador de arriba hacia abajo

20

Estoy trabajando en un tirador de arriba hacia abajo similar a DoDonPachi , Ikaruga , etc. El movimiento de la cámara por el mundo se maneja automáticamente con el jugador capaz de moverse dentro de la región visible de la cámara.

En el camino, los enemigos tienen secuencias de comandos para engendrar en puntos particulares a lo largo del camino. Si bien esto parece sencillo, pude ver dos formas de definir estos puntos:

  1. Posición de la cámara: engendra 'disparador' cuando la cámara pasa por los puntos
  2. Tiempo a lo largo del camino: "30 segundos, genera 2 enemigos"

En ambos casos, se definirían las posiciones relativas a la cámara, así como el comportamiento del enemigo.

A mi modo de ver, la forma en que define estos puntos afectará directamente cómo funcionará el 'editor de niveles', o lo que sea que tenga.

¿Habría algún beneficio de un enfoque sobre el otro?

Chris Waters
fuente

Respuestas:

7

Sugeriría colocar las posiciones de generación realmente en el mapa de fondo como nodos que son visibles desde algún tipo de editor de mapas. Puede representar un engendro shmup con dos variables:

  1. Posición desde la que son visibles por primera vez, que se visualiza mejor como un punto
  2. Distancia desde la pantalla inferior cuando debe generarlos.

Luego, puede visualizar la distancia desde la parte inferior de la pantalla como una línea vertical que apunta hacia abajo desde el nodo de generación (que podría visualizarse como una versión gris del enemigo o algo así). Cuando la parte inferior de la pantalla toque esa línea, aparecerá. Esto te permite hacer todas las ediciones enemigas por completo en algún tipo de editor visual, y te da una visión general de todo el flujo del juego.

Ben Zeigler
fuente
Re 2) Por supuesto, en la exportación tendría que invertir este código (es decir, por fila, qué puntos de generación deberían activarse, ya que con este sistema debe tener en cuenta algunos puntos de generación antes de que sean visibles. Sin embargo, un detalle, esta es de hecho la forma más lógica.
Kaj
1
Como nota, asegúrese de estar utilizando un editor que le permita cambiar fácilmente los nodos a granel. Al configurar tu nivel de shmup, estarás insertando y eliminando enemigos, y ajustando constantemente los tiempos en el medio de tu nivel, y tener que cambiar todas tus entidades de una en una te matará.
ZorbaTHut
Me encanta esta idea, ya que realmente hará que la edición sea mucho más fácil, lo que siempre es una ventaja
Chris Waters
7

Sin embargo, la posición de la cámara para generar probablemente sería más flexible, ya que podría modificar la ruta sin tener que preocuparse por un gran efecto dominó.

Si vas con engendros de tiempo, será un gran dolor agregar o eliminar el camino porque tendrás que modificar muchos engendros enemigos.

Otro problema que veo es ajustar la velocidad de la cámara. ¿Realmente quieres ir y tener que ajustar los engendros enemigos solo porque has hecho que la cámara se mueva un poco más rápido o más lento? Además, deberías jugar a través del nivel una cantidad horrible de veces solo para encontrar tiempos de generación o ajustes para ellos.

David Young
fuente
2

Recomiendo no mover "la cámara" en absoluto; considere al jugador y a los enemigos en el mismo espacio de coordenadas fijo en todo momento. Los enemigos y el desplazamiento en segundo plano deben coincidir con una línea de tiempo independiente. Hace que todas las matemáticas sean más fáciles.


fuente
Estoy medio de acuerdo contigo. Definitivamente, la física shmup es falsa y se basa en que la nave no avanza realmente. Dicho esto, la pregunta sigue siendo válida, ya que tiene una cámara, etc. para tener en cuenta
Iain
De hecho, no invalida la pregunta. Todavía es tiempo versus distancia (virtual) recorrida. Si mueve el reproductor hacia adelante o el fondo hacia atrás es simplemente una capa conceptual. Además, desacoplarlos para facilitar las matemáticas puede hacer que otras cosas sean mucho más difíciles, como poner enemigos en el fondo (torretas), hacer que eviten objetos de fondo o tener colisiones en el fondo.
Kaj
1

Yo iría por la posición de la cámara. Usar el tiempo lo hará bastante difícil si desea que una ruta enemiga coincida con algunos gráficos en su archivo de mapa (como los enemigos que siguen una ruta curva). También le permite acelerar el desplazamiento sin cambiar los puntos de generación.
La otra cara es que acelerar el desplazamiento hará que los enemigos vengan más rápido. Lo que podría considerarse un plus (la aceleración sería una dificultad) o un negativo (la velocidad de desplazamiento influye en el ritmo).

Kaj
fuente
1

También estoy trabajando en un juego de disparos espaciales. Lo que hice fue usar un objeto de juego vacío llamado GameController. agregó un componente de script llamado GameController.cs que controla la parte de desove como,

  • Almacenar una lista de puntos de desove [matriz]
  • Dale a cada enemigo un peso específico y puntos. El control de peso de la tasa de generación de enemigos si un enemigo tiene un peso alto tiene una buena posibilidad de elegir en cada nivel.
  • Luego, cada vez verifique el Nivel actual y elija un número aleatorio, si el número es menor que el peso, genere ese enemigo asociado. Espero que haya ayudado.

http://www.youtube.com/watch?v=VqFJsU63GRo

jquery404
fuente
0

Los colocaría en el fondo del mapa grande e incluiría su ruta de movimiento inicial en ese mapa. De esa manera, podría cambiar la ruta de la cámara más tarde de manera significativa en lugar de tener que cambiar la ruta y el tiempo por separado.

Wolfdawn
fuente