Está en la página 1de 22

Introduccin a la programacin de videojuegos

David Erosa Garca Luis Rodero Morales

ascii@talika.eii.us.es

tf2@talika.eii.us.es

Inteligencia Artificial
Ahora toca pensar...

Introduccin
Problemtica

Antes de la generalizacin del uso de tcnicas de IA, los PNJ de los juegos se comportaban de una manera fija:

Desplazamientos segn una ruta predeterminada o al azar. Disparos aleatorios. Incapacidad de evaluar situaciones de peligro.

Como consecuencia, el juego resultaba montono y predecible. sto hace que el jugador no se sienta retado por el juego.

Introduccin
Soluciones

Como solucin eficaz se emplean tcnicas como:

FSM (Finite-State Machines). Bsqueda de caminos. Heurstica. Algoritmos genticos. Redes neuronales. Lgica difusa.

Como introduccin a la IA, nos centraremos en los dos primeros puntos.

Finite State Machines


Introduccin

Una mquina finita de estado es una entidad abstracta compuesta por un conjunto de estados y de transiciones entre dichos estados. Las transiciones se producen segn unas condiciones que dependen del exterior y opcionalmente del estado actual. La mquina generar una serie de acciones segn el estado actual. Se usan generalmente para manejar unidades a nivel individual.

Finite State Machines


Introduccin

Para disear una FSM, tenemos que tener en cuenta todo lo que queremos que haga, y de qu manera. Segn lo anterior, hemos de agrupar acciones y condiciones de activacin (para obtener los estados). Para implementar una FSM existen varios mtodos. Nosotros usaremos una estructura simple:

Tenemos una interfaz fsmbase, que consiste en:

Una funcin think(), que se encarga de comprobar las condiciones y cambiar de estado. Una funcin update(), que produce las acciones correspondientes al estado actual.

Finite State Machines


Ejemplos de FSM's

Un ejemplo bsico:
Parado Lo veo? S Cazar No Lo veo? S Cerca? S Atacar No No

Finite State Machines


Ejemplos de FSM's

Tenemos una FSM que representa a una torreta automtica, con las siguientes caractersticas:

Est fija en el suelo e inicialmente est inactiva. Tiene un radar que barre una circunferencia de radio r. Cuando un jugador entra en el rea del radar, se activa el modo de bsqueda del objetivo. Cuando fija el objetivo, dispara. Si pierde el objetivo, intenta alinearse de nuevo con l. Si el objetivo se encuentra fuera del alcance del radar, vuelve al estado de inactividad.

Finite State Machines


Ejemplos de FSM's

Tenemos otra FSM que representa a las balas que dispara la torreta. Tienen las siguientes caractersticas:

Cuando son creadas, tienen inicialmente un estado volando, en el que lo nico que hacen es avanzar segn la direccin con que las hayamos inicializado. Si mientras estn volando tocan al jugador, cambiarn al estado choque, y consecuentemente al estado muerta. Si se salen de la pantalla, pasarn al estado muerta.

Finite State Machines


Ejemplos de FSM's

Como propuesta, podemos disear una FSM que implemente otro tipo de bala con las cualidades de la anterior y las siguientes:

Cuando se crean, se les pasa un objetivo, e inicialmente estn en el estado volando. Mientras estn volando, ajustarn su ngulo para alinearse con la posicin del jugador. Si pasado un tiempo no han colisionado con el jugador, dejarn de recalcular su ngulo.

10

Bsqueda de caminos
Introduccin

Para conseguir un comportamiento realista en un actor, este debe ser capaz de moverse por el mundo con cierta conciencia. El grado de inteligencia a la hora de buscar una ruta depende de la aplicacin y del tipo de actor. Ejemplo:

En el juego Pac-Man hay cuatro tipos de inteligencia de los fantasmas:

Cazador, que intenta llegar al jugador por el camino ms corto. Interceptor 1, intercepta al jugador en los cruces. Interceptor 2, intercepta al jugador usando los tneles. Roamer, que se mueve al azar por el escenario.

11

Bsqueda de caminos
Crash and Turn

Mientras no se llegue al destino { - Intenta avanzar en linea recta hasta el destino. - Si se produce una colisin con un obstculo { - Elegir uno de los dos lados (izquierda o derecha). - Rodear el obstculo hasta que volvamos a tener linea de visin con el destino. } }

