Desarrollo de un videojuego de plataformas 2D en Unity - Grado en Ingeniería Informática Trabajo de fin de grado - RiuNet
←
→
Transcripción del contenido de la página
Si su navegador no muestra la página correctamente, lea el contenido de la página a continuación
Desarrollo de un videojuego de plataformas 2D en Unity Universitat Politècnica de València Campus d’Alcoi Grado en Ingeniería Informática Trabajo de fin de grado Alumno: Mariola Trenzano Álvarez Tutor: Jordi Joan Linares Pellicer Curso Académico: 2016/2017
Desarrollo de un videojuego de plataformas 2D en Unity ÍNDICE 1. Introducción Descripción del proyecto. Motivación. - Originalidad de la idea. - Estado del arte. Objetivos. - Público destinatario. 2. Herramientas de desarrollo Breve introducción a Unity. Otras herramientas usadas. 3. Diseño e implementación Diagramas y casos de uso. Elementos de mayor complejidad. Retos tecnológicos. Workflow. Arquitectura de la aplicación / diagramas. 4. Conclusiones Capturas de la aplicación. Publicación en stores. Encuestas. Trabajo futuro. 5. Anexos GDD. Código. 6. Bibliografía 2
Desarrollo de un videojuego de plataformas 2D en Unity 1. INTRODUCCIÓN Descripción del proyecto: El proyecto realizado trata sobre desarrollar un videojuego de plataformas con estilo 2D con el motor de videojuegos Unity. Este juego ira dirigido a todos los públicos, ya que no contiene ningún tipo de insulto, ninguna escena violenta con sangre, etc y podrán disfrutarlo los Smartphone que tengan como sistema operativo Android. Motivación: La mayor motivación que he tenido con este proyecto es que nunca antes me han enseñado a crear videojuegos a excepción de la única asignatura optativa de 4º, por tanto, es un mundo nuevo que descubrir para poder desafiarme a mí misma y para aumentar los conocimientos sobre el desarrollo de videojuegos. Me motiva el hecho de crear algo desde 0 partiendo de mi creatividad, de mis conocimientos básicos de programación y de tener claro que en un futuro quiero estar trabajando para este sector. Mi objetivo con este proyecto es demostrar que con interés y tiempo se puede hacer un buen juego que pueda inspirar e atraer a más gente que les apasione tanto como a mí los videojuegos. - Originalidad de la idea: La idea de hacer este trabajo fin de grado fue porque quería complementar mi afición con el trabajo profesional, ya que como he dicho anteriormente, quiero dedicarme profesionalmente a esta industria. Además de que me guste la idea, esto me va a servir como portafolio para que el día de mañana si alguna empresa necesite ver que soy capaz de hacer, pueda mostrárselo con hechos y no solo con palabras. 3
Desarrollo de un videojuego de plataformas 2D en Unity - Estado del arte: A día de hoy, hacer un videojuego está al alcance de casi todo el mundo, gracias a que existen motores de videojuegos gratuitos para que cualquier persona que esté interesada en este tema, pueda ser autodidacta y realizar sus pruebas para aprender mucho más de lo que pueda saber. Cuando aparecieron los primeros videojuegos, si alguien quería hacer uno, era realmente mucho más difícil que ahora porque requería de un buen capital, ya que al no haber tantos motores de videojuegos como hay ahora, cada empresa debía hacer el suyo propio y eso implica más dinero y más tiempo. En este caso, podemos hacer referencia al motor de videojuegos que está arrasando en este momento que se denomina Unreal Engine que la empresa que lo creó fue Epic Games y lo que hizo fue dar el paso de abrirse para que la gente pudiera usarlo gratuitamente. Unity como hablaremos más adelante, es otro motor de videojuegos que se puede usar gratuitamente al igual que este. Actualmente, hay tantos motores de videojuegos gratuitos que hay demasiados juegos que salen a la venta en un mismo año, esto hace que a los jugadores que quieran probarlos, realmente no tienen tiempo para dedicarles a todos y seleccionarán los juegos que más les llame la atención. Por así decirlo, hay 3 tipos de empresas que desarrollan videojuegos: - Empresas oficiales. - Empresas independientes (Indies). - Personas amateurs. En cuanto a empresas oficiales, me refiero a empresas como Microsoft Studios, Sony Interactive Entertainment, Nintendo, etc. Son empresas que normalmente hacen juegos triple “A”, esto quiere decir que es un juego que tiene mucho dinero para poder invertir, que tiene muchos recursos para poderse hacer y mucho tiempo para poder dedicarle para que salga lo más perfecto posible. 4
Desarrollo de un videojuego de plataformas 2D en Unity Algunos ejemplos de juegos triple “A” que han realizado serían: Rise of the Tomb Raider (lanzamiento 2015) Zelda breath of the wild (lanzamiento 2017) 5
Desarrollo de un videojuego de plataformas 2D en Unity Horizon zero dawn (lanzamiento 2017) Mario Kart 8 Deluxe (lanzamiento 2017) 6
Desarrollo de un videojuego de plataformas 2D en Unity Final Fantasy XV (lanzamiento 2016) Uncharted 4 (lanzamiento 2016) 7
Desarrollo de un videojuego de plataformas 2D en Unity No todas las empresas pueden aportar gran cantidad de dinero, por ejemplo, sería el caso de una empresa independiente o de alguna persona solitaria que crea su propio juego. Una empresa independiente muchas veces se denomina Indie, es una empresa que no tiene el apoyo de una distribuidora de videojuegos y que los videojuegos que suelen desarrollar son distintos a los productos de las empresas oficiales que siguen las tendencias del momento. Este tipo de empresa suele contar con un equipo de 30 personas más o menos, en cambio una empresa como la que hemos hablado anteriormente suele tener un equipo de cientos de personas. Ejemplos de empresas independientes serían Polytron, Tequila Works, Thatgamecompany, Plastic, Playdead, etc. Algunos ejemplos de juegos Indie que han realizado serían: Fez (lanzamiento 2012) 8
Desarrollo de un videojuego de plataformas 2D en Unity Rime (lanzamiento 2017) Bound (lanzamiento 2016) 9
Desarrollo de un videojuego de plataformas 2D en Unity Journey (lanzamiento 2015) Abzú (lanzamiento 2016) 10
Desarrollo de un videojuego de plataformas 2D en Unity Por último, con personas amateurs me refiero a las personas que han desarrollado su propio juego en su casa, sin la ayuda de un equipo de desarrolladores que trabajan en la industria, si no, alguna persona que haya hecho su propio videojuego. Algunos ejemplos serían: Stardew Valley (lanzamiento 2016) Dust: An Elysian Tail (lanzamiento 2013) 11
Desarrollo de un videojuego de plataformas 2D en Unity Banished (lanzamiento 2014) Thomas was alone (lanzamiento 2012) 12
Desarrollo de un videojuego de plataformas 2D en Unity Objetivos: El objetivo principal de este proyecto, como he dicho anteriormente, es crear un juego en 2D de tipo plataformas para dispositivos móviles, el cual pueda mostrar en un futuro como portafolio para las empresas que quiera entrar a trabajar. Además, tengo como objetivo aprender a diseñar niveles, porque es un tema que parece que sea sencillo, pero tiene mucha complejidad, porque tienes que medir las cosas con lupa, es decir, si pones por ejemplo una caja en el nivel, esa caja estará ahí por alguna razón, no porque sí, ser un buen diseñador de niveles requiere de mucho análisis y práctica. A parte de usar el programa Unity, he usado diferentes herramientas que nombraré más adelante, por tanto, también es una oportunidad para aprender a usar mejor o desde cero herramientas que pueden servir para el desarrollo de videojuegos. - Público destinatario: El público al que va dirigido es para todas aquellas personas que les guste pasar un rato divertido y entretenido jugando sin tener que preocuparse de si hay insultos, violencia, etc. Va a ser un juego para dar buenas sensaciones al usuario, por tanto, es para todos los públicos. Además, el entorno gráfico que tiene el juego es como si perteneciera a un mundo de fantasía, por eso pienso que también es un punto a favor para que todo el mundo lo vea factible para cualquier persona y no se defina para un tipo de público en concreto de cierta edad, sino, un juego que pueda jugar cualquier persona que sepa manejar un teléfono móvil y que sea capaz de transmitir ciertas cosas a adultos y otras cosas para los más niños. 13
Desarrollo de un videojuego de plataformas 2D en Unity 2. HERRAMIENTAS DE DESARROLLO Breve introducción a Unity: Unity es un motor de videojuegos multiplataforma creado por Unity Technologies que actualmente está siendo muy utilizado por los desarrolladores. Una de las razones de su uso es porque se pueden desarrollar juegos para diversas plataformas, como, por ejemplo: - PC: Microsoft Windows, OS X y Linux. - Móviles: Windows Phone, iOS y Android. - Consolas: Xbox, Playstation y Nintendo. - Televisiones. - Realidad virtual. - Web: WebGL. Unity consta de 4 versiones que son las siguientes: 14
Desarrollo de un videojuego de plataformas 2D en Unity Todas las versiones tienen las mismas características, lo único que cambia cada versión es que dependiendo de la cantidad de monetización que se adquiera, Unity obliga al desarrollador del juego a coger una versión u otra. Por ejemplo, si el desarrollador no llega a 100.000$ puede coger la versión gratuita (Personal), si se pasa de ahí y no llega a los 200.000$, tendrá que coger la versión Plus. Por último, si el desarrollador tiene beneficios de más de 200.000$ cogería la versión Pro o la Enterprise, las dos no tienen límite de beneficios. La única diferencia es que la Enterprise es a nivel de empresa y la Pro no. Otras herramientas usadas: Otras herramientas que me han hecho falta a la hora de desarrollar este proyecto, han sido las siguientes: - Photoshop: Para editar imágenes para la interfaz, para los menús de los niveles, el tipo de letra, etc. - Trello: Herramienta de trabajo para gestionar todas las tareas que he tenido que realizar durante este proyecto y llevar un control de las mismas. Entrando a la página web https://trello.com/ puedes registrarte gratuitamente y utilizar su herramienta. - Piskel: Editor online y libre para crear sprites que he usado para el juego con el estilo que se denomina pixel art. Herramienta muy útil donde puedes trabajar en el mismo navegador entrando en la página web http://www.piskelapp.com/ o te lo puedes descargar para utilizarlo en tu ordenador. Más adelante, adjunto el GDD donde aparecen todos los sprites que he hecho. 15
Desarrollo de un videojuego de plataformas 2D en Unity - Microsoft Project: Programa para realizar el diagrama de Gantt que se trata más adelante en este documento. - Github: Repositorio donde he podido almacenar todo mi proyecto con todos los cambios efectuados desde el principio hasta el final, mediante commits que se realizan cada vez que hayas hecho cambios importantes en tu proyecto. - Google drive: Es la nube de Google que la he utilizado para poder almacenar todos los documentos, imágenes del proyecto e incluso poder realizar dicha encuesta y obtener resultados que se tratarán más adelante. Es una herramienta muy útil, ya que puedes obtener todos tus recursos en cualquier ubicación. - Visual Studio: Es el programa que he utilizado para programar todos los scripts del proyecto. Unity por defecto tiene el programa de MonoDevelop, pero me ha gustado más utilizar Visual Studio, ya que tiene muchas más configuraciones y detalles que el otro no tiene. - Google Play Console: Plataforma web que te ofrece Google para publicar tus aplicaciones en la tienda de Play Store y poder observar todo lo que tiene que ver con ellas. 16
Desarrollo de un videojuego de plataformas 2D en Unity 3. DISEÑO E IMPLEMENTACIÓN Diagramas y casos de uso: A continuación, se muestra un diagrama donde define la estructura del proyecto. Elegir trabajo/ Desarrollar idea tarea propuesta Buscar Comprobar información funcionamiento en el PC. Hablar con un profesor No ¿Correcto? oo Sí Estructurar Comprobar trabajo funcionamiento en el móvil. No ¿Correcto? oo Sí Hay más tareas Desarrollar la Proyecto documentación terminado Tareas completadas 17
Desarrollo de un videojuego de plataformas 2D en Unity Los casos de uso que se presentan en el juego son los siguientes: Menú principal . Ir al Menú de Niveles . Opciones Información acerca del juego Salir del juego Jugador Menú de Niveles . Elegir nivel para jugar . Volver al Menú principal . Jugador 18
Desarrollo de un videojuego de plataformas 2D en Unity Dentro de un nivel . Mover . Saltar . Disparar/ atacar . Menú de pausa . Jugador Opciones . Encender/Apagar Música . Encender/Apagar Sonido Volver al. Menú Principal Jugador . 19
Desarrollo de un videojuego de plataformas 2D en Unity Información acerca del juego. Volver al Menú Principal . Jugador Menú de pausa Continuar nivel . Volver al Menú de Niveles . Jugador 20
Desarrollo de un videojuego de plataformas 2D en Unity Nivel completado / Pierde Reiniciar nivel . Volver al Menú de Niveles Jugador . Dentro de un nivel Cargar nivel . Inicializar todo . Sistema 21
Desarrollo de un videojuego de plataformas 2D en Unity Elementos de mayor complejidad: Alguno de los elementos que me he encontrado por el camino, han sido más dificultosos que otros, como, por ejemplo, el comportamiento del personaje que maneja el usuario final. Una de las razones es porque es lo que tiene más código de programación, por tanto, solo por eso ya tiene que ser más complejo, pero otra razón por la que lo hace más complejo es la máquina de estados que tiene el jugador que he tenido que aprender por mi cuenta. Una máquina de estados en Unity tiene la idea básica de que el personaje que la lleva está vinculado en alguna acción en particular en cualquier momento, es decir, son los diferentes estados, las diferentes animaciones que ese personaje puede tener. En el GDD (Game Design Document) que aparece más adelante, explico las animaciones que tiene el personaje Pink. Esas animaciones es el estado o comportamiento que puede tener en un determinado momento, y ese cambio de estados es lo que tienes que programar para cualquier situación que requiera cierto estado. El personaje tiene que tener un componente llamado Animator Controller que es el que le dice que ese archivo que tú le des, es su máquina de estados, es decir, en ese archivo tenemos que decirle todos los estados/animaciones que puede hacer. En la siguiente imagen representa la máquina de estados de Pink en un nivel horizontal. 22
Desarrollo de un videojuego de plataformas 2D en Unity Todas las máquinas de estado empiezan por defecto con: - Entry. - Any State. El nodo Entry es para cuando nada más ejecutemos nuestro juego, pasará al estado que tenga asociado, es el primero que se ejecuta. En mi caso, se ejecutará la animación/estado Idle que es la animación de cuando el personaje está sin realizar ninguna acción para que al usuario final le transmita una sensación de que está en marcha el juego y no está funcionando mal. Any State es cuando, por ejemplo, la animación de que el usuario esté fallecido por alguna causa, se ejecutará este estado después de cualquier estado que estaba, es decir, si se reproduce la animación de muerte da igual si estará saltando, disparando, etc. que va a ejecutarse este estado. Retos tecnológicos: Un reto tecnológico que se me ha presentado es el hecho de que, al tener un Smartphone con el sistema operativo de iOS, necesitamos tener una cuenta de desarrollador de Apple antes de pagar para poder subir nuestro juego a la AppStore. Después de tener la cuenta, necesariamente necesitamos un ordenador de la marca Apple para poder instalar el juego en el dispositivo móvil a través del programa xCode. Esto ha hecho un poco más complicado el poder probar el juego, pero al intentarlo en varias ocasiones al final sí que se ha podido realizar. El otro problema que podemos detectar es que cuando te instalas el juego en tu dispositivo, este solo dura unos días activo, llega un momento en que esa versión que instalaste del juego no funciona, por tanto, debemos de volver a instalar el juego como hemos dicho antes, pero al menos podemos probar como funciona. Este problema no ocurriría si se pagara a la marca Apple para poder publicar tus aplicaciones en la AppStore. 23
Desarrollo de un videojuego de plataformas 2D en Unity Workflow: A continuación, muestro todas las tareas que he llevado a cabo para elaborar el proyecto: 24
Desarrollo de un videojuego de plataformas 2D en Unity 25
Desarrollo de un videojuego de plataformas 2D en Unity Sobre el Diagrama de Gantt podemos observar que lo más complejo y duradero ha sido el realizar por primera vez un nivel completo, ya que, se debe hacer las mecánicas del jugador, menús, diseño del nivel etc… Pero tampoco quiere decir que sea fácil crear niveles a partir de uno hecho, porque para hacer que cada nivel no tenga errores se debe de probar muchas veces y eso, ocupa tiempo, además de decorar/diseñar el nivel. Esto también es un trabajo largo y entretenido. 26
Desarrollo de un videojuego de plataformas 2D en Unity Arquitectura de la aplicación / diagramas: Todas las escenas que aparecen en el juego están explicadas en el anexo del GDD (Game Design Document), pero podemos detallar un poco más que cada escena tiene su canvas correspondiente, porque por ejemplo en el menú principal habrá un canvas con sus respectivos botones e imágenes para que el usuario pueda interactuar con ellos. En la siguiente imagen se muestra la escena que es el Menú principal del juego y como hemos dicho tendrá sus respectivos botones para poder interactuar, que como se puede observar son: Start, Options, About y Exit. Además, tiene asociado tres sistemas de partículas que están en constante movimiento al igual que el personaje de Pink para dar sensación de que el juego está en marcha y no dar la sensación de que ha dejado de funcionar. Al pulsar el botón Start nos dirigiremos al menú de niveles para poder escoger el nivel que queramos jugar, por tanto, tendremos otro canvas especializado para esta escena y cada nivel tendrá sus respectivas estrellas que serán las que indicará al usuario se ha obtenido el 100% del nivel o no. 27
Desarrollo de un videojuego de plataformas 2D en Unity Para saber calcular el 100% de un nivel, es decir, si ha destruido todos los enemigos que haya en el nivel, si ha recogido todas las monedas que haya y si ha recogido mínimo 3 diamantes, he hecho el uso de un script denominado Game Manager. Es una clase pública estática, cuyo objetivo es crear diferentes variables que se puedan acceder a ellas desde cualquier otro script y así poder modificarlas cuando y donde quiera que esté. 4. CONCLUSIONES Capturas de la aplicación: A continuación, se muestran imágenes de la aplicación menos la del menú principal, ya que se muestra anteriormente. - Opciones: 28
Desarrollo de un videojuego de plataformas 2D en Unity - Acerca de: - Menú de niveles: 29
Desarrollo de un videojuego de plataformas 2D en Unity - Interfaz dentro de un nivel horizontal: - Interfaz dentro de un nivel vertical: - Menú de pausa/ finalización de nivel/ perder la partida: 30
Desarrollo de un videojuego de plataformas 2D en Unity Publicar en stores: He publicado mi aplicación en la tienda de Google que se denomina Google Play, ya que, lo bueno de publicarlo en este lugar es que hay muchísimos dispositivos móviles con sistema operativo Android en el mercado y el precio es más asequible. A la hora de realizar esta publicación he podido observar todo el trabajo que hay detrás de todo esto, ya que para que los desarrolladores puedan ver todo el seguimiento de su aplicación y para poder configurar o publicar, tienen una plataforma web llamada Google Play Console y aquí es donde te das cuenta de toda la de información que pueden llegar a transmitirte, a esto me refiero a que te dicen cuántas descargas ha tenido tu aplicación, e incluso en qué versión de Android, todas las valoraciones, si todavía las personas que se han instalado tu aplicación siguen teniendo tu juego, además de poder promocionar tu aplicación a través de anuncios o ver desde que país han instalado tu aplicación… En esta misma plataforma, se pueden publicar tus aplicaciones siguiendo una serie de pasos que hay que configurar, como, por ejemplo, la edad que te califican para tu juego. Al realizar una serie de preguntas formuladas por Google, él te determina la edad mínima recomendada que tiene que tener el jugador, pero para cada país es un número diferente, ya que cada país tiene sus leyes de censura. Para mi aplicación el resultado final ha sido el siguiente: Encuestas: He realizado una encuesta para poder tener más información acerca de la opinión de los jugadores que han podido probar mi juego antes de publicarlo y así poder tener una idea de las mejoras que se podrían realizar en un futuro. Como la encuesta es anónima, he preguntado algunas cosas personales para poder ver si por ejemplo tiene estudios relacionados con los videojuegos y, por tanto, sabe más del tema del desarrollo, ya que no es lo mismo una opinión subjetiva a una opinión que ya ha pasado por aquí y sabe cómo va todo. 31
Desarrollo de un videojuego de plataformas 2D en Unity Estas han sido las cuestiones que se han planteado: - Sobre la interfaz del juego en un nivel, ¿te ha parecido intuitiva? - ¿Cambiarías alguna cosa de la interfaz? - ¿Los controles del juego te parecen cómodos y correctos? - Sobre la decoración del juego, ¿qué te ha parecido y que sensaciones te ha transmitido? - Sobre el nivel de dificultad, ¿te ha resultado demasiado fácil/difícil poder completar el nivel al 100%? ¿Por qué? - ¿Eres jugador habitual? - Define en tres palabras el juego Pink justificando tu respuesta. - Del 1 al 10, ¿qué nota le pondrías? - ¿Por qué crees que se merece esa nota? (respuesta a la anterior pregunta). - ¿Qué edad tienes? - ¿Sexo? - ¿Tienes algún conocimiento sobre la creación de videojuegos? - ¿Las animaciones de todos los personajes te han parecido nítidas/correctas? ¿Por qué? - Sobre el objetivo del juego, ¿qué te ha parecido? - ¿Crees que es conveniente poner a un personaje que te explique cómo va el juego? (Valentina). - ¿Qué cosas propondrías para mejorar el juego? - ¿Crees que este juego en otras plataformas como PC o consolas estaría bien? - ¿Qué género de videojuegos te suele gustar más? - ¿Has desarrollado algún videojuego o piensas hacerlo en un futuro? - Sobre la música y sonidos, ¿qué te han parecido? Justifica tu respuesta. - ¿En qué te sueles fijar en el momento que ves un videojuego por primera vez? Los resultados obtenidos los voy a dividir en tres bloques, que son los siguientes: - Resultados de personas con algún conocimiento sobre videojuegos. - Resultados de personas que no tienen ningún conocimiento sobre videojuegos. - Resultados generales sin tener en cuenta ninguna condición anterior. 32
Desarrollo de un videojuego de plataformas 2D en Unity 1. Resultados con conocimientos previos: ¿Interfaz ¿Controles ¿Estéticamente ¿Dificultad? ¿Animaciones Descripción intuitiva? correctos? agradable? correctas? objetivo 100% Si 60% Sí 100% Si 20% Difícil 100% Si 60% Entretenido 40 % No 20% Normal 40% Sencillo 60% Fácil ¿Necesidad ¿PC o ¿Música/Sonidos Nota Nota final de ayuda Consola? adecuados? individual sobre 10 (Valentina)? sobre 10 80% Si 100% Si 100% Si 9 8,2 7 20% No 6 10 9 Resultados obtenidos al haber realizado la encuesta a 5 personas, de las cuales 3 son hombres y 2 mujeres. 2. Resultados sin conocimientos previos: ¿Interfaz ¿Controles ¿Estéticamente ¿Dificultad? ¿Animaciones Descripción intuitiva? correctos? agradable? correctas? objetivo 100% Si 100% Si 80% Si 60% Difícil 100% Si 60% Práctico 20% No 40% Normal 40% Sencillo ¿Necesidad ¿PC o ¿Música/Sonidos Nota Nota final de ayuda Consola? adecuados? individual sobre 10 (Valentina)? sobre 10 100% Si 60% No 100% Si 8 8,4 7 40% Sí 10 8 9 33
Desarrollo de un videojuego de plataformas 2D en Unity Resultados obtenidos al haber realizado la encuesta a 5 personas, de las cuales 2 son hombres y 3 mujeres. Las diferencias entre el primer resultado y este, no es que sean muy significativas, pero la que más resalta es que quien ha estudiado y tiene idea de estos conocimientos sí que piensan que podría ser un buen mercado el publicarlo para PC o Consola, esto puede deberse a que los que suelen ser jugadores habituales también les gusta jugar en todas las plataformas y por eso conlleva a querer tener conocimientos sobre este tema. Además de que al haber jugado más, el porcentaje de dificultad varía significativamente, ya que quien no suele jugar, no tiene experiencia de ningún tipo y, por tanto, le resultará más complejo. 3. Resultado general: ¿Interfaz ¿Controles ¿Estéticamente ¿Dificultad? ¿Animaciones Descripción intuitiva? correctos? agradable? correctas? objetivo 100% Si 80% Si 90% Si 40% Difícil 100% Si 40% 20% No Entretenido 10% No 30% Normal 30% Práctico 30% Fácil 30% Sencillo ¿Necesidad ¿PC o ¿Música/Sonidos Nota final de ayuda Consola? adecuados? sobre 10 (Valentina)? 90% Si 70% No 100% Si 8,3 10% No 30% Sí Estos resultados se han obtenido al sacar las conclusiones de las 10 personas juntas. Cabe añadir que, para describir el juego en tres palabras, las más usadas han sido: - Divertido. - Entretenido. - Amigable. 34
Desarrollo de un videojuego de plataformas 2D en Unity Pienso que son tres palabras que me producen mucha satisfacción, ya que parece que he conseguido que a mi juego les guste por lo menos a 10 personas que he cuestionado. Las edades a las que se ha hecho dicha encuesta han sido desde 19 años hasta 36 años, donde han participado 5 hombres y 5 mujeres. Por tanto, he de aclarar que me ha sido útil el hecho de hacer estas valoraciones, porque ha servido para aprender los pequeños fallos y poder tener más visión de futuro para próximas actualizaciones que hablaré en el siguiente punto de la memoria. Trabajo futuro: Después de haber preguntado con las encuestas, he de decir que había conceptos que no había pensado antes, pero que ahora me han ayudado para próximos proyectos futuros, como, por ejemplo, el hecho de que, en el primer nivel, podría haber explicado mejor con algún tutorial que hiciera que el jugador se enseñara los controles paso a paso, además de tener al personaje de Valentina para facilitar el aprendizaje del juego al jugador. En futuras actualizaciones me gustaría publicar el juego para las plataformas de PC o Consola, ya que pienso que podría ser un gran mercado para darte a conocer, pero antes, me gustaría el poder añadir más idiomas para la aplicación, porque ahora mismo solo está disponible en inglés y al menos, me gustaría añadir el español. Por último, añadiría algún objeto que el jugador pudiera coger en niveles y le transformara para poder tener poderes especiales, por ejemplo, siendo inmune a los ataques de los enemigos durante un tiempo, o poder tener diferentes balas cuando dispara con la pistola para poder hacer más o menos daño a los enemigos, etc. Se pueden hacer muchas cosas todavía, pero creo que con el tiempo dedicado y esfuerzo el resultado ha sido muy satisfactorio, espero poder añadir más niveles al juego con diferentes mecánicas de ahora en adelante para poder desarrollar aún más el potencial que puede llegar a tener este juego. 35
Desarrollo de un videojuego de plataformas 2D en Unity 5. ANEXOS GDD: A continuación, muestro el documento que todo juego tiene que hacer antes de empezar su fase de desarrollo que se denomina Game Design Document, es decir, documento de diseño del juego. Es un documento donde se explica todo lo que tiene que tener el juego al finalizar su desarrollo, por tanto, se tienen que pensar todas las cosas que queremos de él y plasmarlas en este documento. Por decirlo de otra manera, cualquier persona que lea este documento y no tenga nada que ver con dicho juego, tiene que ser capaz de describir todo lo que tiene. 36
Desarrollo de un videojuego de plataformas 2D en Unity 37
Desarrollo de un videojuego de plataformas 2D en Unity ÍNDICE Introduccion ............................................................................................................................... 3 Descripción del proyecto........................................................................................................ 3 Descripción técnica ................................................................................................................ 3 Diseño del juego ........................................................................................................................ 4 Gameplay General y Mecánicas Principales .......................................................................... 4 Objetivos: ............................................................................................................................ 4 Jugador....................................................................................................................................... 5 Interfaz del usuario .................................................................................................................... 7 Sistemas ..................................................................................................................................... 8 Diagrama de flujo....................................................................................................................... 9 Enemigos .................................................................................................................................. 13 Troll: .................................................................................................................................. 13 Archer: ............................................................................................................................... 13 Diseño de niveles ..................................................................................................................... 14 Descripción General de los Niveles ...................................................................................... 14 Mecánicas de Juego Asociadas: ....................................................................................... 15 Arte .......................................................................................................................................... 18 Descripción General del Diseño Artístico ............................................................................. 18 Personajes ................................................................................................................................ 20 Pink ....................................................................................................................................... 20 Animaciones ..................................................................................................................... 20 Valentina .............................................................................................................................. 24 Animaciones ..................................................................................................................... 25 Referencias ................................................................................................................................ 2 38
Desarrollo de un videojuego de plataformas 2D en Unity INTRODUCCIÓN Descripción del Proyecto Pink es un juego plataformas donde el objetivo del jugador es encontrar a través de la exploración del nivel, 3 gemas para poder completarlo y seguir jugando. Nuestra protagonista llamada Pink, se encuentra en un lugar que desconoce denominado bosque encantado. El objetivo de este juego es conseguir todo lo que se pueda para salir de allí con vida. Descripción Técnica El juego se está desarrollando íntegramente en el motor Unity y la plataforma a la que va a ir diseñada es para Smartphone Android. 39
Desarrollo de un videojuego de plataformas 2D en Unity DISEÑO DEL JUEGO Gameplay General y Mecánicas Principales La protagonista avanza por el nivel luchando contra enemigos y el nivel finaliza cuando se cumplen uno de los dos acontecimientos siguientes: - Cuando llega al final del nivel y tiene 3 gemas recogidas siendo un nivel horizontal. En los niveles verticales solo tiene que llegar al final del nivel. - Cuando el personaje muere, ya sea cayendo al vacío, cayendo en unos pinchos o sea eliminado por algún enemigo. Se completa el nivel cuando el personaje llega a un cierto punto del nivel y habiendo cumplido sus objetivos. Al entrar en contacto con ese punto, se volverá al menú donde están todos los niveles para poder pasar al siguiente o si quiere volver a repetir el mismo. El personaje puede perder por tres razones: - Pierde cuando su vida tiene 0 corazones. - Pierde cuando cae al vacío. - Pierde cuando cae en unos pinchos. El nivel tendrá uno/ dos o ningún checkpoints para que el jugador pueda hacer respawn en ese mismo sitio donde esté en el caso de que pierda en algún momento del nivel. El sitio donde aparecerá el jugador será en el último checkpoint que habrá recogido simplemente con tocarlo. Objetivos El objetivo del jugador para finalizar el nivel debe ser encontrar las 3 gemas que estarán esparcidas por dicho nivel en el que se encuentre y con ellas llegar al punto donde finalice éste. Si el objetivo del jugador es completar el nivel al 100% tendrá que recoger, aparte de las 3 gemas, todas las monedas y derrotar a los enemigos que haya por el nivel. 40
Desarrollo de un videojuego de plataformas 2D en Unity JUGADOR La vida del jugador cuenta con 3 corazones, por tanto, dependiendo del enemigo le quitará uno o dos corazones. Habrá pick ups repartidos por el nivel que sirven para recuperar vida y, por tanto, cada uno de ellos aumentará un corazón de la vida del personaje. Una vez se quede con 0 corazones, el personaje morirá y se hará respawn a algún checkpoint que habrá cogido anteriormente o si no ha cogido ninguno, se empezará de nuevo el nivel. El jugador cuenta siempre con una pistola en un nivel horizontal, de la cual cuando pulse un botón, podrá disparar una serie de balas durante un tiempo limitado, cuando haya descargado 10 balas, tendrá que esperar unos segundos para que se vuelva a recargar las balas para poder seguir disparando. Nuestro personaje podrá disparar balas como hemos dicho anteriormente y afectarán a los enemigos que les toque con ellas. Cuando dispare, las balas se desplazarán en la dirección donde el personaje mire cuando se haya pulsado el botón de disparar, es decir, si el jugador pulsa el botón cuando el personaje mira hacia a la derecha, las balas irán para la derecha. El jugador puede ser atacado por los enemigos ya sea por el arma del enemigo o por entrar en contacto con él. La información al jugador aparecerá mediante un personaje que estará en el nivel en forma de mensajes explicando los controles del juego. El jugador interactuará con las cajas del nivel mediante el mismo botón que dispara para que le resulte más fácil y cómodo los controles, pero en vez de disparar balas, le cambiará el arma por un sable para poder abrir la caja. En ese momento el botón de la interfaz cambiará. 41
Desarrollo de un videojuego de plataformas 2D en Unity Para poder moverse por el escenario horizontalmente usará un joystick que aparece en pantalla y si pulsa un botón que estará en la interfaz podrá saltar y así podrá moverse verticalmente también. Mientras nuestro jugador esté en el nivel puede poner pausa apretando un botón que aparecerá en la interfaz del nivel. Al pulsarlo, le aparecerá un menú con la opción de volver a empezar el nivel, continuar por donde va o volver al menú donde están todos los niveles para poder elegir otro nivel, si es ese su deseo. Esto sería cuando están en niveles horizontales, pero en el momento que estén en niveles verticales el jugador tendrá un jetpack en el que simplemente tendrá que ir recogiendo los ítems sin chocar con los pinchos y esquivando las flechas que les dispararán los enemigos para llegar al final del nivel. Si el personaje muere en un nivel vertical, mostrará una animación de una explosión y tendrá que empezar de nuevo el nivel, ya que en los niveles verticales no habrán checkpoints para hacer una experiencia más divertida y desafiante. 42
Desarrollo de un videojuego de plataformas 2D en Unity INTERFAZ DE USUARIO A continuación, muestro la interfaz que tendrá el usuario siempre que esté en un nivel horizontal: Vida Pausa N.º monedas/gemas Joystick Disparo / ataque Saltar En un nivel vertical, simplemente cambia la parte derecha porque solo tendrá un botón, ya que servirá para darle un impulso hacia arriba a Pink cada vez que el jugador presione el botón. 43
Desarrollo de un videojuego de plataformas 2D en Unity SISTEMAS Sobre la vida del personaje, habrá una imagen del protagonista justo al lado, esta imagen es la cara de él mismo, que cambiará cuando le hagan daño y volverá a cambiar al estado normal cuando dejen de hacerlo. Estado normal: Cuando le hacen daño: Como hemos visto en la anterior página, el jugador tendrá un contador de monedas y de gemas en la parte superior de la pantalla donde sabrá cuantas monedas y gemas ha recogido. Justo al lado del contador, tenemos el botón de pausa, el cual hemos nombrado anteriormente que es para pausar el nivel en cualquier momento. En la parte inferior de la pantalla, observamos que a mano izquierda tenemos el joystick donde el jugador puede mover al personaje de izquierda a derecha siempre que quiera. A mano derecha, tenemos dos botones, el de arriba será el botón para poder disparar o para poder atacar con el sable y, por último, tenemos el botón justo abajo que es para poder saltar, que solo se va a poder saltar una vez y será cuando estemos tocando la superficie del suelo. 44
Desarrollo de un videojuego de plataformas 2D en Unity En el caso de ser un nivel vertical, la interfaz ya no tendrá los botones de disparar y saltar, se sustituirá por un botón que será para iniciar el vuelo con el jetpack y para impulsar a Pink, como se muestra en la siguiente imagen: 45
Desarrollo de un videojuego de plataformas 2D en Unity DIAGRAMA DE FLUJO 46
Desarrollo de un videojuego de plataformas 2D en Unity A continuación, explicamos el diagrama de flujo que hemos dado anteriormente. Imágenes: Aparecerá una imagen donde aparecerá mi nombre y que está hecho con el motor Unity. Texto Hecho con Unity Resultado final: Menú principal: El menú principal constará con cuatro botones, los cuales al seleccionarlos nos llevará a un sitio o a otro. Los botones son: Empezar, Opciones, Información y Salir. Anteriormente ya se ha mostrado la imagen final. LOGO Empezar Opciones Imagen Información Salir 47
Desarrollo de un videojuego de plataformas 2D en Unity Menú de niveles: Aparecerán todos los niveles de nuestro juego para poder elegir el nivel que queramos jugar. Anteriormente ya se ha mostrado la imagen final. LOGO Imagen Imagen Imagen Empezar: Al pulsar este botón nos dirigirá a la pantalla de Menú de niveles. Juego: Se refiere al gameplay del juego, es decir, estamos dentro de un nivel del juego, cuya interfaz está descrita anteriormente. Menú de pausa: Durante el juego, podemos poner pausa cuando queramos y tenemos dos opciones, volver al nivel por donde lo habíamos dejado o volver al Menú de niveles. Anteriormente ya se ha mostrado la imagen final. Continuar Volver al menú de niveles 48
Desarrollo de un videojuego de plataformas 2D en Unity Opciones: Al pulsar este botón nos dirigirá a la pantalla de Sonido. Sonido: Aquí podremos modificar el sonido y la música del juego. Anteriormente ya se ha mostrado la imagen final. Imagen Imagen Información: Al pulsar este botón nos dirigirá a la pantalla de Información sobre él. Información sobre él: Aparecerá información acerca del juego. Muerte o Victoria: Aparecerá una pantalla donde las opciones será reiniciar el nivel si ha muerto o si vuelve al menú de niveles si ha ganado. Salir: Al pulsar este botón podremos salir del juego. 49
Desarrollo de un videojuego de plataformas 2D en Unity ENEMIGOS TROLL Habrá enemigos de este tipo esparcidos por ciertos puntos del nivel. Estos, se moverán de un punto A hacia un punto B mientras no detecte la presencia del jugador. Para poder detectar al jugador, los enemigos tendrán un rango de distancia, en cuanto detecten que están dentro de ese rango, se pondrá a atacar con un hacha que tiene, si esa hacha o él mismo toca al jugador, le restará un corazón de vida. La vida de los enemigos serán 30 puntos, de los cuales, se podrán ir restando hasta destruirlo gracias a las balas que le golpeen lanzadas por el protagonista. ARCHER Habrá enemigos de este tipo esparcidos por ciertos puntos del nivel. Estos, permanecerán quietos en ciertos puntos del nivel y cuando detecte la presencia del protagonista le disparará una flecha cada cierto tiempo que le quitará 2 corazones al jugador si lo tocan. La vida de estos enemigos será de 3 puntos y se podrán eliminar con las balas o con el sable del protagonista. Este tipo de enemigo representa a las dueñas del bosque en el que se encuentra el protagonista, por eso intentan destruirle y mandan a los Trolls para defender y proteger lo que es suyo. 50
Desarrollo de un videojuego de plataformas 2D en Unity DISEÑO DE NIVELES Descripción General de los Niveles Los niveles van a tener muchos tipos de plataformas que se detallan más adelante, constará de ítems como, por ejemplo, gemas, monedas, vida, cofres y cajas, de los cuales también se describirá todo a continuación. Cada nivel constará de X número de monedas y 3 gemas como mínimo siempre, los demás ítems, se desarrollará en cada nivel de una manera dependiendo del nivel de dificultad, y de cómo se diseñe dicho nivel. Los niveles seguirán un patrón en el que el jugador podrá moverse tanto para delante como para atrás del nivel, es decir, que no es un juego que simplemente nos moveremos hacia delante (hacia la derecha) y no podremos volver atrás. Como se ha dicho anteriormente, para completar el nivel 100% se necesitará recoger todas las monedas, eliminar a los enemigos que haya y recoger las 3 gemas que estarán por el nivel. En el menú donde aparecen todos los niveles, constará cada uno con 3 estrellas, si se consigue el 100% del nivel, éste se reflejará en esa interfaz con 3 estrellas. Si solamente se recogen las 3 gemas necesarias para desbloquear el siguiente nivel, el jugador obtendrá solo una estrella. Si se recoge todas las monedas y las 3 gemas, obtendrá 2 estrellas y, por último, si además de esto elimina a todos los enemigos, como hemos dicho obtendrá las 3 estrellas. 51
Desarrollo de un videojuego de plataformas 2D en Unity Mecánicas de Juego Asociadas Las plataformas por las que tendrá que saltar nuestro protagonista en los niveles del juego son las siguientes: Plataformas dañinas: Son plataformas que te quitan un corazón cuando el protagonista las toca al subir en ella. Plataformas destructivas: Son plataformas que se destruyen a los segundos de que el jugador haya entrado en contacto con ellas. Plataformas movibles: Son plataformas que se pueden mover en vertical o horizontalmente. Plataforma 180 grados: Son plataformas que tendrán en la parte de debajo de ella pinchos que podrán hacer que el jugador pierda al entrar en contacto con ellos. Cada cierto tiempo la plataforma rotará 180º. Plataforma con rotación: Son plataformas que están rotando todo el tiempo y que si el jugador las toca, le quitarán un corazón de vida. 52
Desarrollo de un videojuego de plataformas 2D en Unity Durante el nivel el jugador podrá encontrarse con los siguientes objetos: Cajas: Pueden estar en el nivel y que, al destruirlas con el sable, puede que haya objetos que el personaje pueda recoger, como monedas o gemas. Tiene una única animación que es la destrucción de la caja. Cofres: Son cofres que pueden estar en el nivel y que al abrirlos con solo tocarlos pueda recoger el objeto que hay dentro, que será alguna gema. Al igual que las cajas, tienen una única animación que será la de abrir el cofre, por tanto, una vez abierto, se quedará abierto durante todo el nivel. Power ups: El jugador los recoge tocándolos y pueden estar escondidos en cajas o esparcidos por el nivel. Los power ups pueden ser monedas o gemas. Las monedas tendrán una animación que será dar vueltas siempre hasta que el jugador la recoja. 53
Desarrollo de un videojuego de plataformas 2D en Unity Sobre las gemas habrá de tres clases, roja, verde o azul que serán las siguientes: Pick ups: Lo mismo que con los Power ups, pero éste solo puede ser un corazón de vida. Al igual que las monedas, tendrá una animación que se repetirá en bucle hasta que el jugador lo recoja. Checkpoints: Como hemos dicho anteriormente, habrá uno o dos checkpoints para poder hacer respawn si nuestro jugador muere. Tendrá una animación que se activará cuando el jugador haya tocado/cogido ese checkpoint, para que se dé cuenta que está activo y que, si muere, comenzará desde ese punto de guardado. Checkpoint desactivado. Checkpoint activo. 54
Desarrollo de un videojuego de plataformas 2D en Unity ARTE Descripción General del Diseño Artístico El diseño artístico de este juego tiene un estilo cartoon tanto en el protagonista como en el entorno en el que se encuentra. Tiene colores muy característicos para dar un toque más alegre o para dar un toque más tétrico, dependiendo del nivel, hace que el jugador se pueda sentir más a gusto con el paisaje y querer estar más tiempo, o justo lo contrario y querer pasarse el nivel cuánto antes. Unos ejemplos del entorno serían: 55
Desarrollo de un videojuego de plataformas 2D en Unity A continuación, se muestran imágenes del juego dentro de un nivel: 56
Desarrollo de un videojuego de plataformas 2D en Unity 57
Desarrollo de un videojuego de plataformas 2D en Unity Al estar dentro de un nivel podemos encontrarnos con estos animales para darle más vida al entorno, además de obtener más satisfacción para la visión de nuestro jugador tendremos la sensación de que el bosque está vivo. Los animales son conejos y zorros que siempre tendrán una única animación que estará en bucle constante. Conejo: Zorro: 58
Desarrollo de un videojuego de plataformas 2D en Unity PERSONAJES PINK Nuestra protagonista llamada Pink, es una niña traviesa que lucha por lo que quiere y para ello, necesita defenderse de los enemigos que se va encontrando con su pistola o con su sable. Desde el principio de cada nivel, Pink tiene su pistola como arma principal, con la cual, podemos disparar a nuestros enemigos para poder avanzar por el nivel, pero cuando se acerca a una caja, esta arma cambia a ser un sable. ANIMACIONES Las animaciones que va a tener este personaje son: Disparar: Animación que surge cuando pulsamos el botón siempre y cuando tengamos balas y estamos lejos de las cajas. 59
Desarrollo de un videojuego de plataformas 2D en Unity Cortar: Animación que surge cuando estamos cerca de alguna caja. Saltar: Animación que surge cuando pulsamos el botón mientras estamos tocando el suelo. 60
Desarrollo de un videojuego de plataformas 2D en Unity Volar: Animación que surge cuando estamos en un nivel vertical y podemos tener desde el principio del nivel un jet pack. Explosión: Animación que surge cuando estamos en el nivel vertical y el jugador pierde la partida. 61
Desarrollo de un videojuego de plataformas 2D en Unity Herir: Animación que surge cuando algún enemigo le hace daño. Parar/Idle: Animación que surge cuando el jugador no interactúa con nada. 62
Desarrollo de un videojuego de plataformas 2D en Unity Caminar: Animación que surge cuando movemos el personaje de izquierda a derecha utilizando el joystick. Morir: Animación que surge cuando se nos acaban los corazones estando en un nivel horizontal. 63
Desarrollo de un videojuego de plataformas 2D en Unity VALENTINA Es un personaje femenino que simplemente lo que hace es informar al jugador sobre el control del juego, es decir, es una manera de ayudar al jugador a conocer mejor el juego, como una especie de tutorial que el usuario puede decidir si hacerle caso o no. No le obliga a leer lo que tiene que decirle, si él quiere lo leerá e ira pasando las imágenes que mostrara el personaje Valentina, por tanto, es una decisión del usuario final. ANIMACIONES Cuando el personaje está dentro de la escena, estará esperando a detectar el jugador, en el momento que detecte al jugador, aparecerá una imagen como si estuviera hablándole, por tanto, tiene dos animaciones, que son: Parar/Idle: Se produce en bucle mientras no detecta al jugador. 64
Desarrollo de un videojuego de plataformas 2D en Unity Hablar: Se produce en bucle en el momento que detecta al jugador cerca de ella en bucle hasta que deja de decir lo que tenga que decir y vuelve a la animación de antes. REFERENCIAS Este juego tiene algunas referencias a juegos que hemos visto con anterioridad, como, por ejemplo: New Super Mario Bros Referencias a las monedas, al entorno como si fueran dibujos, sin violencia… 65
Desarrollo de un videojuego de plataformas 2D en Unity Crash Bandicoot Referencias a los Pick ups, al tema de destruir las cajas… Shovel Knight Referencias a los Checkpoints. 66
Desarrollo de un videojuego de plataformas 2D en Unity Metal Slug 3 Referencias a la mecánica de la protagonista a la hora de disparar cuando está alejada de las cajas y atacar con un sable cuando está cerca de ellas. Hasta este punto llega el documento GDD (Game Design Document). 67
Desarrollo de un videojuego de plataformas 2D en Unity Código: 68
Desarrollo de un videojuego de plataformas 2D en Unity 69
Desarrollo de un videojuego de plataformas 2D en Unity 70
Desarrollo de un videojuego de plataformas 2D en Unity 71
Desarrollo de un videojuego de plataformas 2D en Unity 72
Desarrollo de un videojuego de plataformas 2D en Unity He escogido este fragmento de código que pertenece al script del control del personaje del nivel 1, es decir, el control del personaje de Pink, ya que me ha parecido lo más costoso y tedioso, porque tiene muchas animaciones, triggers, colliders… con las que puede interactuar, por eso lo más difícil ha sido encajarlo todo perfectamente. En este proyecto, he creado todas las variables, métodos, comentarios e incluso los commits que he hecho para el repositorio, todo en inglés, porque es una buena manera de practicar el idioma aparte de que a la hora de mostrar a alguien lo que has hecho, el poder ver el código ordenado, comentado y realizado en inglés podrá leerlo mucha más gente y es más presencial para tu curriculum. 73
Desarrollo de un videojuego de plataformas 2D en Unity 6. BIBLIOGRAFÍA https://www.assetstore.unity3d.com/en/ https://unity3d.com/es https://www.freesound.org/ http://www.piskelapp.com/ https://trello.com/ https://stackoverflow.com/ https://github.com/ https://www.youtube.com/ https://graphicriver.net/ https://play.google.com/store?hl=es 74
También puede leer