Modelo III: Puzzles de bloques
Hoy traigo otro modelo de juego adecuado para programadores ya que sus exigencias artísticas son menores. Además, para ir variando y por probar algo diferente a ver si así atraigo un poco más de colaboración, al final vendrán algunas preguntillas en plan deberes ;) (Si no sabes de que va esto ve AQUÍ)
Definición: Para centrarme en un tipo de juego, dentro de la enorme variedad de juegos de puzzle existente, hablaré de aquellos en plan bloques, como el tetris, el columns y demás variantes.
Jugabilidad: Nos encontramos ante otro modelo de juego de vida prácticamente infinita. Creo que si contáramos el número de horas jugadas en total y la variedad de público a la que ha llegado, dividido por los recursos y el tiempo de desarrollo, sin duda el tetris se llevaría la palma.
Estos juegos tienen dos trucos:
* Nunca paran, con lo que si no quieres perder tu puntuación tienes que continuar la partida hasta el final.
* Cada vez son más difíciles/rápidos, lo que hace que el reto siga en pie y cada vez tengas menos tiempo para pensar en que deberías estar haciendo otra cosa más provechosa :P
La dificultad en el Tetris constaba simplemente en la velocidad del juego. Si el juego tiene una mecánica de colores o formas, como el columns, podemos aumentar la dificultad aumentando el número de colores o figuras disponibles, con lo que será más difícil ir juntando muchas del mismo tipo.
Dificultades técnicas: Como dije al principio este es un tipo de juego que no requerirá de un gran talento artístico. Una imagen para cada tipo de pieza o incluso simplemente cuadrados de colores y un panel informativo con los datos que todos esperamos de un tetris (puntuación, nivel, pieza siguiente) Son toda la labor gráfica.
En cuanto a programación se me ocurre que este tipo de juegos se pueden controlar con una matriz que represente el estado de cada casilla y operaciones sobre ella. Por ejemplo, para el tetris podríamos tener una matriz de 1s y 0s (1 - casilla ocupada, 0 - desocupada) y que la pieza que entra se escriba por ejemplo con 2s, cada X ms comprobamos (dependiendo del nivel) si debajo de todos los dos hay un cero u otro dos, en cuyo caso bajamos la pieza una fila, en caso contrario no bajamos la fila y cambiamos los 2s por 1s y intentamos poner la siguiente pieza. Antes de sacar la pieza siguiente, comprobamos la matriz de estado por filas, si alguna fila está completa la ponemos a 0 y copiamos la fila superior, operación que repetiremos hasta que la fila superior no tenga ningún 1 o sea la última. Mientras, el movimiento de la pieza se haría de forma asíncrona mediante listeners o señales de teclado. Para comprobar si el jugador ha perdido comprobamos si alguna de las piezas de 2 quedó en la última fila.
Este es un ejemplo, debe haber otros muchos, muchos mejores y alguno peor. Aquí viene la primera pregunta de la entrega: ¿Se os ocurre otra implementación? ¿Habéis hecho un tetris por vosotros mismos y lo hicisteis de otra forma? Contadlo en los comentarios, tanto yo como los que lean este artículo lo agradecerán ;)
En cuanto a los juegos tipo columns, podríamos utilizar el mismo sistema con un número para cada tipo o color de pieza. A la hora de comprobar tendríamos que comprobar más combinaciones, ya que habría que comprobar por cada una de las tres piezas, si enlazan en horizontal, vertical o diagonal con suficientes piezas de su mismo tipo y así recursivamente para eliminar todo el posible encadenamiento…
Extras y conclusión: Hay un juego de este tipo que no puedo dejar de mencionar. Siempre he pensado que el tetris era toda una proeza ya que con la mecánica más simple consigue llegar a todo el mundo y enganchar muchísimo, y que no había juego en su campo que le hiciera sombra. Hasta que llegó el Zuma. A los que no lo conozcáis: ¡Cuidado! ¡Puede ser terriblemente adictivo! El Zuma me parece uno de los pocos juegos de esta categoría que ha sido capaz de innovar y de hacerle sombra al todopoderoso Tetris. Y ahora vienen otras preguntillas. Para los jugones, para tratar de hacerlos pensar un poco y para los developers que nos cuenten posibles implementaciones y nos instruyan con su saber ;)
¿Qué otros juegos de este estilo has jugado que te parezcan innovadores, originales o terriblemente adictivos? Yo he puesto de ejemplo el Zuma, pero puede que haya muchos más por ahí escondidos… ¿Sois capaces de pensar en otra mecánica de eliminar cuadritos-bolitas e ir sumando? ¿Hasta donde está el tetris enraizado en nuestro subsconciente? (;P) Y por último y en relación a la implementación: yo he puesto un ejemplo para los juegos de tipo matriz de bloques, pero ¿Cómo implementaríais un Zuma? ¿Cómo hacer que las bolas sigan la linea y se separen o se junten a distintas velocidades? Es como un poquito de física… ¿Se os ocurre una solución limpia y fácil? No me parece un problema trivial.
Como siempre os dejo un par de links:
Tetris en la wiki, historia y detalles de diseño y modo de juego.
Zuma - Si te gustan este tipo de juegos tienes que jugarlo.
ACTUALIZADO: En el foro de Stratos alguien aportó un link muy interesante:
Tetris AI sobre cómo implementar IAs para tetris, muy recomendado ;)




