Mostrando entradas con la etiqueta Hotkanoid. Mostrar todas las entradas
Mostrando entradas con la etiqueta Hotkanoid. Mostrar todas las entradas

miércoles, 10 de enero de 2018

Diario de desarrollo: Hotkanoid (II)

Llegó el momento de comenzar a pegar bloques como un poseso en las distintas pantallas. Para hacerlo de forma más fácil, pinché en la opción "snap to grid", obviamente habiendo antes activado la opción de Grid, y la configuré con las dimensiones de los sprites de los ladrillos. De esa forma evité tener que forzar mi pulso para que no hubiera espacios entre ellos.

La dificultad vino a la hora de pensar en la forma de colocarlos. ¿Ocuparían toda la pantalla como un muro monolítico? Puede que para un nivel estuviera bien, pero lo deseable sería tener algo de variedad. Disponía de varios colores para los ladrillos, así que lo primero que hice fue seleccionar dos o tres, con los tonos que más se ajustaran a los presentes en las fotos del fondo de pantalla. Luego comencé a crear pequeñas estructuras de pocos ladrillos, y los iba combinando formando figuras más complejas o, en algunas ocasiones, palabras o letras. En otros niveles, lo que hice simplemente fue recubrir con ladrillos los atributos más deseados de las chicas. Con todo, esta configuración inicial sufrirá cambios en cuanto comience el proceso de prueba del juego. Para que no sea demasiado complicado o demasiado fácil puede que me vea obligado a eliminar bloques o añadirlos, además de sopesar el uso de obstáculos.

Tras una hora rompiéndome la cabeza, lo único que me quedaba por terminar era la lógica del juego, que ya tenía definida para el primer nivel, por lo cual era un mero trámite. Para contar el número de ladrillos colocados en cada pantalla, los seleccionaba todos, pues MMF2 te muestra el número de objetos seleccionados en la parte inferior derecha de la ventana. Lo demás era cuestión de copiar, pegar y modificar los ladrillos y los tiles según el que correspondiera.

Pequeños detalles a retocar. Hasta ahora estaba usando un active picture para implementar el que la pelota saliera de la pantalla por la parte baja, pero echando un vistazo al tutorial caigo en la cuenta de que se puede hacer igual con la función que viene por defecto, que comprueba si un objeto ha abandonado el frame por alguno de sus lados.

Lo siguiente es colocar la puntuación. Para eso añadimos el objeto Score y como me parecen un poco cutre los números que se muestran, buscaré en Internet otros que tengan más flow. Siempre quise escribir esa palabra en un post. La lógica de la puntuación es sencilla, cada vez que la bola choca con un ladrillo, se le añade los puntos que queramos a la variable Score. Además, no quiero que se reinicie el frame porque al poner la puntuación he caído en la cuenta de que el puntaje se mantiene pero hay más bloques para romper, con lo cual para conseguir más puntuación, se podría sacar ventaja haciendo el mayor puntaje posible y perder una vida de forma voluntaria. Por ello, cuando la bola desaparezca por el fondo de la pantalla, indicaremos que se coloque en una posición a nuestro gusto y apuntando hacia las direcciones superiores para asegurarnos de que la bola se moverá hacia arriba.

Tras esto, el juego estaría prácticamente terminado, exceptuando por la música, pero se podría mejorar muchísimo. No lo haré, quizá en una hipotética continuación, pero se podría añadir un indicador del nivel en el que nos encontramos antes de comenzar, podríamos señalar el número de vidas, añadir power-ups, etc. Pero ya dije que el objetivo era simplemente crear un producto viable y pasar a otra cosa. Creo que el reto ha sido conseguido. No está para venderlo en el mercadillo de los sábados pero sí para pasar el test de "compliance" de Sony o Microsoft.

lunes, 8 de enero de 2018

Diario de desarrollo: Hotkanoid (I)

El año nuevo trae aparejado muchas cosas, entre ellas los buenos propósitos que queremos cumplir a lo largo de los siguientes 365 días. En esta ocasión, he dejado de lado clásicos como "ir al gimnasio" o "buscar trabajo", porque lo doy por imposible, y me he centrado en objetivos más sencillos de realizar como, por ejemplo, dar salida a todos los proyectos inconclusos que guardo en las profundidades de mi disco duro. Esto abarca desde relatos cortos hasta sagas literarias de fantasía.

Y aquí estoy, en los primeros compases de enero, intentando completar: Hotkanoid, un clon del clásico de Atari "Breakout", en el que tenemos que destruir un muro de bloques con la ayuda de una paleta móvil y una bola de metal como la que se tiraban a la cabeza los punkis en los 80 durante sus multitudinarias peleas por ver quién se quedaba con las últimas ráfagas de laca.

