Rookie Awards 2024 - Open for Entries!
Procedural Infinite Runner 3D
Share

Procedural Infinite Runner 3D

by capere on 13 Jan 2022

Proyecto universitario que consiste en un juego 3D que el personaje es un coche que tiene que aguantar el máximo tiempo posible sin perder la vida. Se aplican conocimiento de Unity c#, funciones como el Perlin Noise y algoritmos de búsqueda.

0 454 0
Round of applause for our sponsors

Procedural Infinite Runner 3D

Es un proyecto universitario realizado durante 3 meses en clase, cuyo objetivo principal es hacer un juego 3D en unity c# aplicándole un Perlin Noise. El juego consiste en una carretera, tu personaje es un coche y tienes que ir esquivando los obstáculos y  cogiendo las bonificaciones. 

Cuenta con un Main Menu con múltiples opciones que son botones. Start para avanzar a la selección de dificultad que se encuentra en otra escena, opciones y salir.

Una vez estas en la escena de dificultad, dependiendo el nivel que selecciones cambiará los parámetros del Perlín Noise y unos algoritmos de búsqueda que teníamos que implementar.  Mi elección fue utilizarlos una vez seas eliminado, es decir, el personaje cuenta con 5 vidas cuando llegas a 0 tienes una opción de revivir o morir dependiendo de la dificultad hay un parámetro o otro.

En fácil, es un algoritmo de búsqueda lineal, hay 10 números (botones) que el numero a buscar se ha obtenido aleatoriamente con Random Range. Es un sistema por turnos empezando el jugador, puedes seleccionar cualquier botón de los 10 disponibles, una vez selecciones uno comprueba si es ese numero el que esta buscando si es así te vuelve al juego, sino, le toca a la IA. En el turno de la IA al ser un sistema lineal va a escoger por orden ascendente. La manera que se ha realizado es con un bucle dentro dos arrays, uno que sea de los números a elegir y el otro de la misma longitud pero de boolenas en false, lo primero que realiza es comprobar que el numero no haya sido elegido por eso las booleanas en false.  Hace la comprobación si gana te de vuelve al menú principal si falla le toca al jugador. 

En medio, es un algoritmo de búsqueda binaria, el procedimiento es el mismo que en el anterior caso. La variante en este sistema es que aumentamos la dificultad de la IA, ya no avanza por orden sino que sigue un patrón. En el mini juego se saca un valor central dependiendo de que numero sea a buscar el centro varia pero sus limites tanto inferiores como superiores son iguales. La dificultad avanza cada ronda porque los limites van variando, es decir, si buscamos el 5, los limites son 1 y 10, el jugador selecciona el 7 falla, los nuevos valores son el limite mínimo es el 1 y el máximo es el 6, por lo tanto la IA ya descarta las opciones superiores a ese numero.

En difícil, es un algoritmo de búsqueda ternaria, se repite lo mismo en los casos anteriores el modo del jugador y el valor a buscar es aleatorio. Este algoritmo la diferencia es que va en grupos de 3, por lo que, los limites superiores y inferiores se dividen entre 3, por lo que hace en un juego que hay 10 opciones y que el jugador empieza hace complicado que si fallas en el siguiente turno casi siempre la IA acierta el número.

Una vez explicado la partes de algoritmos voy a explicar la parte de jugabilidad. El personaje es un coche, en el script aparece el movimiento del personaje, he elegido el movimiento con los botones AWSD, el movimiento lo realizado con el rb.  

El plano del juego, en este caso es una carretera es donde se nos van a generar objetos con el Perlin Noise.  El Perlin Noise cuenta con tres elementos a generar en la carretera. Los objetos se generan cada 5 segundos para ello aplicado el InvokeRepeating. Al ser una carretera hay doble sentido para los coches por lo que para realizar sensación de que unos avanzan hacia a ti y a los otros los estas siguiendo, para ello, el mapa lo divido por la mitad y aplico para cada uno de ellos su Perlin Noise.  Los objetos se generan por un instantiate que los valores de Y y Z son siempre los mismo los que varían son su posición en X por un bucle for para evitar que salgan todos en el mismo sitio. 

Hay tres objetos que se generan, el primero que es que mas probabilidad tienen en salir son los coches, no alteran el modo de juego solo hay que esquivarlos debido a que tienen un box Collider si te chocas con ellos te quitan 1 punto de vida. El bonus, tiene pocas posibilidades de salir, es un Bidón de gasolina, aparece en el interfaz del juego, es un contador regresivo, por lo que si llega a 0 pierdes, al coger el elemento desaparece y te dan 20 segundos más de juego y 1,5 puntos mas de vida. Por último el objetos sorpresa, que es un tanque que te dispara una vez tiene las mismas posibilidades de salir que el bonus, si te da la bala o te chocas con el te quitan un puntos de vida. Todos los objetos avanzan en el parámetro X, por lo que cuando llegan al final del mapa hay una pared invisible que los destruye así evitando que se acumulen los objetos y no aparezca el lag.


Comments (0)

This project doesn't have any comments yet.