Novacreations

Desarollando Software

Mientras realizaba mi proyecto de game programming me tope con la necesidad de generar un path el cual seguiría el personaje de mi juego.

El objetivo sería que el personaje llegare desde la parte de abajo de la pantallaa hasta la de arriba, esquivando balas de los enemigos y moviéndose solo por el path, si se saliera de este path el personaje caería.

También necesitaba que al llegar al tope del nivel, este cambiara para presentar un nuevo path y un nuevo nivel.

Sin embargo hacer un número de niveles finitos llegaría a ser muy aburrido, así que decidí hacer un sistema que generara los “tiles”(cuadros que forman el ambiente o mundo de un juego) de forma aleatoria.

Para esto utilice un método que me permitiría meter probabilidad dentro de los recursos pseudo-aleatorios de java. Este método recibe como parámetro un número de rangos, mas los valores de cada rango, su intención es regresar un valor dentro de esos rangos, por ejemplo:

int n = metodoRangos(2,1-10,11-20);

En este caso está recibiendo dos rangos, con el mismo número de valores entre ellos, lo que quiere decir que hay 50% de probabilidades de que nos regrese un número ya sea del primer rango como del segundo.

Modificando el rango modificamos la probabilidad de obtener un valor de determinado rango.

Utilizando esta herramienta podemos hacer un programa basado en probabilidad.

Pasos:

1.- Se establece el contenedor que tendrá a los tiles con sus respectivas propiedades, en mi caso utilicé arreglos estáticos puesto que ya sabia el tamaño del mundo.

2.- Se establece la dirección en la que se generarán los tiles. En mi caso empecé de derecha a izquierda recorriendo la primera fila.

3.- Se establece la primera generación de tiles. A partir de este punto se está utilizando una técnica de “Artificial life” para la generación de tiles (llamadas células en el ambiente de Alife), para más información sobre Alife consulta:

http://www.generation5.org/alife.shtml .

En esta versión se genera la primera fila a través de un ciclo, en la que se pone un número límite de tiles que serán “caminables” en el juego, esto con la finalidad de no poner demasiados tiles en la primera fila que luego afectaran a nuestro algoritmo. Se empieza por la derecha, en la que se tiene una probabilidad mediana de que el programa ponga un tile “caminable”, conforme avanza hacia la izquierda esta probabilidad va en aumento hasta que al final tenga una probabilidad de 99% de que ponga un tile “caminable”, esta técnica nos permite suprimir la posibilidad de ausencia de tiles en la primer fila y por lo tanto nuestro personaje aparezca en el aire e instantáneamente muera.

4.- Ya que tenemos la primera generación la utilizamos para generar las demás. Utilizamos el mismo procedimiento que para la primera fila, solo que el número de tiles permitidos para las siguientes generaciones va decreciendo, para no tener n caminos siempre. Así mismo modificamos el factor probabilidad para que este aumente considerablemente para que sea muy probable que el programa ponga un tile “caminable” si existe uno en la misma columna en la fila anterior. De esta manera aseguramos que siempre exista un camino desde el inicio hasta el final del nivel.

5.- Modificar las variables probabilísticas de acuerdo al tipo de mundos que queremos generar. En mi caso quería agregar un poco mas de diversión añadiendo la posibilidad de proyectar al personaje a un tile de distancia en cualquier dirección. Para esto se hace igualmente aleatorio el cambio entre el máximo de de tiles por fila, de esta manera habrá ocasiones en el que el limite se habrá logrado y aunque haya un tile debajo de esa fila, no se generará un tile “caminable” y por tanto se cortara el camino, aunque se garantiza que exista paso en la siguiente fila, lo cual se resolverá con la proyección del personaje.




Subscribe to email feed



La fábrica de softw

La Fábrica de Software de la Dirección de Innovación y ...

Administradores de A

Durante años aplicación ES File Explorer era la mejor y ...

Apoyo del Conacyt a

El Consejo Nacional de Ciencia y Tecnología (Conacyt), como parte ...

Microsoft Surface St

Esta semana Microsoft anuncio la existencia de su nueva PC ...

Incuba tu proyecto c

¡Buscamos nuevas tecnologías! Si tu proyecto es seleccionado Telcel te otorgará ...

Las 10 funciones de

  Java 8 incluye nueva funcionalidad que nos permite tener un ...

Como usar una funci

Usar una función hash para encriptar una contraseña no es ...

Cómo escribir códi

Nunca supongas a la malicia lo que puede ser explicado ...

Las 114 preguntas de

¿Tienes una entrevista de trabajo en puerta para un posición Java? ...

Believe in technolog

Ziff Davis Publishing es la más grande editorial de contenidos ...