Jogos em Inteligência Artificial Inteligência Artificial I Ricardo Borges Cícero Augusto Mauricio Volkweis Professora Andrea Konzen Torres - RS, Junho de 2003 Sumário Introdução 1 Objetivos 2 Histórico 3 Técnicas Atualmente Utilizadas Conclusão 2 Introdução 3 1 Objetivos Embutir uma inteligência simulada nos jogos através de técnicas de Inteligência Artificial (IA) Tornar o jogo mais real Por conseqüência, mais envolvente e desafiador para o jogador 4 2 Histórico Década de 60 Surgimento dos jogos de computador Versões para mainframes Principal preocupação era o visual Sem técnicas de IA Em Space War (1961), os jogadores se confrontavam em naves espaciais com interface em caracteres ASCII 5 2 Histórico Década de 70 Bom número de jogos em modo texto Também conhecidos como Multi User Dungeons (MDU’s) Primeiro sucesso comercial foi Pong (1972) Pong foi criado por Nolan Bushnell, fundador da Atari 6 2 Histórico Jogos que marcaram a década de 70: Breakout Space Invaders Asteroids Pac Man 7 2 Histórico Década de 80 Grande diversidade de jogos Destaque foi Donkey Kong, que deu origem ao personagem Mário de Shigeru Miyamato O sucesso de Mário Brothers (1984) fez de Mário o principal mascote da Nintendo 8 2 Histórico Década de 90 Melhoria na interface e interação depois do lançamento dos computadores de 16 bits Surgimento de alguns jogos de simulação 3D: Flight Simulator Wing Commander 9 2 Histórico Década de 90 Revolução na plataforma IBM PC com o lançamento de Doom pela ID Software (1993) Inovação tecnológica Perspectiva em primeira pessoa Evolução tanto na área gráfica como de IA 10 2 Histórico Década de 90 Duke Nuke em 3D é lançado com ferramenta de IA Extensível A ID Software lança Quake (1996) primeiro jogo em 3D real Desaceleração na aplicação de IA em relação a parte gráfica 11 2 Histórico Década de 90 Reaperbot, um oponente criado para ser usado em Quake dá novo impulso ao uso de IA em jogos O jogo Unreal (1998) lançado pela Epic Megagames mostrou avanço no uso de IA em jogos usando técnicas como: Finite State Machines Fuzzy State Machines IA Extensível 12 2 Histórico Atualidade Jogos com gráficos 3D avançados com nível razoável de aplicação de IA A IA do jogo passa a ter tanta importância quanto a parte gráfica Exemplos de jogos atuais: Diablo 2 Quake III: Arena Unreal Tournament 13 2 Histórico Atualidade Grandes orçamentos para produção de jogos Equipes normalmente compostas de: Projetistas de Jogo Projetistas de Fases Planejador de Software Arquiteto Chefe Gerente de Projeto Programadores Artistas Gráficos Músicos e Sonoplastas 14 3 Técnicas Atualmente Utilizadas Máquinas de Estados Finitos IA Extensível Técnicas de Busca Máquinas de Aprendizado Vida Artificial Kits de Desenvolvimento 15 3.1 Máquinas de Estados Finitos Baseadas em regras Implementação relativamente simples Técnica já consolidada no mercado Permite criar elementos com comportamentos relativamente complexos Foi utilizada no jogo Unreal Podem ser: Finite State Machines (FSM) Hierarchical Finite State Machines (HFSM) Fuzzy State Machines (FuSM) 16 3.1 Máquinas de Estados Finitos Normalmente representadas por um Diagrama de Transição de Estados Uma FSM possui Conjunto de estados Estado inicial Conjunto de entradas Conjunto de saídas Função de transição de estado 17 3.1 Máquinas de Estados Finitos A função de transição de estados recebe as entradas e o estado atual Retorna o conjunto de saídas e um novo estado que passa a ser o estado atual Entradas Estado Atual Saídas Estado Futuro 18 3.1 Máquinas de Estados Finitos Uma HFSM são FSM hierarquizadas Usadas para modelagem de comportamentos mais complexos 19 3.1 Máquinas de Estados Finitos As FuSM’s são baseadas em cadeias de Markov Pesos são associados aos estados e transições Regras são usadas para calcular pesos de estados futuros 3 % 8 20 3.2 IA Extensível Iniciada com Duke Nuke em 3D e Quake O jogador pode criar seus próprios personagens ou alterar o nível e IA dos existentes É feita através de uma linguagem de script A forma do script pode ser semelhante a linguagens como C e C++ ou até conjuntos de ordens passadas diretamente ao elemento do jogo __________ ________ __________ ____ ________ 21 3.2 IA Extensível Exemplo de script: IF !Range(NearestEnemyOf(Myself),3) and Range(NearestEnemyOf(Myself),8) THEN EquipMostDamagingMelee() AttackReevalutate(NearestEnemyOf (Myself),60) 22 3.3 Técnicas de Busca Entre os algoritmos existentes, o A-star (A*) é o mais utilizado Utilizado para encontrar um melhor caminho a partir da posição atual Foi aplicado em Age of Empires II: The Age of Kings para análise de terrenos Utiliza uma função heurística para calcular a estimativa de custo de cada rota 23 3.4 Máquinas de Aprendizado Estão começando a ter mais espaço em jogos No jogo Magic & Mayhem, são gravados dados das jogadas para que o sistema evite usar técnicas com baixo grau de efetividade Entre os enfoques com maior embasamento científico estão: Redes Neurais Algoritmos Genéticos 24 3.4 Máquinas de Aprendizado Battle Cruiser: 3000 AD foi um dos primeiros jogos a usar redes neurais Foi desenvolvida uma linguagem especialmente para implementar a IA do jogo Denominada Artificial Intelligence and Logistics (AILOG), usava uma rede neural para efetuar tomadas de decisão e busca das melhores rotas AILOG também implementa alguns conceitos de lógica difusa (fuzzy logic) 25 3.4 Máquinas de Aprendizado Cloak Dagger and DNA (1995) foi um dos primeiros jogos comerciais a utilizar algoritmos genéticos O jogo vêm com quatro “seqüências de DNA” Estas seqüências são conjuntos de características comportamentais dos inimigos A medida que cada um desses conjuntos participa de batalhas recebe pontos pelo desempenho Os melhores conjuntos são combinados gerando novos e melhores comportamentos 26 3.5 Vida Artificial Também conhecida como A-Life (do inglês Artificial Life) Tem sua origem no estudo de seres vivos do mundo real Tenta simular este comportamento usando uma variedade de técnicas de IA combinadas 27 3.5 Vida Artificial Estas técnicas são interligadas em uma hierarquia de tomada de decisão Foi utilizada nos jogos The Sims e Creatures 28 3.6 Kits de Desenvolvimento Software Development Kits (SDK’s) ou simplesmente toolkits Bibliotecas que implementam uma ou mais técnicas de IA Podem ser específicos para jogos ou mais genéricos Agilizam o desenvolvimento da aplicação Exemplos: Motivate Spark! DirectIA 29 Conclusão 30