Aunque no tenia previsto hace unas semanas publicar una nueva versión revisión de Wonderwall, un tetris realizado con C# y XNA, he sentido la necesidad de dejar el trabajo en un estado del que me sienta cómodo y aunque la documentación es casi tan importante como el código mismo (y más tratándose de un PFC) no quería siquiera pensar en la idea de presentar un proyecto del que no estoy satisfecho.

La beta 6 como bien indica es una versión aun preliminar y no se encuentra en el estado que yo deseo. Por eso tengo previsto sacar una última versión, en un principio, que ya es la Release Candidate (RC). Las diferencias entre la beta6 y la RC son de estética por eso, como me va a llevar un poco de tiempo terminar los preparativos para la RC, tardará más tiempo de lo habitual en salir y mientras espero terminar la documentación necesaria. Las previsiones serían que para diciembre la RC estuviese lista para publicarse y creo que hay tiempo suficiente para documentarlo todo por el camino.

Una vez comentados los planes que tengo a corto plazo pasemos a lo que trae esta Beta 6 que como pronto podrán ver no son pocas cosas.

- Se ha implementado el tipo de rotación Sega Rotation que es el que implementaba Sega en sus recreativas y posteriores Tetris. Hay pequeñas diferencias como la posición inicial pero el tipo de rotación es la misma. Este tipo de rotación no permite “wall kicks” que es que si la ficha esta apegada a la pared derecha o izquierda y colisiona, no se desplaza para que la figura pueda caber, simplemente no deja rotar.
Para ilustrar un poco que tipo de rotación utiliza ahora el juego pongo una imagen del tipo de rotación que sigue ahora el juego.
Sega Rotation
- Se ha añadido una nueva banda sonora al juego con un total de 7 canciones. Estas canciones siguen una licencia BY-NC-SA y son del tipo chiptunes o 8bits.
-Se ha añadido música al menú.
-Se ha añadido la posibilidad de quitar o poner los efectos y/o la música pulsando F1 para quitar la música o F2 para los sonidos.
- Se han cambiado los efectos sonoros para unos más adecuados. Estos nuevos efectos se utilizan tanto en el juego como en el menú. El resultado en mi opinión es una gran mejora.
- Se ha añadido la posibilidad de subir y bajar el volumen de la música con F4 para subir y F5 para bajar.
- Ahora puedes pasar a la siguiente canción con F6 o a la anterior con F5. Solo puede volver a la anterior y no más atras.
- Se ha implementado la posibilidad de que el jugado pueda utilizar la música de Windows Media Player para cuando esta jugando con Wonderwall. Para poder utilizar esta utilidad se debe crear en WMP una lista de reproducción que se llame “Wonderwall” y añadir allí las canciones que deseemos escuchar. Una vez creada al inciar el juego pulsar F3 para que se inicie la reproducción de la lista. Vuelve a pulsar F3 para volver a escuchar la música del juego.
Cuando se crea por primera vez la lista de reproducción puede que no sea reconocida al momento (no es problema del código). Para solucionarlo yo he creado una nueva lista de reproducción después de crear la de “Wonderwall” y me la ha detectado.
-Se ha implementado un sistema para mantener al usuario informado del estado actual del juego. Informa de la puntuación máxima, de la canción en activa y del control
del sonido del momento, pause, game over, etc…
-Se ha implementado un nuevo modo de juego llamado Puzzle Mode con el que deberás eliminar todos los bloques para terminarlo.
-Se ha implementado un nuevo modo de juego llamado Challenger Mode en el que debes ir superando los diferentes niveles de desafío para desbloquear los siguientes hasta conseguirlos todos. Al principio solo ves en la dificultad very easy y el nivel C+. A medida que vayas pasándolos desbloquearas niveles más dificiles y niveles de dificultad superiores.
Hay que hay aguantar un número fijo de lineas dependiendo del nivel y conseguir una puntuación igual o más elevada que la que se pide.
–Very easy: 100lineas
–Easy: 200lineas
–Normal: 300lineas
–Hard: 400lineas
–Insane: 500lineas
En esta modalidad de juego no bajan cada vez la figuras más deprisa pues ya van siempre al máximo. Dependiendo del nivel de dificultad este será mayor o menor.
Se encuentra en modo testeo todavía y no esta comprobado en demasiada profundidad aunque debería funcionar bien.
- Tanto en Puzzle Mode como en Challenger Mode existe una propiedad Mode que puede ser very easy, easy, normal o hard. La primera tiene sombra, preview y bloqueo, en easy tienes preview y bloqueo, en normal tienes solo preview y en hard no tienes ni sombra, ni preview ni bloqueo.
-Se ha cambiado la forma de valorar la dificultad. Ahora hay 5 niveles de dificultad: very easy, easy, normal, hard e insane.
– El nivel very easy empieza como si tuvieras nivel 19 de dificultad 1 hasta el 40 del mismo.
– El nivel easy va del nivel 11 de la dificultad 2 hasta el 21.
– El nivel normal va del 8 hasta el 15 de la dificultad 3.
– El nivel hard va de el 7 hasta el 12 de dificultad 4.
– El nivel insane va todo el rato a nivel 10 de dificultad 5.
Estos serían los niveles en base a la Beta 5.
-Dependiendo de la dificultad escogida los bonus saldrán a número de lineas distintas.
– En very easy sale cada 10 lineas.
– En easy sale cada 15 lineas.
– En normal sale cada 20 lineas.
– En hard sale cada 25.
– En insane sale cada 25.
- Se ha cambiado el color de la pieza número 3 de un gris a un morado para que este más acorde. La pieza gris ahora se utiliza en el Puzzle Mode y cuando existe Game Over para señalar las piezas que han colisionado.
- Se ha modificado la sombra para que sea menos confusa con la figura que representa haciendo más transparente.
- Se ha cambiado el icono del juego por uno mucho más bonito y apropiado.
- Al pausar ahora la música también se detiene.
- Ahora se valora el nivel de dificultad en todo momento tanto cuando se posicionan las piezas, en el borrado de linea y en el bonus. En very easy se valora en 100 y a cada nivel superior se multiplica por 2,3,4 y 5 en insane. De este modo se recomenpensa más a aquel que juega a una dificultad superior equilibrando en juego.

