La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Taller Práctico de IA y Lógica en Videojuegos

Presentaciones similares


Presentación del tema: "Taller Práctico de IA y Lógica en Videojuegos"— Transcripción de la presentación:

1 Taller Práctico de IA y Lógica en Videojuegos
Autor: Jesús Flores García Tenerife LanParty 2k9 Taller Práctico de IA y Lógica en Videojuegos

2 Objetivos Taller de iniciación Aclaración conceptos
Introducción de técnicas básicas Resolución cuestiones y dudas Más ameno que riguroso

3 Temario Día 1: Entrando en la “Matrix” Día 2: Buscando el camino
Día 3: Nuestro cajón de arena Día 4: Ahora te vas y ¿yo qué hago?

4 Día 1: Entrando en la “Matrix”
Introducción de IA en videojuegos Principios básicos Objetos y Comportamientos Máquinas de estados (FSM)

5 Día 2: Buscando el camino
Decisiones y Capas Caso de Estudio: Pathfinding Técnica de alto nivel: Nav Maps Técnica de bajo nivel: Perseguidor

6 Día 1: Entrando en la “Matrix”

7 Día 1: Entrando en la “Matrix”
Introducción de IA en videojuegos Principios básicos Objetos y Comportamientos Máquinas de estados (FSM)

8 Breve Introducción de IA
NIÑO: No intentes doblar la cuchara. Eso es imposible. En vez de eso, sólo procura comprender la verdad. NEO: ¿Qué verdad? NIÑO: Que no hay cuchara. NEO: ¿No hay cuchara?

9 Breve Introducción de IA
Falsear la realidad Distraer la atención Cómputos ligeros Soluciones aceptables, no óptimas

10 ¡Quieres empezar! Inicialización Bucle de Juego Fase de Update
Fase de Render Update Render Cierre

11 ¡Código Please! if ( SGame.Init( hWnd ) ) { _________ while( msg.message != WM_QUIT ) SGame.Update( seconds ); SGame.Render(); } SGame.Destroy();

12 Objetos y Sistema de Referencia

13 Objetos y Sistema de Referencia

14 Mates I: Vectores y Puntos
XYZ D3DXVECTOR3 (X, Y, Z) (X, Y, Z)

15 Objetos y Comportamientos

16 Objetos y Comportamientos

17 Objetos y Comportamientos

18 Objetos y Comportamientos

19 Patrón Estrategia STRATEGY OBJECT STRATEGY 1 STRATEGY 2 STRATEGY 3
Strategy * strg; algorithm() STRATEGY 1 STRATEGY 2 STRATEGY 3 algorithm() algorithm() algorithm()

20 ¡A Practicar!

21 ¿Por qué necesitamos más?
Tenemos un comportamiento simple Queremos: Secuencias Comportamientos más complejos Recordar pasos anteriores

22 Ejemplo: Enemigo Secuencial
ESPERAR LANZAR BARRIL

23 Ejemplo: Más moderno

24 FSM – Máquinas de Estados
Comportamiento Complejo Enemigo Usa Ascensor

25 FSM – Máquinas de Estados
Comportamiento se descompone Enemigo Usa Ascensor Pulsar Botón Entrar Pulsar Botón Salir

26 FSM – Máquinas de Estados
Transiciones Enemigo Usa Ascensor Pulsar Botón Entrar Pulsar Botón Salir

27 FSM – Máquinas de Estados
Reglas de Transición Enemigo Usa Ascensor Pulsar Botón Entrar Pulsar Botón Salir Estar Dentro Esperar Esperar

28 FSM – Implementación Se debe guardar el estado actual
Secuencia de IF´s if ( state == “AAA” ) else if ( state == “BBB” ) else if ( state == “CCC” )

29 FSM – Implementación Mejor con números (eficiencia) Secuencia de IF´s
if ( state == 0 ) else if ( state == 1 ) else if ( state == 2 )

