Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Modelo III: Puzzles de bloques

Iniciado por Güarmigue, 17 de Junio de 2007, 11:44:47 PM

« anterior - próximo »

Güarmigue

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Í)

(Como siempre y porqué así se decidió por votación ;) también lo tenéis en el blog, siempre me parece más bonito allí :P)

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.
url=http://deadchannel.blogsome.com]Dead Channel[/url] - Blog de informática, juegos, tortugas y lo que me viene dando en gana ;P

Mars Attacks

Bueno, entre el tetris y el zuma está el Frozen Bubble (que es una variante del original del que no recuerdo el nombre). Tiene 100 pantallas, y con eso lo digo todo :D

sés

Siempre me gustaron Puzznic y Plotting :)
Soy indeciso... ¿o no?

matriax

Mars no te referiras al Puzzle Bubble?

Yo he jugado a los que comentas, Tetris, zuma, ploting.. y son adictivos a su manera.

La unica pega que les veo(si se le puede llamar pega) es que es solo para 1 jugador. Y entrando en estos tiempos siempre es bueno pensar poner modo multijugador y poder divertirte con mucha mas gente y alargar la duracion del juego y aumentar la diversion.

No se si conocereis esta pagina www.globulos.com, son como minijuegos en flash protagonizados por estos "globulos" para jugar contra gente de internet y bueno te lo pasas bastante bien, para mi el que mas me gusta es el de "futbol" por llamarlo de alguna manera.

Yo por ejemplo es lo que estoy intentando hacer con mi juego de tetris. Tendra un modo historia para jugar contra la CPU y multiplayer contra otra perosna , un modo de selecion de personajes, habra especiales, combos, etc.. , vamos como un modo de lucha tipo "gems fighter" que es un tipo columns con personajes del street fighter. Y bueno las reglas del tetris seran las mismas con el añadido que habran algunos bloques de hielo, agua o fuego para hacerlo un poco mas variado y menos repetitivo y contara con unos 100niveles, sin contar si ponemos niveles bonus o cosas asi.

Y juegos de este tipo que sean adictivos pues por ejemplo el Columns, o un juego de taito que ahora no me acuerdo del nombre que tambien se las traia y estuve enganchado una temporada.
Pagina Oficial: http://www.taykron.com
Flash Portal : http://www.arkatia.com
Blog Personal : http://matriax.blogspot.com/

CoLSoN2

Y bueno, el Zuma en si tampoco es muy original que digamos.. Eso sí, convirtió el género en un éxito de ventas.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Mars Attacks

No todos son para un solo jugador. Justamente en algunas variantes de tetris o el frozen bubble (o puzzle bubble, ése era), es más divertido jugar a dobles cuando el éxito de un jugador se convierte en "la ruina" del otro :D

Ah, antes se me olvidaba: supongo que en el tetris, darás la partida por acabada cuando algún 2 se te quede antes de la última fila (si aún está en la última fila, el movimiento sigue siendo bueno). ¿Habría que añadir una (o dos) filas extra fuera de pantalla?

Otra pregunta que siempre me ha asaltado: ¿hay algún algoritmo específico para decidir cuál va a ser la siguiente pieza o es completamente al azar? Siempre he tenido la sensación de que a veces soltaba más piezas completamente cuadradas cuando habían huecos impares y al contrario.

matriax

En teoria en el tetris normal es digamos azar, aunque dependiendo de la partida pues es posible que salgan mas de una que de otra, pero es azar(o eso creo)

En el juego que estoy haciendo del tetris, habran algunos niveles que seran azar, pero habra otros donde ya podemos configurar la probabilidad de salida de las piezas para ajustar un poco la dificultad, por ejemplo la barra roja que tanto gusta solo un 10% y cosas asi y los que mas salen pues la L y los de zigzag para complicar la vida.

y bueno aui dejo una cosa que encontre el otro dia, un tio con la gameboy durante 30min se hizo el record de 999.999 puntos http://www.youtube.com/watch?v=keeSEJG4XzU

Aunque con los emuladores que hay etc... quien no dice que le haya dado a los pauses y luego lo haya retocado y tal XD ...
Pagina Oficial: http://www.taykron.com
Flash Portal : http://www.arkatia.com
Blog Personal : http://matriax.blogspot.com/

CoLSoN2

Cita de: "Mars Attacks"No todos son para un solo jugador. Justamente en algunas variantes de tetris o el frozen bubble (o puzzle bubble, ése era), es más divertido jugar a dobles cuando el éxito de un jugador se convierte en "la ruina" del otro :D