-correcciones de código:
Ajustado control de piezas: Ahora la pieza se espera un pocos milisegundos (160) antes de salir evitando posibles caídas de piezas involuntarias y que se desplace a los lados al salir mejorando el control.
Se ha ajustado el tiempo de espera en el bonus para que no interrumpa tant el juego y mejore la experiencia del jugador.
Se ha subsanado el problema con la sombra.
– Ahora solo existe game over cuando haya colisión con figura nueva, no por altura y marca con gris donde hay colisión.
– Ahora la starge también se guarda para futuras partidas.
– Los nombres del ranking quedan limitados a 6 letras.
El guardado ya no se hace con XML para evitar cambios por los usuarios aunque el ranking creará una copia en XML.
Ajustado el sonido del borrado de linea. Ahora suena cuando se borra y no después de haberse eliminado las lineas.

Los controles por defecto en esta versión son:
>Movimientos(*):
–Flecha arriba: caída instanea.
–Flecha abajo: abajo.
–Flecha izquierda: izquierda.
–Flecha derecha: derecha.
>Space: rotación .
>Enter: reservar pieza.
>Escape: Exit.
>Backspace: retroceder.
>P: pause.
>F1: Quitar/Poner música.
>F2: Quitar/Poner efectos sonoros.
>F3: Activar/Desactivar reproducción WMP.
>F4: Bajar volumen.
>F5: Subir volumen.
>F6: Reproducir canción previa.
>F7: Reproducir siguiente canción.

*No esta permitido movimientos diagonales.

La licencia es creative commons 3.0 by-nc-sa con la que puedes copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas haciendo referencia al autor, para usos no comerciales y manteniendo esta misma licencia.

Compatible con Microsoft Windows XP/Vista/7 (supongo). (Necesario Framework 3.5. En caso de no estar instalado se descarga automáticamente)

Capturas:

DESCARGAR JUEGO!

DESCARGAR CÓDIGO FUENTE!

|fuente imagen

Aun hay muchas cosas por comentar acerca de XNA y del desarrollo de Wonderwall pero si hay algo importante en el tintero es XACT. XACT es la plataforma que Microsoft a puesto a nuestro alcance con XNA para gestionar de un modo sencillo el audio y los efectos de nuestro juego.

Ahora mismo esta la versión XACT 3.0 la cual corresponde a XNA 3.1 pero tras probarla un poco lo cierto es que más que un 3.0 debería ser un 2.5. Las diferencias sin haber profundizado demasiado son mínimas con algunas mejoras pero ningún cambio sustancial ni que pueda hacer que alguien que sepa utilizar un poco XACT 2.0 (XNA 3.0) pueda utilizarlo como si se tratase del mismo. Por esta razón comentaré mínimamente las diferencias en pequeños comentarios y me centraré en como utilizar XACT en XNA.

Al contrario que con el resto de recursos que utilizamos en el juego, el sonido no debe (aunque se puede) incluir en el Content ya que deberíamos crear un pipeline que lo gestionara. Por esta razón no se añade el sonido al content sino que lo que se hace es entrar por la puerta de atras. Ahora me explico.

Cogemos todo el audio que queramos utilizar en nuestro juego y lo añadimos a la carpeta del Content pero no a través de Visual Studio sino por el explorador. Recomiendo crear en Visual Studio una carpeta en el Content llamada Audio o algo semejante para guardar ahí.

Una vez hemos copiado el audio en la carpeta del proyecto de juego a través del explorador vamos a la carpeta que esta en el inicio de Microsoft XNA Game Studio 3.x y en la carpeta Tool encontraremos las herramientas que vamos a utilizar, es decir, XACT.

Para poder utilizar todas las funcionalidades de XACT debemos antes iniciar el programa XACT Auditoring Utility o no podremos reproducir el audio. Una vez iniciado iniciamos XACT que se encuentra en la misma carpeta y se llama Microsoft Cross-Platform Audio Creator Tool (XACT).

Una vez dentro lo primero que hay que hacer para poder trabajar es crear un proyecto nuevo que pedirá un lugar donde guardarse. Una vez guardado debemos crear pulsando con el botón derecho un Wave Banks y un Sound Banks. Una vez creados recomiendo que a través del menú Window selecciones Tile Horitzontally para poder trabajar mejor.

Ahora tendremos en la parte inferior Wave Banks y arriba Sound Banks. Pulsamos con el botón derecho dentro de Wave Banks y seleccionamos insertar Wave file(s). XACT 2.0 solo trabajo con ficheros .wav pero XACT 3.0 permite trabajar también con ficheros xWMA. Es una de las pequeñas novedades que tiene XACT 3.0.

Una vez añadido los recursos audio que utilizaremos para el juego los arrastramos a Sounds Bank y pulsamos con el botón derecho en la ventana inferior de Sounds Banks y creamos una nueva Cue.

Lo importante es la Cue. La Cue es la lista de reproducción que se utilizará. Pueden haber tantas como desees y dentro de cada una puede haber tantas canciones como desees. Cuando añades varias canciones a la misma Cue estas tienen la misma probabilidad de salir. Esto es modificable pulsando sobre la canción de la Cue y cambiar el Weight al porcentaje deseado. El nombre de la Cue es importante. A través del nombre llamaremos a esa Cue para que reproduzca su contenido.

Ahora expliquemos un poco las opciones que tenemos con las canciones. Antes de añadir las canciones a la Cue podemos retocarlas pero con detalles bastante interesantes.

Por un lado esta el volumen (Volume) con el podemos augmentar o disminuir, el tono (Pich) con el que cambiarle el tono aunque también cambiará la velocidad. Y por último la prioridad (Priority). En Looping podemos hacer que una canción se repita un cierto número de veces o que se repita infinitamente.