30 FSM – Implementación Mejor usar un switch: switch( state ) { …
{ … case 0: … break; case 1: … break; case 2: … break; }

31 FSM – Implementación Un enum es más claro: switch( state ) { …
{ … case AAA: … break; case BBB: … break; case CCC: … break; }

32 FSM – Implementación Válido para casos sencillos
Problema del switch de las 5000 líneas switch( state ) { … case AAA: … break; case BBB: … break; case CCC: … break; }

33 FSM – Implementación Crear una función para cada estado
switch( state ) { … case AAA: AAA(); break; case BBB: BBB(); break; case CCC: CCC(); break; }

34 FSM – Implementación Válido para máquinas medianas
No tiene código en las transiciones switch( state ) { … case AAA: AAA(); break; case BBB: BBB(); break; case CCC: CCC(); break; }

35 FSM – Implementación STATE OnEnter() OnUpdate() OnExit()
Los estados son clases: STATE OnEnter() OnUpdate() OnExit()

36 FSM – Implementación STATE 1 STATE 2 FSM STATE 3 State * actual;
La FSM es otra clase: STATE 1 STATE 2 FSM STATE 3 State * actual; STATE 4 STATE … STATE N

37 FSM – Implementación Miles de implementaciones Miles de artículos
Miles de extensiones Máquinas de Máquinas de estados Basadas en Eventos Máquinas de pila Máquinas multi-estados (No deterministas) Máquinas inerciales Máquinas Fuzzy (FuSM) ….

38 No Matar Moscas a Cañonazos
Usa lo que te haga falta No hay soluciones generales

39 ¡A Practicar!

40 Mates II: Entre 2 Puntos VDistancia = PtoDestino – PtoOrigen
Distancia = Length(VDistancia) Dirección = Normalize(VDistancia)

41 Mates III: Ángulos Z X VDistancia = PtoDestino – PtoOrigen
Ángulo = atan2( X, Z ); Z X

42 Día 2: Buscando el camino

43 Día 2: Buscando el camino
Decisiones y Capas Caso de Estudio: Pathfinding Técnica de alto nivel: Nav Maps Técnica de bajo nivel: Perseguidor

44 Decisiones en el Juego Curarse Pulsar Botón Volver a la Base
Múltiples decisiones que tomar Curarse Pulsar Botón Volver a la Base Perseguir J1 Esperar Usar Ascensor Cambiar Animación Subir Escaleras Pedir Refuerzos Disparar

45 Decisiones en el Juego Curarse Pulsar Botón Volver a la Base
No es bueno que todo se resuelva a la vez Curarse Pulsar Botón Volver a la Base Perseguir J1 Esperar Usar Ascensor Cambiar Animación Subir Escaleras Pedir Refuerzos Disparar

46 Decisiones y Capas Diferentes niveles / Capas de decisión:
Decisiones a largo plazo Decisiones a medio plazo Decisiones a corto plazo Decisiones a inmediatas

47 Decisiones Ejemplos de Decisiones: Atacar Base Enemiga
Decisiones a largo plazo Atacar Base Enemiga Decisiones a medio plazo Buscar Ruta Segura Decisiones a corto plazo Disparar a vigilante Decisiones a inmediatas Ejecutar Animación

48 Decisiones Diferentes estrategias / técnicas: Decisiones a largo plazo
Decisiones a medio plazo T3 Decisiones a corto plazo T4 Decisiones a inmediatas T5 T6

49 Decisiones y Capas 120 segs 10 segs 0.5 segs 0.0016 segs
Distinta frecuencia de actualización: Decisiones a largo plazo 120 segs Decisiones a medio plazo 10 segs Decisiones a corto plazo 0.5 segs Decisiones a inmediatas segs

50 Decisiones y Capas Perseguir J1 Volver a la Base Subir Escaleras
Distintos subsistemas: Perseguir J1 Volver a la Base Subir Escaleras Pedir Refuerzos Usar Ascensor Curarse Disparar Pulsar Botón Cambiar Animación

51 Caso de estudio Movimiento y Pathfinding
Necesidad de Desplazarse por el Mundo Distintos niveles de decisión: Una capa superior: Ir al bosque de los elfos Pathfinding: Usar el camino del oeste Movimiento: Esquivar una roca

52 Representación del mundo
Mundo continuo Difícil de trabajar con él Se necesita una representación

53 Representación del mundo
Usar geometría para simplificar

54 Representación del mundo
Usar geometría para simplificar Es un primer paso En general no es suficiente

55 Representación del mundo
Rejilla Cuadrada

56 Representación del mundo
Rejilla hexagonal

57 Representación del mundo
Rejillas Buenas representaciones en 2D Espacios de búsqueda muy grandes

58 Representación del mundo
Quad Trees y Octrees

59 Representación del mundo
Grafos y Waypoints

60 Representación del mundo
Grafos y Waypoints

61 Representación del mundo
Grafos y Waypoints Muchos nodos por procesar Raíles y mucho zigzag

62 Representación del mundo
Grafos y Waypoints Muchos nodos por procesar Raíles y mucho zigzag

63 Representación del mundo
Grafos y Waypoints Muchos nodos por procesar Raíles y mucho zigzag

64 Representación del mundo
Mapas de navegación: NavMaps

65 Representación del mundo
NavMaps Grafo de areas caminables Menos nodos y más libertad de movimiento

66 Representación del mundo
NavMaps Grafo de áreas caminables Menos nodos y más libertad de movimiento

67 Representación del mundo
Muchas otras representaciones

68 Algoritmos de Búsquedas
Algoritmos tradicionales: Anchura y profundidad A* y variantes Dijkstra Floyd-Warshall

69 Caso práctico de NavMesh
1- Crear el Mapa de Navegación:

70 Caso práctico de NavMesh
1- Crear el Mapa de Navegación:

71 Caso práctico de NavMesh
2- Aplicamos Floyd-Warshall: 946 Nodos Maxscript Matriz Grafo

72 Caso práctico de NavMesh
3- Obtener el camino usando la matriz (0.0, 0, 28) (0.1, 0, 12) (3, 0, -5) (-1, 0, 28) (8, 0, 28.8) (8.2, 0, 21.8) (8.1, 0, 22.8) Matriz

73 Caso práctico de NavMesh
4- Pasar los Waypoints a la capa inferior Pathfinding (Alto nivel) (0.1, 0, 12) (3, 0, -5) (-1, 0, 28) (8, 0, 28.8) (8.2, 0, 21.8) (8.1, 0, 22.8) Movimiento (Bajo Nivel)

74 Vamos a verlo en ejecución:

75 Caso práctico de NavMesh
Se mueve al medio de las aristas Lejos de estar acabado

76 Caso práctico de NavMesh
5- Heurística de refinamiento: String-Pulling

77 Caso práctico de NavMesh
5- Heurística de refinamiento: String-Pulling

78 Caso práctico de NavMesh
5- Heurística de refinamiento: String-Pulling

79 Caso práctico de NavMesh
5- Heurística de refinamiento: String-Pulling

80 Caso práctico de NavMesh
5- Heurística de refinamiento: String-Pulling

81 Caso práctico de NavMesh
5- Heurística de refinamiento: String-Pulling

82 Caso práctico de NavMesh
5- Heurística de refinamiento: String-Pulling

83 Caso práctico de NavMesh
5- Heurística de refinamiento: String-Pulling

84 Caso práctico de NavMesh
5- Heurística de refinamiento: String-Pulling

85 Vamos a verlo en ejecución:

86 ¡Todavía no funciona bien!
Continuar refinando la solución Probar otras heurísticas Mejorar el Grafo inicial ¡TIEMPO, TIEMPO, TIEMPO!

87 Estrategia Bajo Nivel: Perseguidor
Velocidad Lineal Limitada Velocidad Angular Limitada Efecto del Cocodrilo

88 Mates IV: Ángulo entre vectores
Producto escalar = Dot Product Dot(V, W) = Vx*Wx + Vy*Wy +Vz*Wz Dot(V, W) = |V| * |W| * cos(ang) Si |V| = |W| = 1 Dot(V, W) = cos(ang) V W

89 Mates V: Plano N P Plano = A * X + B * Y+ C * Z + D
Plano = Nx * X + Ny * Y + Nz * Z + D D = – Nx * Px – Ny * Py – Nz * Pz N P

90 Mates VI: Test de Plano-Punto
Plano = A * X + B * Y+ C * Z + D Punto P V = A * Px + B * Py + C * Pz + D V=0  En el plano V>0  Encima del plano(Donde Apunta N) V<0  Debajo del plano P

91 Algoritmo Perseguidor:
vDist = TargetPos – CurrentPos

92 Algoritmo Perseguidor:
vDist = TargetPos – CurrentPos angle = acos( Dot( vDist, CurrentFront ) )

93 Algoritmo Perseguidor:
vDist = TargetPos – CurrentPos angle = acos( Dot( vDist, CurrentFront ) ) if ( angle > velAng * timestep ) angle = velAng * timestep

94 Algoritmo Perseguidor:
vDist = TargetPos – CurrentPos angle = acos( Dot( vDist, CurrentFront ) ) if ( angle > velAng * timestep ) angle = velAng * timestep p = Plane( CurrentLeft, 0 ) if ( PlaneTest( vDist, p ) < 0) angle = -angle

95 Algoritmo Perseguidor:
vDist = TargetPos – CurrentPos angle = acos( Dot( vDist, CurrentFront ) ) if ( angle > velAng * timestep ) angle = velAng * timestep p = Plane( CurrentLeft, 0 ) if ( PlaneTest( vDist, p ) < 0) angle = -angle Yaw += angle CurrentPos += |vDist | * NewCurrentFront

96 Vamos a verlo en ejecución:

97 Día 3: Nuestro cajón de arena

98 Día 3: Nuestro cajón de arena

99 Día 3: Nuestro cajón de arena
Comunicación entre elementos Pizarra, Mensajes y Eventos Lenguajes de Scripting Introducción a Lua


Descargar ppt "Taller Práctico de IA y Lógica en Videojuegos"

Presentaciones similares


Anuncios Google