Es momento de seguir planificando #4
Ha pasado 2 meses y poco más desde mi última publicación, en resumen, pude publicar mi primer juego en itch.io y también participé de una Jam, el día que publiqué mi juego me alegré mucho, tenia una sonrisa de oreja a oreja. Ahora les compartiré esa experiencia.
Aún estoy al 99% de completar el juego, lo he venido desarrollando por al menos tres meses, si bien lo he publicado aun falta corregir algunos detalles y mejorar el juego, el nombre que elegí es "Supérame", haciendo referencia a que en este juego tienes que superar el tiempo de otros jugadores. Ahora veamos como fue todo este proceso para llegar hasta aquí.
La idea y plan de acción
Trabaja todos los días en este proyecto, algunos más que otros, tenía claro la idea general del juego que quería construir:
Un juego de plataforma donde ayudas a tu personaje favorito a recolectar hojas de coca doradas en el menor tiempo posible, con enemigos que te dificultaran la recolección, donde el personaje puede morir y no terminar el desafió, todo esto en formato 2D y con gráficos en Pixel Art.
Luego de aprender a prueba y error sobre animación en Pixel Art y como manejar el motor de videojuegos Unity, estaba preparado para empezar a unir las piezas.
Empece por la construcción del mapa o nivel, todo el escenario donde el personaje se moverá y enfrentará a enemigos. Aquí me enfoque en crear el conjunto de texturas, que son lo bloques con los que formaría los edificios y plataformas, estos se llaman Tile Set. Unity me da herramientas sencillas como el Tile Map para completar este propósito.
Ahora que ya tenia un nivel para la interacción de los personajes y objetos, quería darle vida. Realice las animaciones de los personajes, enemigos, potenciadores y objetos, luego de eso los incluí en el nivel, primero en modo de prueba, empece con la programación del personaje, quería verlo saltar, golpear y moverse por todo el mapa, tenía que estar seguro que el control sea fluido, en este caso lo probé con un teclado, tenia la intención de que se pueda jugar en un navegador o descargarlo y poder jugarlo en Windows o Linux sin necesidad de instalarse. Luego seguí con los enemigos, potenciadores y objetos, hasta este punto solo pude realizar la interacción entre mapa y personajes y/o objetos. Me faltaba la interacción entre los personajes, enemigos, y objetos. Esta parte del proceso fue la que me tomo casi la mitad del tiempo del proyecto.
Necesitaba implementar un cronometro que controlara el tiempo desde el inicio hasta que el personaje completara la recolección de todas las hojas, pero antes debería existir una señal que me indique cuando iniciar. Para esto empece a buscar tutoriales que se adecuen a estas características, en Youtube encontré muchas, solo tuve que adecuar las ideas a mi proyecto.
Ahora venia la parte mas genial y tediosa, hacer que los personajes y objectos interactúen, colisionen y muestren personalidad en su mundo, ademas de agregar los efectos de sonido para este propósito. Estas son algunas de las características de sus interacciones:
El personaje escogido y los enemigos tienen un número de vidas que disminuirán si son alcanzados por el ataque del contrario.
Los enemigos deben detectar al personaje a una cierta distancia y atacarlo.
Derrotar a un enemigo disminuye unos segundos el tiempo transcurrido.
Existen potenciadores que al recogerlos permiten aumentar nuestro ataque o defensa por un cierto tiempo, y otro objeto para recuperar nuestra vida.
Cuando alcanzamos un hoja de coca dorada esta se desvanece y aumenta en +1 la cantidad de hojas recogidas.
Teniendo ya un nivel mas funcional, me ocupe de la interfaz para el jugador, un panel donde mostraría la vida del personaje, la cantidad de hojas recogidas y el tiempo transcurrido. También necesitaba un cuadro de dialogo, donde el personaje realizara algunas indicaciones al jugador a manera de comentarios alentadores. Agregué también las ventanas de pausa y las ventanas de completado y eliminado, que dan opciones al jugador para continuar, reiniciar o salir del nivel.
Listo, ya falta muy poco para terminar, ahora me tenia que ocupar en respaldar la información del jugador, cuando el jugador concluye un nivel satisfactoriamente, se tiene que guardar el tiempo que tardo en completarla y el apodo del jugador para tener un registro y luego mostrarlo en una tabla de posiciones que se desarrollará más adelante. Para esto usé Firebase Realtime Database, por el motivo de que quería hacerlo multiplataforma, y Firebase no tenia problemas para que funcione en dispositivos móviles. Me dediqué a buscar ejemplos de como podría incorporarlo a mi proyecto de Unity, a la vez que empece a leer la documentación de Firebase.
Por último, tenia que realizar una pantalla inicial para dar la bienvenida al jugador, en este se puede escoger un personaje y en un futuro escoger un nivel, además de poder visualizar la tabla de posiciones según el nivel seleccionado.
Hasta el momento parece que ya no faltaba nada, pero es lo que aparentaba, en realidad tenía que realizar muchos ajustes, y hacer las pruebas correspondientes.
Lo que faltaba para concluir
Enumeraré los puntos mas importante que faltaban y pude resolver para su publicación:
Quería que existiera una opción de cambiar idioma, para que el juego tuviera un mayor alcance, en este caso use el paquete Localization Tables de Unity. Fue tedioso mapear todos los lugares donde había un texto, pero no fue complicado.
Al movernos por los botones en la pantalla inicial no seguían un orden.
Me faltaba agregar efectos de sonido y efectos visuales a los botones.
Si bien yo entendía el juego, el jugador que por primera vez empezaba a jugar no entendía el objetivo y las reglas de este. Agregué una ventana inicial a manera de tutorial que por medio de imágenes y algunos textos lo explicaba.
Agregué el efecto de Parallax Scrolling en el nivel que al momento de que el personaje se mueve en este, da la impresión de que hay un fondo muy lejano que se mueve a otro ritmo, dándole profundidad.
Agregar un temporizador para el tiempo que dura un objeto potenciador, esto permite que el jugador calcule mejor el tiempo de duración.
Y algunos bugs que encontraba en las colisiones de los ataques, los saltos del personaje y los mensajes mostrados.
La publicación
Quería publicar el proyecto para Windows, Linux y para el navegador. Exportar el proyecto no fue difícil, ya que Unity te da esta ventaja de multiplataforma, un golazo para Unity. Escogí Itch.io para hacer la publicación porque me gusta mucho su plataforma, además de ser los lugares mas conocidos para la publicación de videojuegos indie.
Notas:
Actualmente el videojuego esta publicado y funcional, si llegaste hasta aquí y te interesa probarlo, te dejo un link.
Tengo pensado agregar un par de niveles mas, un nos 3 personajes adicionales, ademas de que en cada nivel agregare algo característico.