Aunque en mi opinión el poder variar el volumen (Vol Variation), variar el tono (Pich Variation) es muy interesante para, por ejemplo, con un único sonido conseguir variaciones y tener más variedad. Y por otro lado esta el 360 Pan para aprovechar si se dispone de un equipo 5.1 con lo que podrás dirigir el sonido hacia una dirección con la primera casilla del Pan y una variación de la dirección con la segundo. Yo por ejemplo lo he utilizado para que los efectos vayan cambiando de altavoces y no sea siempre igual creando un efecto bastante interesante. Como trabajo en estéreo pongo el Pan a 90 y el ratio a 180 y va cambiado constantemente de altavoces (quitando el uso del altavoz central). Si trabajas con XACT 3.0 también hay unos pequeños filtros para modificar el sonido.

Hay más opciones como RCPs o Effects pero es profundizar un poco más adentro dentro de las posibilidades de XACT y para empezar no hay necesidad. Más adelante ya extenderé las posibilidades de XACT y siempre puedes ir probando tu.

Una vez ajustadas las canciones y añadidas a las distintas Cue guardamos y pasamos a Visual Studio C# con nuestro proyecto. Ahora, en la carpeta que habíamos creado de Audio añadimos el proyecto creado con XACT y ya tendremos todas las canciones que queríamos añadir añadidas. Por eso dije entrar por la puerta de atrás.

Ahora hay que añadir los elementos que controlarán el sonido. Estos son AudioEngine, WaveBank, SoundBank y Cue. Así que pasamos a añadir estos atributos a nuestra clase.

AudioEngine audioEngine;
WaveBank waveBank;
SoundBank soundBank;
Cue trackCue;

Ahora hay que incializar las variables.(GameAudio es el nombre del proyecto que hemos añadido en el content hecho con XACT)

audioEngine = new AudioEngine(@"Content\Audio\GameAudio.xgs");
waveBank = new WaveBank(audioEngine, @"Content\Audio\Wave Bank.xwb");
soundBank = new SoundBank(audioEngine, @"Content\Audio\Sound Bank.xsb");

Ahora solo queda añadir en el método Update el audioEngine.Update(); para que se actualice. Para que hacer sonar una canción

trackCue = soundBank.GetCue("nombredelacanción");
trackCue.play();

Para hacer sonar las canciones es recomendable hacer un método que se la pasa por parámetro un String con el nombre de la canción.

Y ya esta, ya funcionan nuestras canciones! Ahora amoldalo a tu proyecto y tendrás una de las partes más importantes de un juego realizadas. Solo recordar que solo puede haber 1 archivo XACT en un proyecto de XNA pues se crean conflictos (o eso me ha pasado a mi) de modo que se debe poner todo el contenido que deseemos en un proyecto XACT.

ACTUALIZACIÓN(22.08.09): al parecer desde la primera Beta que los archivos de instalación incluidos en la descarga no son correctos y han habido problemas en la instalación. Pensaba que era debido al Framework 3.5 pero era problema de los archivos. Este problema ha sido solucionado y ahora se instala correctamente. Gracias por los avisos, lamento la falta de entendimiento, y perdonad que todas las versiones anteriores hayan tenido este problema.

Con un día de retraso respecto a lo previsto, por una serie de problemas ajenos al proyecto, vuelvo para publicar una nueva versión revisión de Wonderwall, un Tetris realizado con C# y XNA. Esta nueva versión trae muchas novedades que de seguro sacarán más jugo de este juego.

Aunque tenía pensado que que esta fuese la última versión Beta me temo que no será así y que, como mínimo, habrá una nueva versión Beta o en cualquier caso sería la RC de la Demo, no del Full Game. Esto es debido a un problema que comentaré más abajo que no lo he solventado en esta versión pero que será solventando en la próxima.

Pero vamos a las novedades:

- Se ha implementado la sombra de la pieza de modo que ayude a la hora de jugar. Aquí es donde ha surgido el problema en esta versión, un problema de sincronización que de momento no ha sido subsanado. Pese a todo, es completamente funcional y cumple bastante eficientemente su cometido.
- Se ha implementado la caída instantánea de las piezas de modo que a partir de ahora cuando quieras dejar una pieza al fondo no hay que bajarla, puedes hacer que caiga directamente.
- Se han incluido nuevos gráficos para los bonus de modo que queden acordes a la estética del juego.
- Se ha rediseñado el theme Brick para que se adapte la estética general de juego y esta incluido junto con el theme Wire.
- Ahora también puedes ver el tiempo de juego transcurrido.
- Se ha implementado un menú textual de momento al que se volverá cuando se termine el juego. De este modo el juego no saldrá hasta que nosotros queramos.
- Se han implementando opciones de juego. A partir de ahora elegirás tanto los controles como las opciones de que quieres ver, dificultad o pantalla.
- Se ha implementado la rotación de piezas hacía la derecha.
- Se ha implementado la posibilidad de jugar a Full Screen. Podrás jugar a pantalla completa si lo deseas.
- Se ha implementado un ranking de las mejores puntuaciones ordenadas de mayor a menor a través del algoritmo quicksort propuesto por C. A. R. Hoare en 1960 que ha resultado ser el algoritmo de ordenación más eficiente (en el caso medio) que se conoce. El número de entradas máximas en el ranking es de 14.
- Se ha implementado la inserción de nombres para el ranking de modo que podrás poner el nombre de usuario que desees. El Lenguaje es [A...Z,0...9].
- Se ha implementando un servicio de almacenamiento de datos. Se guardarán tanto las preferencias en los controles como la lista del ranking. Estos datos son guardados con el formato XML en la caperta SavedGames en Mis Documentos.
-Cambios de código:
Se ha corregido un bug que existía en el cual, al finalizar el juego por game over se contabilizaban una cantidad brutal de lineas de más.
Se han ajustado las bonificaciones del bonus para que sean más ajustadas ya que disparaban la puntuación a partir de ciertas lineas. Ahora se han equilibrado más haciendo más interesante el juego.
– A partir de esta versión reservar una pieza restará más puntos dependiendo del speed que tengamos en ese momento, a más speed, más restará. De este modo también se equilibra el juego.
Se ha mejorado el soporte audio del juego. Al implementar la caída instantánea se entrecortaban los sonidos de colisión entre si y se ha corregido.

Los controles por defecto en esta versión son:
>Movimientos(*):
–Flecha arriba: caída instanea.
–Flecha abajo: abajo.
–Flecha izquierda: izquierda.
–Flecha derecha: derecha.
>Space: rotación .
>Enter: reservar pieza.
>Escape: Exit.
>Backspace: retroceder.
>P: pause.

*No esta permitido movimientos diagonales.

La licencia es creative commons 3.0 by-nc-sa con la que puedes copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas haciendo referencia al autor, para usos no comerciales y manteniendo esta misma licencia.

Compatible con Microsoft Windows XP/Vista.
(Necesario Framework 3.5. En caso de no estar instalado se descarga automaticamente)

Capturas:

Menu 0

Menu 0

Menu 1

Menu 1

Elegir modo de juego

Elegir modo de juego

Theme Brick

Theme Brick

Tiempo de juego

Tiempo de juego

Insertar nombre

Insertar nombre

Ranking

Ranking

Descargar!

Seguimos con una nueva versión revisión de Wonderwall, un Tetris realizado con C# y XNA. Esta versión trae bastantes cambios visibles y poco a poco nos acercamos a la versión que deseo con lo que finalizaría este proyecto.

Dado el actual punto es posible casi seguro que haya una sola versión más beta de la autodenominada Demo y pasaríamos a la RC de Wonderwall como Full Game. Pero también es posible que me plante en la Beta5 y de por terminado el proyecto por lo menos a corto plazo y sería entregado ya como PFC. Todo depende del tiempo.

Pasamos a la novedades de esta versión:

- Nuevos gráficos: se ha actualizado el apartado gráfico para estar a la altura de los introducidos en la versión anterior. Este nuevo Theme se llama Wire. En mi opinión luce bastante bien ahora.
- Inclusión de las barras de nivel: estas barras muestran el nivel de juego del jugador mostrando los porcentajes de lineas completadas en combos de 4, 3, 2 o 1 de modo gráfico junto un porcentaje sobre el total. De este modo sabremos que tipo de jugador somos en el Tetris :P
- Los combos se valoran: un combo de 4 vale x400, uno de 3 x300, uno de 2 vale x200 y una linea normal vale 100.
- Fondo dinámico: a partir de esta versión cada vez que superemos una velocidad el fondo cambiará de color.
- Bonus: cada vez que subas de velocidad saldrá un bonus que te bonificará por tu logro. Este valora todos tus combos a lo largo de la partida.
- Bonificación por dificultad: cuanto más arriba hagas las lineas más punto devolveran.
-Cambios de código:
–Corrección del código en la detección de nuevas filas y combos. Las lineas se borran todas al mismo tiempo, si es un combo de 4 las cuatro a la vez al contrario que en la versión anterior.
–Corregido bug en la rotación de las piezas que hacia colisionar.
–Limitada la puntuación máxima permitida a 999.999.999.

Los controles en esta versión son:
>Movimientos(*):
–Flecha arriba: arriba.
–Flecha abajo: abajo.
–Flecha izquierda: izquierda.
–Flecha derecha: derecha.
>Rotación: barra espaciadora.
>Reservar pieza: intro.
>Exit: Escape.
>Pause: P.

*No esta permitido movimientos diagonales.

La licencia es creative commons 3.0 by-nc-sa con la que puedes copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas haciendo referencia al autor, para usos no comerciales y manteniendo esta misma licencia.

Compatible con Microsoft Windows XP/Vista. (Necesario Framework 3.5. En caso de no estar instalado se descarga automaticamente)

Capturas:

v9.04.15b4

v9.04.15b4

Descargar!

PD: Feedback aquí, gracias.

Siguiendo con los post donde explico como creé el Tetris voy a pasar a explicar como crear una base para tener unas buenas clases para manejar los sprites, tanto los controlados por el usuario como los que son manejados automáticamente.

Todo sprite tiene una serie de atributos que lo definen que forman parte de todos los sprites y son los que implementé en la clase SpriteBase de la cual luego derivaran las demás.

Esta clase es reutilizable para todos los juegos de sprites dado que siempre tienen estos atributos. Por ello, se crea como clase abstracta para crear la plantilla que todos seguirán. Ya en las clases derivadas se concretará más para cada juego que deseamos que haga cada sprite dependiendo de su función y finalidad.

Los sprites estan formados por 3 tipos diferentes de datos;

Los datos:
-Texturas (Texture2D texture)
-Posición (Point positon)
-Tamaño de cada frame del sprite (Point frameSize)
-Frame actual (Point currentFrame)
-Cantidad total de frames (Point sheetSize)

el estado del sprite:
-Si se recorta el spirte para detectar colisiones (int collisionOffset)
-Valor del sprite para puntuaciones (int scoreValue).
-Velocidad, cada cuanto se actualiza el frame (float speed).
-Tiempo de actualización de frame (int millisecondsPerFrame).
-Tiempo transcurrido entre actualizaciones de frame (int timeSinceLastFrame).

El audio:
-XACT que explicaré más adelante de este sprite para los efectos sonoros (AudioEngine, WaveBank, SongBank y Cue).

Aparte de los constructores que inicializan estos valores base habrá un método virtual Update en el que se controla la animación del sprite, otro método virtual Draw sin nada que se llenará en las clases derivadas,
public virtual void Draw(GameTime gameTime, SpriteBatch spriteBatch)
{
}

un método abstacto Direction con solo get para no permitir el nunca el set en las clases derivadas pues es solo de entrada,
public abstract Vector2 direction
{
get;
}

un método de creación del rectángulo para la detección de colisiones
public Rectangle collisionRect
{
get
{
return new Rectangle(
(int)position.X,
(int)position.Y,
(int)frameSize.X,
(int)frameSize.Y);
}
}

