martes, 6 de enero de 2015

Demo técnica de Pokémon

¡Hola de nuevo!

Afortunadamente no ha pasado mucho tiempo desde la última vez.

Esta vez he querido hacer algo más corto y más vistoso. Como ya habréis leído, sí, una demo técnica de Pokémon.


Cómo surgió:


Llevaba ya un par de días pensando qué sería lo siguiente que iba a hacer después del Tetris. Como algunos sabréis, hacer un videojuego no es tarea de un solo hombre; es algo que hay que hacer con un equipo especializado en diversas áreas, por lo que en este punto, yo sabía que tenía que hacer una demo y no un juego.

Hay muchas herramientas que me permiten hacer juegos o demos con muy pocos recursos (Unity3D), pero por el momento quería seguir aprendiendo sin ninguna herramienta complementaria que me facilitara ciertas tareas, porque a mi juicio, iba a interiorizar mejor cómo funcionan las cosas en un juego.

Ya puestos en lo que quería (demo y en 2D), tenía que ser algo que conociera muy bien y pudiera conseguir recursos sin mucho esfuerzo. Pokémon era algo que conocía de sobra y había cantidad de recursos en internet, así que, decidido estaba.

Puesto que tampoco tenía que hacer algo exageradamente grande para ver el funcionamiento de ciertas cosas, únicamente me he centrado en sólo un pueblo y en la interacción con el lugar.

- ¡Pero Ángel! ¡¿Por qué haces un juego de Pokémon sin combates Pokémon?!

La finalidad de la demo sigue siendo aprender y mejorar. En este caso, me vale más centrarme en características que tienen todos los juegos en general, que centrarme en algo particular del juego. No es que haya sido por falta de ganas, pero como repito, no era lo que pretendía hacer en esta demo.

Vistazo rápido:

Demo técnica de Pokémon v1.0



Realización:


La realización ha sido en base a matrices nuevamente. El mapa entero es una matriz donde cada posición tiene asignado un número según lo que se encuentre en dicha posición. El 1 significa que no es habitable, ni interactuable; el 2 que es un objeto del mapa; el 3 que es un NPC (Non-Player Character) y el 0 es una posición habitable.

Nuestro personaje se les asigna unas coordenadas dentro de ese mapa. Vamos a poner el ejemplo de que tenemos la "X" = 10 y la "Y" = 10. Si me moviera hacia arriba, se comprobaría que hay en la posición "X" = 10 y "Y" = 9; si lo que hay es un 0 como en el ejemplo de la imagen, nuestro personaje se moverá una casilla hacia arriba sin problemas. Ahora estamos en "X" = 10 y "Y" = 9, y queremos volver a movernos hacia arriba. En esta ocasión, ¿qué es lo que ocurre? Que tenemos un NPC en la casilla "X" = 10 y "Y" = 8, es decir, tenemos un 3 en la matriz. Al haber un 3, no nos podremos mover, ya que hay un NPC ahí y no sería lógico subirse encima, ¿no? Por lo que nuestro personaje permanece donde estaba.

Hemos hablado del movimiento del personaje, pero... ¿cómo interactua el personaje? Pues de la misma forma planteada. Imaginemos de nuevo que estamos en la posición "X" = 10 y "Y" = 9 y que tenemos un NPC en la posición "X" = 10 y "Y" = 8; si lo que está encima nuestro es un 3, habrá una interacción, ¿no? Se activaría un diálogo. Si hubiera habido un 0, no hubiera ocurrido nada.

Como véis los juegos basados en matrices son bastante fáciles de gestionar. Es muy parecido a lo que pasaba en el Tetris.

Ahora bien, aquí hay 2 cosas nuevas que nunca había visto anteriormente. Una es la cámara y la otra la animación.

El tema de la cámara es fácil de simplificar, ya que al igual que nuestro personaje, también tiene asignada una posición "X" y una posición "Y", que en estos casos, se corresponde con la esquina superior izquierda de la pantalla. Es decir, a medida que nos movemos con el personaje, la cámara también moverá de igual forma que nosotros.

Quizá vuestra pregunta sea, ¿qué es lo que hace una "X" y una "Y" en una cámara? Son la "X" y la "Y" desde dónde yo voy a recortar la imagen del mapa. Desde ese punto, y con el alto y ancho de la ventana, haré un recorte en la imagen de mi mapa cada vez que me mueva y se pondrá en pantalla. De esa forma, la escena se mueve junto al personaje.

El tema de la animación puede ser algo más engorroso de explicar, pero es como si crearáis un GIF. Una imagen pasa cada "X" número de milésimas de segundo creando el efecto de movimiento. Es llevar esa idea al juego.

Puede que sea algo difícil de visualizar, pero hecho en un papel o viéndolo en la demo, es mucho más fácil de ver.


Cómo jugar:


Al igual que el Tetris, para jugar necesitaréis Java. Es importante que descarguéis la versión acorde a vuestro sistema (32 bits/64 bits).

https://www.java.com/es/download/windows_xpi.jsp?locale=es

Y aquí el link al .jar (el ejecutable) de la demo.

https://www.dropbox.com/s/pubexxcpxjbcvqe/Pokemon.jar?dl=0


Controles:


Moverse:            Usar las teclas de dirección del teclado.

Interactuar:         Pulsar la tecla "A" de vuestro teclado.


Estáis invitados a probarlo y a jugar cuando queráis. Si os surgiera algún fallo o algo que queráis comentar, podéis usar los comentarios ;).

Eso es todo, espero que sea de vuestro agrado.

Gracias.

No hay comentarios:

Publicar un comentario