De este tipo, mi favorito es Baku Baku Animals. Lo jugué en Saturn y para PC hay versión también, pero el juego va en 256 colores y creo que ya no me funciona hoy en día.. :_(
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Güarmigue

Yo también me eché mis ratillos con el baku baku (la demo en verdad y creo que lo alquilé para saturn xD).  

CitarAh, antes se me olvidaba: supongo que en el tetris, darás la partida por acabada cuando algún 2 se te quede antes de la última fila (si aún está en la última fila, el movimiento sigue siendo bueno). ¿Habría que añadir una (o dos) filas extra fuera de pantalla?  

Sí, supongo que lo más cómodo sería controlar con algunas filas fuera de pantalla. Aunque también depende de la implementación, hay tetris donde puedes mover la ultima ficha aun teniendo el centro lleno, tratando de escurrirla hacia los laterales (en realidad es lo mismo, morirás 2 turnos más tarde :P) y otros que tienen una línea de máximo a una altura determinada de la pantalla y si algún bloque la sobrepasa: perdiste.

Estoy deacuerdo en que suele ser más divertido en multijugador, pero todos tenemos nuestros ratillos muertos y el pique con uno mismo también puede ser interesante. No olvidemos por ejemplo los juegos en móviles, en DS o los casual, aun hay mucho hueco para los juegos de 1 player (y siempre lo habrá).
url=http://deadchannel.blogsome.com]Dead Channel[/url] - Blog de informática, juegos, tortugas y lo que me viene dando en gana ;P

Güarmigue

CitarY bueno, el Zuma en si tampoco es muy original que digamos.. Eso sí, convirtió el género en un éxito de ventas.

No conocía el puzz loop, sin duda el Zuma sigue siendo para mi un juego realmente bien rematado, pero acabas de quitarle un par de puntos :P
url=http://deadchannel.blogsome.com]Dead Channel[/url] - Blog de informática, juegos, tortugas y lo que me viene dando en gana ;P

matriax

Una preguntita.

Como estais en un juego de puzzle, tetris y tal.

Como se haria que la CPU jugara al tetris? Ya que estamos buscnado y no encontramos mucho. ¿Como se deberia de programar la IA o forma para que supiera donde meter cada bloque en su sitio?

Algunos manuales, codigos fuente o cosas asi como informacion ¿?

Saludos!
Pagina Oficial: http://www.taykron.com
Flash Portal : http://www.arkatia.com
Blog Personal : http://matriax.blogspot.com/

Pogacha

CitarComo se haria que la CPU jugara al tetris? Ya que estamos buscnado y no encontramos mucho. ¿Como se deberia de programar la IA o forma para que supiera donde meter cada bloque en su sitio?

O sea ... cada vez que va a salir un bloque nuevo tomas el bloque y lo pruebas en todas las posiciones posibles donde podrias ponerlo, por cada una de estas posiciones pruebas todas las posiciones donde podrias poner el siguiente bloque tambien. Por cada combinación evaluas Puntos_Obtenidos_Totales - Altura_Subida*Factor_De_Altura_Subida - Huecos*Factor_De_Huecos - Si_Move_Aca_Pierdes * MAXIMO_PUNTAJE_NEGATIVO.
Por cada combinación evaluas si es posible también, si la combinación de movimientos para llegar a esquema es posible (haciendo otro backtracking)
Luego te quedas con el que mas alto puntaje tenia y lo ejecutas ya previamente planificado en el backtracking de validación.

La funcion de evaluación es una heuristica ya que se desconocen los bloques siguientes. Mientras mas elaborada sea tu heuristica mejor jugará tu tetris.

El algoritmo puede simplificarse o complicarse todo lo que tu quieras, pero esa es la idea.

Saludos

Mars Attacks

Te has dejado el tema de hacer parafernalias durante la bajada, para que parezca como que juega (siempre atendiendo a no fastidiarla chocándose contra algo).

matriax

Jejeje si estuviera aki el programador os diria "Si muy bonito, si eso ya lo se la idea es esa , pero lo dificil es como programarla" XDDD

Vmoas que tenemos varias ideas y hemos visto algo en inet, y formas como tratar a los bloques como "1" y huecos como "0" y que el ordeandor evite situaciones donde haga:

111
101
111

Y cosas asi para que juegue bien, etc... pero como me dice, lo dificil es programarlo. Ademas de que parezca humano y no juegue perfecto que tambien cometa errores y cosas asi.

Le dire que se pasa por aki o que vea esto a ver que opina pero me imagino que diria eso XD
Pagina Oficial: http://www.taykron.com
Flash Portal : http://www.arkatia.com
Blog Personal : http://matriax.blogspot.com/

Pogacha

Serán unas 500 lineas de codigo ... y ya planteado los algoritmos que tenes que usar no veo complejidad alguna. Se puede escribir perfectamente en 8 horas de trabajo.

El ejemplo que me nombras me hace ver que no gozan del conocimiento teorico necesario ...
No hay una forma de resolver este problema, hay millones.
Traten primero de resolver un "Solitario Frances", luego un "Trabado" y así ... en poco tiempo tomaran agilidad.


Saludos!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.