y otro para la carga y reproducción del audio.
public void PlayCue(String track)
{
trackCue = soundBank.GetCue(track);
trackCue.Play();
}

El rectángulo para detectar las colisiones simplemente devuelve un Rectangle del tamaño del frame de este para poder manejar las colisiones.

A partir de esta clase base SpriteBase derivaran tanto las clases de manejo de sprites controlados por el usuario, como los automáticos y el background. Cada una de estas las comentaré más adelante, esto es todo de momento.

Tras el hiatsu temporal debido a la época de exámenes vuelvo con una nueva versión o mejor dicho revisión de Wonderwall, un Tetris realizado con C# y XNA.

En esta nueva versión se han incorporado las siguientes mejoras:
- Nuevos gráficos en las piezas.
- Efectos en el borrado de la linea.
- Animación en las piezas ya posicionadas.
- Funcionalidad Pause añadida
- Corrección del código para adecuarse a las novedades:
– Las lineas se borran de una en una.
La nueva pieza se espera a que se borren todas las filas.

Los controles en esta versión son:
>Movimientos(*):
–Flecha arriba: arriba.
–Flecha abajo: abajo.
–Flecha izquierda: izquierda.
–Flecha derecha: derecha.
>Rotación: barra espaciadora.
>Reservar pieza: intro.
>Exit: Escape.
>Pause: P.

*No esta permitido movimientos diagonales.

La licencia es creativecommons 3.0 by-nc-sa con la que puedes copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas haciendo referencia al autor, para usos no comerciales y manteniendo esta misma licencia.

Compatible con Microsoft Windows XP/Vista.

Capturas:

Beta 3

Beta 3

Descargar!

Tetris cumple 25 años!

Junio 6, 2009

Hoy se cumple 25 años desde que el ruso Alexey Pajitnov creara este magnifico juego tan simple como divertido y adictivo. Tetris viene del prefijo tetra que significa cuatro, el número de partes que forman las figura y sin duda su belleza reside en su simpleza que hace que tanto viejos como jóvenes aun sigan jugando a este juego, versión tras versión, para cada nueva plataforma que sale al mercado.

tetris09

Incluso el gran Google todopoderoso que todo lo sabe hoy hace reverencias y halagos a tan gran juego de Tetris con una versión adaptada de su logo como nos tiene acostumbrado en estos eventos.

Sin duda esto no es falta de originalidad por parte de las desarrolladoras sino que todos queremos un Tetris para jugar y a medida que avanza la tecnología el Tetris avanza con ella adaptándose a medida que los años pasaban.

Desde poder guardar una pieza a la visualización de las próximas piezas llegando incluso a las 6 del tetris DS!, de los cuatro jugadores simultáneos en una misma habitación a juego online,… Un sin fin de variedades, casi tantas como gustos.

Por eso desde aquí quiero hechar un poco la vista atrás y ver como los años cambian las cosas aunque estas siempre son las mismas en el fondo. Red Cat Development (RCD) también esta desarrollando su propia visión de Tetris y por eso agradece tanto el original como todas las versiones posteriores que le dan ideas para realizar y fallos a no cometer. Un camino recorrido que deja mucho pero quedando aun mucho por recorrer. RCD espera poder sacar ese Tetris que le gusta, que tiene en mente y que desea que por lo menos alguien lo disfrute.

Para terminar y como nota cómica he buscado las portadas de muchas de estas versiones en distintas plataformas a lo largo de este tiempo y me he sorprendido de ver que todas tienen una cosa en común. Miren y a ver si saben que es…

2a9c800d9ccf127a8e71dfc083625ef0922d5b37d86a64dc2133050fototetris4dCaratula SEGA AGES 2500 Series Vol.28 Tetris Collection (Japonés)dc95ac6c4bd4f346dc-next-tetrisEl-tetris_3A-magico-desafio-PSXFoto+Magical+Tetris+ChallengeJV517539_smallNew TetrisSega_Tetris_jap-frontTetris-DStetris-evolution-xbox360tetrisx

