jueves, 25 de febrero de 2010

Mas fregados:

Decidi postponer lo del corelian corvete. Ya estaban funcionales las rotaciones de las imagenes y los laseres salen con el angulo correcto, de modo que pense que lo siguiente era hacer que los tie interceptor saldrian e direccion al xwing....

El problema es que las naves estan hechas de una manera chavacana en el bucle principal, lo cual es una mierda que solo vale para hacer pruebas de que las cosas que voy haciendo van funcionando, pero ahora que ya tengo las naves mas o menos completamente refinadas va siendo hora de hacer un mapa en el que colocar todos los grupos de sprites y que gestione como tienen que aparecer y que hacen cuando desaparecen....

De modo que me he puesto con el mapa, todavia estoy implementandolo, la idea es introducir:

  1. Una clase 'squad' que representaria a un grupo de naves atacando (p.ej. en formacion en 'V'
  2. Un mapa en el que haya:
  • Una lista de las squads que deben aparecer en orden cronologico
  • Un periodo T que me dira cuando tengo que lanzar siguiente elemento de la lista de squadras
  • Un almacen para cada nave de jugadores y uno para todas las naves enemigas (de modo que pueda controlar quien ha disparado que tiro para en el futuro asignarle una puntuacion)
  • Un almacen de naves y balas para cada tipo de nave, de modo que no tenga que hacer y destruir objetos cuando mueran enemigos: esto es, tener unos almacenes de naves 'vivas' que cuando mueran pasen a almacenes de naves 'muertas' y de ese modo no haya que crear objetos. Del mismo modo haria con los disparos
De modo que tambien he tenido que cambiar las fabricas de naves y disparos, ahora solo deben crear cosas nuevas si sus correspondientes almacenes de objetos 'muertos' estan vacios.

Esta 'mas o menos' hecho, tengo que sustituir la logica antigua por la nueva y hacer que todo funcione, pero es un cambio curioso, por lo menos me llevara una tarde.

Ademas estoy cambiando alguna bala: las que dispara el xwing, al ser calculadas por separado, a veces ocurre que se redondean diferente la coordenada 'y' y dos laseres que van a la par comienzan a ir uno por detras del otro... no mola, de modo que voy a ver si pienso como meter un laser como subobjeto del otro (con un offset en x) y asi solo tengo que calcular la posicion de uno

domingo, 14 de febrero de 2010

Vuelta a la realidad

Vuelvo, lo he dejado durante un par de meses pq he tenido examenes en la UNED y eso... Uno bien y el otro.... me faltaban apuntes, de modo que bastante mal...

En fin, he cogido ya el libro de openGL para la asignatura de este cuatrimestre, ya se dibujar rectas y puntos...  wow :P

El juego, ademas, ha sufrido importantes cambios en esta ultima semana, a saber:

-Acabe el tema de las animaciones, ahora cada tipo de objeto -nave, bala....- tiene un 'ImageAnimator' que es un contenedor de todos los frames que puede mostrar dicho objeto, internamente maneja 'animations' que son todos los frames que muestra un objeto al hacer algo (por ejemplo girar a la derecha, explotar...).

-Cambio, por lo tanto, la manera de dibujar los objetos del motor, ahora en vez de recibir 'dibujame este rectangulo de la imagen de frames del objeto en la pantalla' viene a ser 'dibujame el frame X de la animacion Y de el objeto Z', y como cada objeto tiene asociado un ImageAnimator, el motor va alli y se lo pide

- Me meti con las rotaciones de las imagenes de los objetos. Curioso, al rotar las imagenes no las rota sobre el centro de la imagen (no gira sobre su centro) sino que gira la imagen tomando como centro el extremo superior izquierdo de la imagen, esto es: si la imagen fuera un foleo la gira como si cogieramos por el extremo sup izquierdo y lo mantuvieramos fijo al girar... En fin, que hay que hacer una pequeña translaccion de ejes... La he hecho creando unos offsets que se restan a las coordenadas a la hora de pintar. El problema es que no se como afectara a las colisiones y a el calculo del movimiento (creo que solo afectara a las colsiones, pero tengo que probarlo...)

Tengo que probar tambien el tema de las mascaras, que debieran funcionar...

Ademas tengo un dibujo de un corellian corvete por ahi que va a ser lo proximo que haga:

Que aparezca en el juego y que tenga torretas que apunten y disparen....

Para hacer eso, se me ha ocurrido, puedo utilizar el nuevo invento de los offsets y hacer 'subObjetos' a los objetos, siendo estos subobjetos objetos cuya posicion depende de la de otro objeto, asi puedo meter ahi torretas, escudos, cañones adicionales (para power ups)....

Mmmmmmm no me acordaba de lo entretenido que es hacer esto-....