Download
autor jes s flores garc a tenerife lanparty 2k9 n.
Skip this Video
Loading SlideShow in 5 Seconds..
Taller Práctico de IA y Lógica en Videojuegos PowerPoint Presentation
Download Presentation
Taller Práctico de IA y Lógica en Videojuegos

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

136 Vues Download Presentation
Télécharger la présentation

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. 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: NavMaps • 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 Comportamiento

  19. Patrón Estrategia OBJECT STRATEGY 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” ) … elseif ( state == “BBB” ) … elseif ( state == “CCC” ) …

  29. FSM – Implementación • Mejor con números (eficiencia) • Secuencia de IF´s if ( state == 0 ) … elseif ( state == 1 ) … elseif ( 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 • Los estados son clases: STATE OnEnter() OnUpdate() OnExit()

  36. FSM – Implementación • 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 • 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: NavMaps • Técnica de bajo nivel: Perseguidor

  44. Decisiones en el Juego • 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 • 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: 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 T1 T2 Decisiones a medio plazo T3 Decisiones a corto plazo T4 Decisiones a inmediatas T5 T6

  49. Decisiones y Capas • 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 0.0016 segs

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