¿Se han dado cuenta? Exacto! Todas resaltan en la portada la misma pieza del Tetris, esta con forma de “triangulo”! ¿A que se debe esto? ¿Esta pieza esconde algo más allá de lo que me imagino imaginamos? ¿Será una tradición de casi 20 años? ¿Una maldición? ¿A que se debe este amor tan inusual y falta de creatividad la verdad por parte de tantas desarrolladoras?

Desde aquí no se puede ver más del que tal vez sea el pico del iceberg aunque dado el desarrollo de RCD Wonderwall Tetris aun no esta claro si queremos seguir esta tradición…

La mayor de las incertidumbres nos rodea pero ahora solo se puede posponer y volver al estudio que estamos en época de exámenes,

Feliz Tetrianiversario!

Si deseo crear un juego tarde o temprano tendré que verme las caras con la creación de sprites para el juego y sin duda aunque con talento salen mucho mejor estas cosas siempre me han gustado.

Es cierto, le tenía ganas ya al PixelArt y a la animación y gracias a los sprites en juegos he podido tener dos tazas de cada una. No ha sido demasiado problemático excepto al principio para encontrar unas proporciones que sean de mi gusto y no crear estrambóticos diseños.

La creación la he realizado con GIMP y ha sido bastante sencillo gracias al tratamiento de que dispone. Trabajo por capas, cada capa es un fotograma de la animación, una vez todo hecho un bonito fondo para que no se superponga al hacer el .gif y listo. Una vez comprobado el resultado solo restaría crear la malla para utilizar en XNA, en mi caso concreto ahora mismo.

El resultado es gracioso y le tengo bastante cariño, pese a no ser gran cosa… Pero me ha dado una experiencia mínima en esto de la animación que sin duda voy a explotar tanto como pueda.

Prueba de creación de sprite

En tener tiempo e ideas claras empezaré con la creación de personajes que ya serán utilizados con los fines en que empezó esto.

Nueva versión de Wondwerwall, un Tetris realizado con C# y XNA. Con esta nueva beta (la segunda) se ha corregido el bug al reservar la pieza y también un pequeño bug en el control que permitía al usuario evadir el nivel de dificultad.

Los controles son sencillos:
>Movimientos(*):
–Flecha arriba: arriba.
–Flecha abajo: abajo.
–Flecha izquierda: izquierda.
–Flecha derecha: derecha.
>Rotación: barra espaciadora.
>Reservar pieza: intro.

*No esta permito movimientos diagonales.

La licencia es creativecommons 3.0 by-nc-sa con la que puedes copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas haciendo referencia al autor, para usos no comerciales y manteniendo esta misma licencia.

Compatible con Microsoft Windows XP/Vista.

Capturas:
Wonderwall Demo beta1

Descargar!

XNA: Game Components

Mayo 6, 2009

XNA esta diseñado para poder modularizarse lo más posible para de este modo poder tener diferentes partes lógicas del juego en modulos distintos y lograr de este modo que código no común no este junto creando bloques independientes y bien integrados.

Esto es lo que son los GameComponents de XNA los cuales pueden abarcar muchas funciones distintas. He visto por internet gente que ha creado GameComponents para juegos de lucha en los que este GameComponent se encargaba de las barra de energías.

Esto simplifica mucho el trabajo ya que lo ordena muchísimo y facilita la reutilización del código.

Para añadir un GameComponent al juego hay que ir al explorador de soluciones, add -> new item y seleccionamos GameComponent. La composición del GameComponent es identica a la de Game.cs con un método para inicializar, cargar, update.

Si quisiéramos que este GameComponent también dibujase cambiaríamos la clase de la que deriva a Micosoft.Xna.FrameworkDrawableGameComponent y tendríamos también el método Draw.

Para lanzarlo primero se inicializa y luego se añade a la lista de GameComponents que tiene la clase Game.cs.

NombreClaseGameComponent nombredelcomponent = new NombreClaseGameComponent(this);
Components.Add(nombredelcomponent);