Clones de Breakout, o Arkanoid, como prefiráis, hay muchos, variados y modernos. Me permito recomendaros "Breakquest" de Félix Casablancas, posiblemente el mejor juego de este estilo que os podáis echar a la cara. ¿Entonces por qué embarcarme en un título más del género? Pues bien, hace ya... mucho tiempo, descubrí la existencia de Multimedia Fusion 2, un programa que facilitaba la creación de videojuegos de forma monstruosa. Cualquiera podía hacer un cuco plataformas o un shoot´m´up sencillo sin apenas saber leer. No mucho después me hice con él y empecé el tutorial, que proponía el desarrollo, precisamente, de un clon de Arkanoid con una temática basada en los dulces. A mí aquello me pareció muy ñoño y me pregunté si no sería más... excitante, usar como fondo de las distintas pantallas fotos de señoritas de buen ver, cuyos encantos quedarían recubiertos por bloques, y los cuales deberían ser liberados a bolazo limpio.

Dos horas después ya tenía seleccionadas las fotos de las chicas que usaría y ahí quedó todo,  durmiendo el proyecto el sueño de los justos durante un lustro, por lo menos, hasta el día de hoy. El desarrollo es sencillo. Empecé creando los frames para el logo de la "compañía" ficticia bajo la que publico todas mis chorradas interactivas, otro para la pantalla de título, uno por cada nivel y otro para la pantalla de Game Over. Puede que necesite más, quizá una pantalla para el High Score, pero por ahora eso será todo.

La lógica del programa es sencilla:

1. Aparecerá el logo de la empresa y tras 8 segundos, que es lo que dura la fanfarria asociada y compuesta con Magix Musica Maker 2014 (porque no soy Vivaldi precisamente), se pasará 
automáticamente al siguiente frame, el de la pantalla de título. El logo haremos que entre en pantalla desde arriba. Para ello, lo añadiremos al frame como un active picture y le asignaremos un movimiento de tipo path, que definiremos como nos plazca. Al inicio del frame haremos que el movimiento se detenga, y tras 3 segundos lo iniciaremos, para que aparezca en pantalla tras una pausa, y de paso demos tiempo a la música para que avance un poco.
2. En la pantalla de título mostraré un texto animando al jugador a que pulse cualquier tecla. Añado un objeto de tipo cadena de texto y hago que al empezar el frame, junto con la ejecución de la melodía correspondiente, el texto se muestre de forma intermitente durante 36 partes de un segundo (Esto seguro que tiene un nombre pero no lo sé). Cuando el jugador pulsa cualquier tecla, comenzamos con el primer nivel.
3. El jugador intenta acabar con todos los bloques que aparecen en pantalla. Si la bola cae por la parte baja de la misma, se reiniciará el frame y se restará una vida. Si perdemos tres vidas, aparecerá la pantalla de Game Over y se volverá al punto 2. Si conseguimos romper todos los bloques, pasaremos de nivel, y así hasta terminar la fase 22, tras la cual (por el momento), aparecerá la pantalla de Game Over.

La pantalla de Game Over es muy sencilla, consiste únicamente en una imagen del mismo tamaño que el frame. Tras varios segundos, se pasará automáticamente a la pantalla de título.

Ahora llegamos al punto más trabajoso: el diseño de niveles. Usamos una de las sensuales imágenes (tras haber cambiado su resolución a la del juego: 800x600) como background. Añadimos un active picture para nuestra paleta, y le asignamos un movimiento de 8 direcciones, aunque solo permitiremos que se mueva a derecha e izquierda. Colocamos la paleta en el lugar que consideremos oportuno, en este caso centrado y algo más arriba de la parte baja del frame. Añadimos después otra active picture para la bola y le asignamos un movimiento bounce con una dirección inicial hacia abajo. Por ahora no tocaremos nada más. A continuación, tenemos que decirle a la máquina que cuando la pelota choque contra la paleta, esta rebote, con un movimiento bounce y una dirección que comprenda todo el semicírculo completo de arriba. A continuación, usamos un active picture o active object, para definir las áreas de juego: los laterales y la zona superior para que la bola rebote (bounce) cuando choque contra ellas, y la inferior, para definir que no hemos llegado a tiempo para salvar el punto, perder una vida y reiniciar el frame. Con una imagen decoraremos los laterales para añadir algo de calidad gráfica a las pantallas y tener más claro dónde rebotará la bola. Si usamos tiles para la decoración, no será necesario definir las áreas de rebote con active objects.

Usamos active objects para los ladrillos, los colocamos donde queramos en pantalla y definimos que cuando la bola choque con ellos, se destruyan y la bola rebote. Además, se añadirá un punto a Score y sonará un efecto de sonido.

Por último, surgía una cuestión: ¿cómo saber cuándo pasar de nivel? Creamos una variable global, en mi caso "ladrillos", que será asignada al inicio de cada nivel con el numero de ladrillos presente en el mismo. Con cada ladrillo roto descontaremos uno a dicha variable, y en el momento en el que el numero de ladrillos sea igual a cero, saltaremos al siguiente frame.





Y esto dio de sí el primer día. Creo que tengo todo bien encarrilado. Me quedan colocar los ladrillos de varios niveles y pensar en la modificación de los escenarios y el balanceo de los mismos, para que no se haga demasiado aburrido jugarlo. En cualquier caso, se trata más bien de presentar un producto terminado, sin ninguna otra aspiración artística o económica.

Backside Games Studios

Backside Games Studios © 2014 - Designed by Templateism.com, Plugins By MyBloggerLab.com | Published By Gooyaabi Templates