12

Bsqueda de caminos
Algoritmo de Dijkstra

til cuando podemos describir nuestro mundo como un grafo. Los vrtices equivalen a zonas o regiones del mundo. Las aristas tienen un peso que representa la distancia entre los vrtices que unen. Desde el nodo de origen se explora el grafo siguiendo las aristas de menor peso.

13

Bsqueda de caminos
A*

El algoritmo A* encuentra el camino entre dos puntos en un mapa. El camino encontrado (si existe) es el ms corto. Es un algoritmo dirigido (intenta seguir el mejor camino posible). Los componentes del algoritmo son los llamados nodos. Un nodo est compuesto por 3 atributos:

G: Es el coste desde el nodo de inicio al nodo. H: Coste estimado hasta el nodo destino. F: Representa lo bueno que es el nodo.

Para encontrar el mejor camino, el algoritmo debe encontrar los mejores nodos del mapa. Esto se consigue calculando F: F=G+H

14

Bsqueda de caminos
A* - G

G es la distancia desde el nodo al nodo inicial. Puede tener distintos valores segn la topologa del mapa P. ej., un movimiento diagonal vale 14 y uno horizontal o vertical, 10.

G = 24

G = 14

G = 10

G = 14

G = 24

G = 20

G = 10

G=0

G = 10

G = 20

G = 24

G = 14

G = 10

G = 14

G = 24

15

Bsqueda de caminos
A* - H

H es la estimacin al nodo destino. Es la llamada Heurstica. Nosotros usaremos la distancia Manhattan x 10 . H = | x2 x1| + | y2 y1| * 10
1 H = 60 2 H = 50 3 H = 40 4 H =30 5 H = 20 6 H = 10 1

H = 50

H = 40

H = 30

H = 20

H = 10

H=0

H = 60

H = 50

H = 40

H = 30

H = 20

H = 10

16

Bsqueda de caminos
A* - F

El camino final se construye calculando en cada iteracin la 'F' del mejor nodo vecino y siguindolo.
1
G=0 H = 70 F = 70 G = 10 H = 60 F = 70 G = 20 H = 50 F =70

3
G = 48 H = 50 F = 98 G = 44 -> 38 H = 40 F = 84 -> 78

4
H = 40

5
H = 30

6
G = 72 H = 20 F = 94 G = 82 ->76 H = 10 F = 92 -> 86

G = 58 -> 52 G = 62

F = 98 -> 92 F = 95

G = 30 -> 24 G = 34 H = 40 H = 30

G = 80 H = 10 F = 81

G=H=F=-

F = 70 -> 64 F = 64

17

Bsqueda de caminos
Caminos - A*

18

Bsqueda de caminos
Caminos - A*

As, el algoritmo A* presenta ventajas e inconvenientes:

Ventajas:

Siempre que exista, encuentra el camino ms corto hasta el destino.

Inconvenientes: Tiene un coste computacional muy elevado. El camino que encuentra puede ser demasiado perfecto.

19

Bsqueda de caminos
Region-Based A*

Se basa en usar regiones de ms alto nivel de abstraccin para realizar las bsquedas.

Dividir el mapa en zonas conectadas por aristas entre las que no existan obstculos.

Especialmente til en regiones convexas, pues podemos movernos entre dos puntos sin encontrar obstculos. Es til combinar esta tcnica con Crash and Turn.

En una habitacin cuadrada llena de columnas cuadradas se puede navegar usando Crash and Turn. Para pasar de una habitacin a otra no contigua, se usa Region-Based A*.

20

Bsqueda de caminos
Iterative-Deepening A*

Otra alternativa para reducir los requerimientos de memoria y CPU del algoritmo A*. Consiste en calcular la ruta en porciones, de forma que no hay que examinar el rbol de una sola vez. El clculo de la ruta se interrumpe cuando el coste total excede de un lmite mximo. Como ejemplo:

Se comienza con un coste mximo de 10. Cada vez que avancemos 10 nodos, interrumpimos la bsqueda. Cuando corresponda, continuar desde el ltimo nodo.

21

EOD

Prximo da: 3D Lo estbais deseando, eh? :P

22

También podría gustarte