Skip to content

AtlasOffMind/Maze_Runner

Repository files navigation

Introduccion: En este primer proyecto de programación se pidió desarrollar un juego al estilo "Maze Runner". Dada esta petición, utilizando Unity como entorno de desarrollo y diseño 3D, C# como lenguaje de programación, grandes
cantidades de café como alimento fundamental en las madrugadas de programación, un desarrollador con ideas locas y pocas horas de sueño, nació este juego llamado "Maze Runners: Running in the Edge" ambientado levemente en la película Maze Runners y otras ideas por parte del desarrollador.

Guía de instalación:

Descargar el "MazeRunner.rar", descomprimir en la carpeta que desee guardar el juego. Buscar el archivo MazeRunner.exe y dar doble click y jugar.

Requisitos para la instalación:

Usar Windows como Sistema Operativo.

Descripcion del Codigo:

La lógica del juego esta compuesta por un conjunto de clases en las que se implementan métodos de manera consecutiva necesarios para el control del juego. Entre las clases principales se encuentran:

1-	MazeCell:
     Es una clase destinada a guardar todos los componentes necesarios para crear un prefabricado acorde a la forma de una 
     pequeña habitación en forma de cubo (celada) y además tener los métodos necesarios para poder ajustar y personalizar 
     dichas celdas.
     
2-	Player:
     Esta clase solo contiene las características de cada Token en específico y así acceder a ellas para crear personajes 
     únicos.
     
3-	Traps:
     Es una clase estática diseñada de esta forma para poder acceder a ella de manera mas sencilla y poder gestionar toda la 
     lógica de las trampas de una forma más directa.
     
4-	MazeGenerator:
     Esta es de por si la clase mas importante del juego mismo dado a que esta clase tiene varias funciones implementadas para 
     ejecutarse en el principio del juego y básicamente gestione todo el comienzo. Entre las acciones que realiza en su método 
     Start (método especial de Unity que se acciona a la hora de entrar en una nueva escena) se encuentran:
     
            a.	1er For:
               Este for se dedica a instanciar en la escena todas las copias de los prefabricados de las celdas necesarias para 
               crear una matriz completa de objetos tipo MazeCell.
               
            b.	GenerateMaze:
               Este método utiliza la matriz creada con anterioridad para pararse sobre su primer elemento en la coordenada (de
               la matriz) <0,0> y lo que hace dicho de forma sencilla es preguntar si sus vecinos en 4 posibles direcciones (N,
               S, E, O) han sido visitados con anterioridad, si no es el caso escoge uno al azar y derrumba las paredes que lo 
               conectan para así crear un camino. Este proceso se repite de manera recursiva hasta que no tenga más vecinos 
               alrededor que no hayan sido visitados al menos una vez. De esta manera aseguramos crear “proceduralmente” un 
               laberinto completo, totalmente aleatorio para cada partida y sin posibilidades de espacios sin sentido o 
               inalcanzables.
               
            c.	SetEntranceAndExit:
               Como su nombre lo indica establece las entradas y salidas del juego cambiándoles el color para identificarlas y 
               guardándolas en listas de tipo MazeCell para ser utilizadas más tarde por otras clases.
               
            d.	Traps.Iniciate:
               Este es un método que hace iniciar las instanciaciones necesarias en la clase Traps para ser usadas 
               adecuadamente luego.
               
            e.	PuttingTraps:
               Un método dedicado solamente a la colocación de los 3 tipos de trampas diferentes en posiciones aleatorias del 
               juego utilizando rangos preestablecidos por el desarrollador.
               
            f.	PlacingPlayer:
               Este método coloca a todos los jugadores en las respectivas posiciones de entrada.
               
            g.	TM.PlayerSelect:
               Este método se encuentra en la clase TurnManagement, de la cual hablaremos ahora, este método recibe una lista 
               de tipo Player y selecciona al 1er token que le toca jugar y lo activa como el único al cual se le permite 
               moverse hasta que se acabe su turno.
               
5-	TurnManagement:

     Esta clase gestiona toda la lógica de los turnos recibiendo una lista de tipo Player donde se encuentran todos los 
     jugadores en juego. Esta clase activa y le pasa a cada token los componentes necesarios para jugar sin crear conflictos 
     con los otros scripts del juego mientras esta en ejecución. 
     
6-	Motion:

     Esta clase es la destinada a desplazar a los personajes por cada una de las celdas dentro del laberinto y evitando que 
     atraviesen paredes. Esta clase desplaza, deselecciona y salta a los tokens según criterios correspondientes dentro de ella 
     durante la ejecución del juego. 

                                
                                                                ¡Gracias por jugar!

Pd: Espero que haya disfrutado tanto el proyecto como yo a la hora de realizarlo y verlo completado dado a lo arduo que fue hacer el proyecto en 3D y con 0 conocimiento de Unity, solo pido que no tenga demasiado en cuenta el apartado visual dado a que aún lo puedo mejorar mas tenga en cuenta que esto es lo máximo que he podido lograr antes de la fecha límite.

Pd de la posdata: Espero para el momento de la exposición poder lograr mejorarlo al grado que me gustaría, espere con ansias futuras actualizaciones, no me pierda de vista.

About

This is an university proyect, it's a Maze Game made with Unity.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors