Videojuego de combate y estrategia en xempo real mediante

Universidad Politécnica de Madrid Escuela Universitaria de Informá?ca Ingeniero Técnico en Informá?ca de Ges?ón – 2011/2012 PROYECTO FIN DE CARRERA Videojuego de combate y estrategia en ?empo real mediante agentes inteligentes David Chiloeches Suárez INTRODUCCIÓN • 
• 
• 
• 
Desarrollar un videojuego Simular combate de tanques en ?empo real Estrategia sobre un escenario tridimensional U?lización de agentes inteligentes 2 ESTADO DEL ARTE 1 • 
• 
• 
• 
• 
• 
• 
• 
• 
BATTLE CITY (1980) BATTLEZONE (1983) TANK WARS 3.D (1990) ESCORCHED EARTH (1991) WORMS (1994) TANK COMMANDER (1995) THINK TANKS (2006) ESCORCHED 3D (2011) WORLD OF TANKS (2012) 3 ESTADO DEL ARTE 2 Bablefield 3 Call of Duty World at War 4 OBJETIVOS •  Escenarios 3D generados aleatoriamente con dis?ntas alturas y texturas. •  Interac?vidad total con el escenario. Destrucción del terreno y del resto de elementos del escenario como árboles, muros, edificios, etc. •  Cambios en la climatología del escenario. •  Dis?ntos ?pos de misiones. •  Control del tanque en ?empo real. •  Varios modelos de tanque. •  Dis?ntas armas y habilidades para equipar cada tanque. •  Agentes inteligentes de dis?ntos niveles. •  Cooperación entre los agentes inteligentes para conseguir los obje?vos. •  Posibilidad de jugar en red con otros jugadores. 5 UNITY •  Entorno Integrado de Desarrollo (IDE) orientado al desarrollo de videojuegos •  Motor 3D + Motor Física •  Editor integrado con constructor de escenarios •  Varios lenguajes de programación (JavaScript, C# y Boo) •  Librería .NET a través de MONO •  Múl?ples formatos (.jpg, .png, .lx, .3ds, .mp3, etc) •  Múl?ples plataformas (PC, MAC, Android, IOs, PS3, etc) 6 DISEÑO 1 •  Definir y diseñar los elementos que formarán parte del videojuego 7 DISEÑO 2: Escenas INICIO Configurar Par?da Instrucciones Creditos Campo de Batalla 8 DISEÑO 3: Objetos y Prefabs •  OBJETOS: Instancias de la clase GameObject en una escena. •  PREFABS: Instancias de la clase GameObject guardados en el proyecto para clonarlos posteriormente en cualquier escena del proyecto. •  COMPONENTES: Clases compiladas que se incorporan a los objetos o prefabs para darles algún ?po de funcionalidad o comportamiento. Algunos componentes vienen predefinidos en Unity y otros se compilan mediante scripts desarrollados por el programador. 9 DISEÑO 4: Campo de Batalla •  Generación aleatoria •  Destrucción dinámica provocada por las explosiones •  Texturización dinámica •  Vegetación destruc?ble 10 DISEÑO 5: Tanque •  Compuesto por varios subobjetos –  Cuerpo del Tanque •  Cabina o torreta –  Cañón (Cannon) –  Ametralladora (Gun) –  Lanzadera de Misiles (Launcher) LAUNCHER TANQUE CABINA CANNON GUN 11 DISEÑO 6: Mul?media •  Modelos 3D •  Texturas •  Sonido 12 AGENTES INTELIGENTES •  SCRIPTS que definen un comportamiento concreto sobre un objeto en función de su estado y el entorno que le rodea 13 LAUNCHER CONTROLLER •  Controla el ángulo de inclinación de la lanzadera de misiles del tanque del jugador en función del lugar donde está apuntando el cursor del ratón, su distancia y los posibles obstáculos que hayan entre el tanque y el cursor. CURSOR
CURSOR
CURSOR
14 CANNON CONTROLLER AI •  Controla la inclinación del cañón del tanque controlado por el ordenador en la ver?cal y determina si el obje?vo está a ?ro o no Movimiento del obje?vo en la ver?cal (Subir o bajar cuestas) Impacto traza POSICION DEL OBJETIVO DISTANCIA OK Impacto traza
POSICION DEL OBJETIVO
MUCHA DISTANCIA
15 LAUNCHER CONTROLLER IA •  Controla la inclinación de la lanzadera del tanque controlado por el ordenador al ?empo que determina si el obje?vo está a ?ro OBJETIVO
DISTANCIA OK
OBJETIVO
MUCHA DISTANCIA
16 CABIN CONTROLLER IA •  Controla el ángulo de rotación de la torreta del tanque controlado por el ordenador OBJETIVO
17 TANK CONTROLLER IA 1 •  Controla los obje?vos y el movimiento del tanque controlado por el ordenador NONE
EXPLORE
ATTACK
Grafo de objeEvos del tanque TankIATarget 18 TANK CONTROLLER IA 2 •  Para moverse por el escenario el tanque ?ene varios estados de movimiento IDLE
Grafo estados STATE TROTTING
JUMPING
RUNNING
SLOWMOTION
19 TANK CONTROLLER IA 3 •  Cada tanque ?ene unos atributos básicos generados aleatoriamente en función del nivel de Inteligencia Ar?ficial elegido. ATRIBUTO ataqueGun ataqueCannon ataqueMissile defensa esquiva huida correr salto cambio closestDist aOackDist minVida IATime IAFastTime lastIATime lastIAFastTime DESCRIPCION Probabilidad de ataque cuando obje?vo a ?ro Probabilidad de ataque con el cañón Probabilidad de ataque con la lanzadera de misiles Probabilidad de uso de escudo Probabilidad de efectuar maniobras esquivas Probabilidad de efectuar huidas Probabilidad de moverse rápidamente Probabilidad de efectuar saltos Probabilidad de cambiar de obje?vo Distancia mínima de acercamiento al obje?vo Distancia mínima para atacar al obje?vo Porcentaje de vida considerada como crí?ca Tiempo entre cada proceso para tomar decisiones Tiempo entre cada proceso de acción rápida Momento de la úl?ma decisión tomada Momento de la úl?ma acción rápida 20 TANK CONTROLLER IA 4 •  El tanque realiza acciones en 2 fases de ?empo independientes Decidir Obje?vo Esperar Esperar IATime IAFastTime segundos segundos Acción Rápida 21 TANK CONTROLLER IA 5 •  Secuencia de acciones TankIATarget 1 Seleccionar obje?vo Enemigo a la vista ESTADO = ATTACK NONE Elegir una posisción aleatoria del escenario No hay enemigos ESTADO = EXPLORE 22 TANK CONTROLLER IA 6 •  Secuencia de acciones TankIATarget 2 Seleccionar obje?vo Enemigo a la vista ESTADO = ATTACK EXPLORE Posición Des?no Alcanzada Elegir una posisción aleatoria del escenario Caja de Munición cercana Recoger caja Caja de Salud cercana Recoger caja 23 TANK CONTROLLER IA 7 •  Secuencia de acciones TankIATarget 3 ATTACK EXITO Probabi
lidad de Cambio Seleccio
nar obje?vo Obje?vo muerto o fuera de rango Enemigo a la vista No hay enemigos Elegir una posisció
Seleccio ESTADO n nar = aleatori
obje?vo ATTACK a del escenar
io ESTADO = EXPLOR
E Integrid
ad del tanque en peligro Caja de Munició
n cercana Caja de Salud cercana Posició
EXITO n Sin Probabi
obje?vo munició
lidad de n alcanza
Esquiva da EXITO Probabi
lidad Huida Recoger caja Recoger caja Buscar caja de munició
n Alejarse hacia caja de vida Hay obje?vo y no estoy huyendo Enemig
o se acerca demasi
ado Enemig
o Enemig
cercano o no pero sin está a estar a ?ro ?ro Cambia
r de posició
n Cambia
r de posició
n Acercar Acercar Maniob
se al se al ra obje?vo obje?vo evasiva 24 TANK CONTROLLER IA 8 POSICIÓN OBJETIVO
Línea de visión es?mada
POSICIÓN POSIBLE CAMINO
2
1
1
DETECTAMOS OBSTÁCULO
2
0
Intento 2 Izquierda
Intento 2 Derecha
Intento 1 Derecha
Intento 1 Izquierda Recalcular trayectoria FINALMENTE SE DECIDE GIRAR A LA IZQUIERDA
25 TANK CONTROLLER IA 9 Realizar ataques Existe Obje?vo y está en el rango de ataque Distancia Seguridad Cañón OK Cañón con obje?vo a ?ro Munición Cañón OK EXITO Probabilidad ataque Cañón Cañón con obje?vo a ?ro Munición Ametralladora OK EXITO Probabilidad ataque Ametralladora Disparar Ametralladora Distancia Seguridad Lanzadera OK Lanzadera con obje?vo a ?ro Munición Lanzadera OK EXITO Probabilidad ataque Lanzadera Disparar Cañón Disparar Lanzadera de Misies 26 TANK CONTROLLER IA 10 Usar Habilidades Habilidad Salto Tanque en movimiento Habilidad Escudo Habilidad Teletranspor
te Saltando Escudo desac?vado Escudo ac?vado Integridad Tanque en peligro Habilidad Correr Tanque en movimiento Corriendo y NO huyendo EXITO Probabilidad Salto Distancia obje?vo muy alta EXITO Probabilidad Salto/2 EXITO Probabilidad Defensa EXITO Probabilidad Defensa/4 EXITO Probabilidad Huida EXITO Probabilidad Correr Distancia obje?vo muy alta EXITO Probabilidad Correr/4 Energía > 0 SALTAR Parar Salto Energía > 100 Desac?var Escudo Energía > 500 Energía > 0 CORRER Parar de correr TELETRANSPO
RTAR CORRER SALTAR ACTIVAR ESCUDO 27 TANK STATUS •  Controla el estado, la puntuación, el equipo, la munición y otros aspectos de todos los tanques en juego TANQUE INTEGRIDAD • Nombre • Equipo • ESTADO • Vivo • Muerto • Aplicar Daño • Añadir Salud • Provocar Muerte • Renacer ARMAMENTO • Recargar Armas • Controlar Armas Ac?vas • Añadir Munición • Actualizar Munición PUNTUACIÓN • Reclamar Muerte • Puntuar Muerte • Reclamar Puntos • Recibir Puntos 28 CONCLUSIONES •  Unity es un entorno de desarrollo muy potente y que facilita mucho la tarea de desarrollar un videojuego •  Para conseguir que el tanque se moviera de forma realista por el escenario fue necesaria una gran can?dad de modelos dis?ntos •  La destrucción dinámica del escenario provocó grandes problemas de rendimiento con escenarios excesivamente grandes •  Desarrollar la Inteligencia Ar?ficial de los tanques fue uno de los retos más complicados, sobre todo hacer que los tanques esquivaran obstáculos por si mismos 29 FUTUROS PROYECTOS Habilitar par?das en red con torneos Aumentar el tamaño de los escenarios Mejorar el algoritmo de destrucción del escenario Ampliar el número de misiones dis?ntas Hacer un modo historia Añadir más modelos de tanques, armas y municiones dis?ntas Crear más habilidades dis?ntas para los tanques Crear otros edificios y que se destruyan sólo por la zona impactada Mejorar el algoritmo de colocación de edificios para integrarlos como ciudades •  Incorporar caminos, carreteras y ríos al escenario •  Añadir al escenario más detalle de vegetación, rocas y otros elementos. •  Implementar el juego para otras plataformas como Nintendo Wii, PlaySta?on 3, Xbox 360, iOS o Android • 
• 
• 
• 
• 
• 
• 
• 
• 
30 Gracias ;-­‐) 31