The Esc4pe, un “primitive shooter” hecho en Unity3D

Da gusto  escribir un post en el blog sobre un juego desarrollado y terminado, y espero que vengan más tras este :) 

Como algunos sabréis, bien por que leísteis mi resumen anual (o bianual en este caso) que hice a principios de Enero, o bien por que lo sabéis directamente de mi en persona, me encuentro desde finales de Noviembre del año pasado cursando un master de desarrollo de videojuegos con Unity3D. Como parte del master, cada mes tenemos un proyecto planteado por los profesores a modo de practica para cubrir la materia dada en clase, ademas del proyecto final (de 2 a 3 meses de desarrollo). Todos estos proyectos puntúan nota y son obligatorios.

Por un lado estoy aprendiendo a fondo (por fin!) a usar Unity3D gracias a  la experiencia y conocimientos de los dos profesores que tenemos (me ha venido de lujos los primeros meses para pulir lo que ya sabia y aprender nuevas cosas que desconocía o usaba mal), y por otro este master me obliga si o si a sacar adelante varios proyectos de pequeños juegos, que me vienen de perlas para coger experiencia y de paso ampliar el portfolio (y más teniendo en cuenta mi parón gamedevelopero de estos últimos años). Para mi esto ultimo es como participar en una gamejam de 3 semanas cada mes pero sin la opción de tirar la toalla. Sacas el juego si o si. Sumándole el detalle de que no estoy trabajando mientras curso el master, esto me permite dedicarle prácticamente todo el día a las practicas, lo que me permite no solo completar los requisitos básicos y los opcionales de cada practica, si no que me permite ir más allá y tratar de desarrollar algo más avanzado. Las practicas del master se han convertido en todo un reto para mi, y ahora mismo tengo el resultado de la primera: The Esc4pe.

Practica 1. Primitive Shooter

La primera practica del master consistía en desarrollar un shooter, un FPS con mecánicas básicas, asemejando a los shooters de los 90. Las practicas tiene una lista de requisitos básicos que cumplir, ademas de restricciones técnicas para implementar dichos requisitos, y una lista de requisitos opcionales para sumar nota, ademas de tener en cuenta otros factores que también influyen en la nota final (originalidad, lo trabajado que este el arte, añadidos extras por parte del alumno, etc…).

Dado que varios requisitos de la practica exigían implementarse de cierta forma esto ha afectado notablemente en parte al rendimiento del juego, por ejemplo usar masivamente Instantiate() y Destroy() en tiempo real para crear o destruir objetos de la escena como las balas (todo como lección forzada de por que no hay que usarlos en proyectos serios), problemas aleatorios con las colisiones (por las prisas opte por usar Mesh Colliders en algunos elementos del escenario, ya veces pueden fallar) y ejemplos por el estilo. Todo esto genera unos picos y unos parones de rendimientos muy notables, ademas de no ir todo lo fluido que debería según que maquina donde se ejecute.

Otros requisitos relevantes de la practica:

  • Representación de vida de los enemigos (de ahí que todos muestren una barra de vida sobre la cabeza)
  • Comportamiento básico de los enemigos: patrullar aleatoriamente, perseguirte cuando estés en su rango de alcance, dispararte a distancia, y explotar al contacto (que en mi caso solo lo hace uno de los enemigos, las minas araña).
  • Final Boss con algún ligero cambio en su estado (implementa la misma maquina de estado que los enemigos básicos con la variante de que a 20 puntos de vida deja de atacar a distancia y te persigue para atacar cuerpo a cuerpo).
  • Spawn points, que los he implementado en la zona del Final Boss para generar enemigos aleatorios antes de activar al Boss Final.
  • Distintas armas: disparo simple, doble (las dobles pistolas), disparo continuo, y granadas (la escopeta fue capricho mio).
  • Implementar items de vida y munición (ademas de vida yo opte por añadir al jugador escudo).
  • Crear partículas propias en vez de usar externas de la Asset Store o de los paquetes de Unity (de ahí que sean tan cutres xD)
  • Implementar los disparos con proyectiles físicos.
  • Implementar al menos 5 sonidos.
  • Usar el editor de terrenos de Unity3D para hacer la escena (o en mi caso la mayor parte de la misma).
  • Interface de usuario mínima y menús: pantallas de game over, victoria y menú principal (los menús actuales así como la pantalla de carga no están en la versión entregada de la practica).

Como extra me empeñe, tras la entrega, de añadirle soporte para poder jugarlo con el XBox360 Game Controller, y bueno, creo que habría que pulir mucho el control con mando, que yo que soy jugon desde hace más de 10 años a shooters en consola (la inmensa mayoría de mi catalogo de 360 son shooters xD) no soy capaz de terminar siempre la demo usando el mando xD Para hacer que los controles sean los mismo tanto en Windows, Linux y Mac he seguido los esquemas de esta Wiki, por lo que en principio no deberíais tener problemas fuera de Windows si deseáis jugarlo con el mando (pero ya os aseguro que se juega mucho mejor con teclado y ratón). El juego incluye opciones para configurar la sensibilidad tanto del ratón como del mando.

Aun con todo creo que ha quedado un mini-shooter chulo para estar hecho en 3 semanas + una semana extra tras la entrega, semana que aproveché para pulir un poco algunos errores del código, agregar los menús del juego, pantallas de carga y mejorar el aspecto gráfico final.

Podéis descargarlo, si queréis probarlo, desde su ficha en el portfolio, tanto para Windows, Mac como Linux. El juego se puede completar en menos de 10 minutos según vuestra pericia (las practicas del master deben poder completarse en 5 minutos máximo, la versión final la he “complicado” un poco más para darle algo más de juego).

Ahora toca volver a manos a la obra con la próxima practica del master que ya hemos empezado, un “simulador espacial” que de aquí a un mes mostrare por el blog ;)

Salu2…

Actualización (16 de marzo de 2017):
A fecha de hoy, el juego esta destacado en portada y lleva más de 11.000 descargas en el marketplace de itch.io. De lejos mucho más de lo que me esperaba para una simple practica de master :)

Actualización 2 (18 de marzo de 2017):
Hoy han destacado el juego en Game Jolt, veremos a ver si alcanza las estadísticas de itch.io :)

Deja un comentario