Movimientos de enemigos en Space-Shooter

Started by gecko, April 07, 2012, 12:19:05 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

gecko

Hola!

estoy intentando hacer un space shooter como el Tyrian por ejemplo, y estoy en la duda sobre como realizar los movimientos de los enemigos.

Los enemigos (o grupos de enemigos) entran en la pantalla, siguen una especie de riel, dan algunas vueltas por la pantalla y salen. Ahora mi duda es, como puedo llegar a realizar ese comportamiento?

Por lo que estuve investigando, tendria que usar matematica del estilo de http://es.wikipedia.org/wiki/Spline para ir dibujando las trayectorias...

Ahora la duda es... Alguien tiene idea de como hacer eso? existe algun metodo mas facil? Hay alguna herramienta que facilite esta tarea? Alguien tiene alguna otra idea?

Gracias! :)
Torres Baldi Studio
http://torresbaldi.com

Erkosone

Un gráfico rectangular, 2 puntos de control puestos uno en cada esquina , haces girar el gráfico y le dices a la primera nave que persiga la posición del segundo punto de control con get_real_point() o similar, la primera nave perseguirá ese punto de control que se mueve en circulos, la segunda nave que persiga a la primera, la tercera a la segunda.. y cuando el gráfico que tienes girando haya dado 2 o 3 vueltas completas lo sacas de pantalla con un simple x++..


Hacer este tipo de cosas en un lenguaje como Bennu está chupado ;)

KeoH

Quote from: Erkosone on April 07, 2012, 12:29:05 AM
Un gráfico rectangular, 2 puntos de control puestos uno en cada esquina , haces girar el gráfico y le dices a la primera nave que persiga la posición del segundo punto de control con get_real_point() o similar, la primera nave perseguirá ese punto de control que se mueve en circulos, la segunda nave que persiga a la primera, la tercera a la segunda.. y cuando el gráfico que tienes girando haya dado 2 o 3 vueltas completas lo sacas de pantalla con un simple x++..


Hacer este tipo de cosas en un lenguaje como Bennu está chupado ;)


Eso tiene el problema q cuando el jugador mate a una nave, las que van por detrás se quedan "huerfanas", y no pueden seguir a un proceso muerto xD


En en libro de "Programación Avanzada en DIV" se habla de una serie de STRUCT´s. Una primera estructura con informacion sobre cuantas naves habrá, q tipo de nave y otros datos, y entre ellos otra estructura dentro de esta q es formacion (que dice si estan en linea, en forma de punta de flecha. Dentro de la estructura primera (llamada grupos) hay otra más llamada trayectoria. Te copio las estructuras.



STRUCT grupos
  naves;    // numero de naves
  tipo; // tipo de nave
  resistencia;   
  formacion;  // ESTRUCTURA
  trayectoria;  // ESTRUCTURA
  .
  .
  .   //otros datos
end


STRUCT formacion[11]
    angulo;
    STRUCT nave[4]
        pos_x, pos_y;
    END
END


STRUCT trayectoria[9]
   tramos;
   velocidad_x;
   velocidad_y;
   STRUCT tramo[4]
        imagenes_por_tramo;
        aceleracion_x;
        aceleracion_y;
   END
END



Es lenguaje DIV, pero es (creo) totalmente igual a Bennu. Mas adelante en el texto explica como un proceso (DIV no tenia funciones) creaba estas formaciones con un simple bucle FOR gracias a toda la información q habia en las estructuras. Con esa informacion (no he puesto todos los campos de la estructura), ya el proceso nave sabe como moverse. Si quieres mas info puedo escanearte el libro xD (solo esa parte)


Y si .. me compré el libro xDD tengo los libros de DIV1 y 2 tambien :) mas wapos ellos .. muchas ideas mias salen de alli xD

Erkosone

Bueno, tampoco deben morir obligatoriamente, con representar la explosión, dar los puntos y dejar de visualizar su gráfico es suficiente, recuerdo el tema de usar tablas de posiciones para representar lo mismo e ir avanzando hacia la posición que sigue y tal, lo veo algo innecesario, aunque para gustos colores claro  :P
La opción que comentas también es buena.

gecko

aaaa entiendo entiendo.

Sobre la primera opcion suena interesante para ir cambiando de formas, pivotes, velocidades y angulos a ver que trayectorias se van dibujando en pantalla, muy al estilo espiralografo. Suena divertido, GRACIAS! :D

Y sobre la segunda opcion esta bueno, vas marcando puntos y luego la nave se encarga de segirlos, tambien es una buena estrategia, y lo de las formaciones es una idea excelente, GRACIAS!

Les cuento que estuve trabajando en una especie de editor de curvas de bezier, pero se me hace bastante complicado sobre todo porque no tengo todavia entendidas las formulas matematicas ( http://es.wikipedia.org/wiki/Curva_de_B%C3%A9zier ), por lo que es al tanteo lo que estoy haciendo, basandome en el ejemplo de la wikipedia (que al principio parece divertido ir tocando aca y alla, pero despues de muuchos intentos sin tener idea de que estaba haciendo, les recomendaria a todos o cambiar la estrategia, o sentarse a estudiar como corresponde).


Lo que estoy pensando ahora es que se podrian combinar las curvas que estoy haciendo con el sistema de trayectorias por estructuras... voy guardando algunos puntos de la curva en la estructura, y el resultado final deberia ser genial!

Pienso seguir unos dias mas con este editor de curvas, pero si veo que no va... seguramente pruebe sus metodos! gracias! :)
Torres Baldi Studio
http://torresbaldi.com

gecko

Ni siquiera se si es lo que voy a terminar usando finalmente... pero queria mostrarles los avances del editor :D

estuve mas tiempo luchando con la reserva dinamica de memoria que con las curvas en si :P




Torres Baldi Studio
http://torresbaldi.com

KeoH

#6
Pues está guapísimo!!! felicidades! .. habrá que echarle un vistazo!


Yo creo q si haces que la funcion que punta las curvas, exporte a una escructura las coordenadas de todos esos puntos, estaría estupendo para usarlo en trayectorias y cosas de esas.

FreeYourMind