domingo, 10 de marzo de 2013

Primeros test: La nave del jugador

La búsqueda de un equipo para desarrollar un videojuego, es algo difícil, requiere tiempo y muchas ganas, si bien como he comentado anteriormente ahora me tocaba esperar, y mientras, como no podía ser de otra forma me dediqué a crear pequeños test e investigar las distintas mecánicas que se esconden detrás de los shoot'em up verticales y 2D.

Para ello, teniendo montado el entorno de desarrollo y habiendo hecho varias pruebas con el, me dispuse a buscar algunos diseños para realizar los primeros test.
Y para encontrar unos buenos sprites nada mejor que googlear un rato con las palabras clave "shmup sprites" y con ello me topé con este fantástico pack de sprites que me venía muy bien para mi cometido.

Ahora tocaba empezar a desarrollar de verdad.
Lo primero que quise hacer es colocar la nave en pantalla, hacerla disparar y poner algunos sprites que representaran los enemigos, moverlos aleatoriamente y ponerles la misma forma de disparo que a la nave del jugador.

Mover la nave del jugador era simplemente hacer que siguiera el ratón, ya que en los móviles sería seguir el dedo. No me costó demasiado siguiendo la documentación de libgdx para los inputs de usuario.

El siguiente paso era hacer disparar a la nave del usuario, pense en hacer que disparara automáticamente mientras el usuario estuviera tocando la pantalla, lo que facilitaba el juego en dispositivos móviles. Así que con este planteamiento llegaba a la simplicidad de la sentencia:
Si el usuario está tocando la pantalla -> dispara
Esto dio en su origen una inundación de disparos en pantalla, pues disparaba tan rápido como refrescos sucedían en pantalla (el juego estaba corriendo a 60 fps) lo que hacía de ello una locura y planteaba el siguiente problema: ¿como hacer que dispare a intérvalos fijos y calculados una cantidad razonable de disparos. Para conseguir esto debería usar el tiempo del loop de juego y guardar su tiempo a intervalos regulares para compararlos con su actual, entonces llegaba a la sentencia:
Si tiempo guardado es mayor o igual a tiempo de loop -> autoriza disparo y guarda de nuevo el tiempo
Esto combinado con la sentencia anterior conseguía lo que yo necesitaba, disparos regulares y con una cantidad que podía controlar y resultaba razonable.
Con todo esto el gameplay básico de la nave estaba completo, era hora de pasar a implementar los enemigos básicos y su comportamiento...

No hay comentarios:

Publicar un comentario