Vous êtes sur la page 1sur 60

Game AI

Inteligência Artificial para Jogos


Eletrônicos
J. Gabriel Lima
gabriel@ecomp.eng.br
http://jgabriellima.wordpress.com
Laboratório de Planejamento de Redes de Alto Desempenho - LPRAD
Empresa Júnior de Engenharia de Computação /UFPa
Agenda

 Histórico
 Técnicas de Inteligência Artificial para Jogos
 Motores de IA e plataformas de Desenvolvimento
 Por onde começar?
Um Breve Histórico
“O Turco” (1770)
• Máquina de jogar xadrez supostamente
provida de inteligência artificial

• Construída por Wolfgang para


impressionar a imperatriz Maria Tereza
da Áustria

• A “máquina” venceu a maioria dos jogos


e fez demonstrações pela Europa e
América durante mais de 84 anos

• Ganhou disputas contra os famosos:


Napoleão Bonaparte e Benjamin
Franklin

• Era na verdade uma ilusão mecânica que


permitia que um jogador de xadrez
escondido, controlasse a máquina.

• Algumas imitações foram propostas ao


longo dos anos:
• O Egípcio (Ajeeb) – 1868 – Charles Hooper
• Mephisto – 1878 – Charles Gumpel
• El Ajedrecista - 1912
• A indústria percebeu que a inclusão
de um modo para um jogador
poderia atrair um público maior,
desta forma, aumentando os lucros

• Técnicas já conhecidas no meio


acadêmico passaram a ser utilizadas
para simular o comportamento
humano
Space Invaders
• Lançado em 1978

• Construído pela Taito Corporation

• foi um dos primeiros jogos de tiro


com gráfico bidimensional

• Implantou as primeiras entidades


inteligentes em jogos

• foi um sucesso e gerou centenas


de milhões de dólares, não só
para os desenvolvedores mas
também para outras empresas
que imitaram a fórmula de
sucesso do jogo.
Pac-Man
• Criado em 1980 pora a empresa Namco

• Tornou-se um dos jogos mais


populares no momento

• O jogador era uma cabeça redonda


com uma boca que se abre e fecha,
posicionado em um labirinto simples
repleto de pastilhas e 4 fantasmas
que o perseguiam. O objetivo era
comer todas as pastilhas sem ser
alcançado pelos fantasmas, em ritmo
progressivo de dificuldade.

• Pac-man conta com movimentos


padronizados dos inimigos

• Porém cada fantasma tem um modo


diferente de caçar o jogador
Herzog ZWei
• Desenvolvido em 1990

• O primeiro jogo de estratégia em


tempo real, Herzog ZWei, é lançado.

• A busca de caminho apresentada


nesse jogo era de baixa qualidade

• Enquanto o jogador controlava um


veículo que podia se transformar em
avião de transporte ou robô de guerra,
ele precisava controlar o maior
número de zonas estratégicas, que por
sua vez aumentavam o fluxo de
recursos para seu caixa.

• O game oferece nativamente suporte


para dois jogadores.

• Faltava muita refinação, mas a


presença desses mesmos elementos
continua intacta em dezenas de jogos
do gênero até hoje.
BattleCruiser: 3000AD
• Foi desenvolvido utilizando-se redes
neurais.
O estilo do jogo é "você e sua nave contra o
universo".
• Cada personagem do jogo, exeto o
controlado pelo jogador, é dirigido por
uma rede neural,

• Os oponentes também usam redes


neurais para combater, negociar, etc.

• Este jogo causou muita controvérsia pois


seus desenvolvedores afirmam ter
utilizado técnicas de IA, como redes
neurais, no seu desenvolvimento mas
muitos discordam desse fato.

• O jogo usa uma rede neural para todas


as decisões orientadas ao seu objetivo,
e em alguns casos usa também lógica
fuzzy.
Half-Life
• Desenvolvido em 1998 pela Valve
Software

• Foi um dos jogos mais revolucionários


da história do estilo em primeira
pessoa

• Comparado com o clássico e pioneiro


DOOM

• É lançado como a melhor Game IA


até então.
Resumo Histórico
IA e Game IA
 Para as empresas desenvolvedoras de jogos eletrônicos, as
aplicações computacionais de IA e o significado do termo IA são
diferente dos encontrados no meio acadêmico.

 Para distinguir a inteligência artificial utilizada em jogos e no


meio acadêmico, os desenvolvedores adotaram o termo Game AI

 A principal diferença entre a IA acadêmica e a IA para jogos é o


objetivo que cada uma busca.
IA Acadêmica
 Dentre outras coisas, um dos objetivos, é buscar a solução para problemas
complexos, como imitar o reconhecimento que os humanos são capazes de
realizar (reconhecimento facial e de imagens e objetos, por exemplo),
entender e construir agentes inteligentes, por exemplo.

Game IA
 O objetivo de usar inteligência artificial é a diversão. Sua importância é quanto
aos resultados que o sistema irá gerar, e não como o sistema chega até os
resultados.

 Isso se deve pelo fato que jogos eletrônicos são negócios.

 Os consumidores desses produtos os compram em busca de diversão, e não


lhes interessa como a inteligência de um personagem no jogo foi criada.
 Alguns pesquisadores afirmam que a indústria de jogos está muito anos à
frente do meio acadêmico com relação à construção de soluções práticas
de IA para certos problemas.

 Outros afirmam que estudos formais de IA podem levar anos para


formular teorias de comportamento, examinar possíveis soluções e
desenvolver protótipos para testes.

 Apesar disso, a falta de uma metodologia científica faz com que muitas
das soluções encontradas pelos desenvolvedores de jogos não sejam
aceitas como um apoio aos estudos formais de IA.
IA em Jogos
 Há diversas razões para que os pesquisadores de IA migrem para a área de
desenvolvimento de jogos:

 As empresas desenvolvedoras de jogos já perceberam a necessidade de construir cada vez


mais personagens inteligentes.

 A área de jogos eletrônicos é altamente competitiva e a tecnologia que será o grande


diferencial a partir de agora é o desenvolvimento de IA.

 A cargo de programador de IA, já está comum na área de desenvolvimento de jogos

 O mercado de jogos fatura mais que a do cinema.

 Com a evolução dos hardwares de processamento gráfico e a sua otimização sobra mais
processamento para os algoritmos de IA.
 Alguns dos tipos de Inteligência Artificial voltada para área dos
jogos, em ordem crescente de complexidade, são:

 Algoritmos determinísticos e Padrões de Movimento


 Máquina de Estado Finita
 Sistemas Baseados em Regras
 Algoritmos de Busca
 Redes Neurais
 Algoritmos Genéticos
Padrões de Movimento

 Utilizados nos primeiros jogos eletrônicos da historia


 Compostos por:
 Movimentos aleatórios
 Algoritmos de perseguição
 Algoritmo de Evasão

 O algoritmo de perseguição verifica a posição de um personagem 1 em


relação a posição de um personagem 2, e avança em direção a ele.

 O algoritmo de evasão faz o personagem 1 se distancie do personagem


2.

 Exemplo: Gun Fight (1975)


Máquina de Estado Finito

 Define os estados em que um personagem pode se encontrar e quando o


mesmo muda de estado.

 Recurso de fácil entendimento, implementação e depuração

 Exemplo: no pac-man, uma máquina de estados é utilizada para cada


fantasma, sendo os estados possíveis:

 Procurando o jogador

 Perseguindo o jogador

 Fugindo do jogador
Máquina de Estado Finito

 Quando o fantasma procura o jogador, ele apenas se movimenta pelo


labirinto ate encontrar o jogador

 Quando ele encontra o jogador ele verifica se pode perseguir o jogador ou se


precisa fugir e troca de estado para “perseguindo jogador” e tenta alcançar o
jogador

 Se durante esse tempo o jogador ganha a habilidade de engolir o fantasma, o


fantasma muda seu estado para “fugindo do jogador”
Máquina de Estado Finito

 Maquinas de estado são uteis para situações locais


 Onde dado um estado, apenas algumas condições podem ser
aplicadas como saída.
Máquina de Estado Finito

 Quando o fantasma procura o jogador, ele apenas se movimenta pelo


labirinto ate encontrar o jogador

 Quando ele encontra o jogador ele verifica se pode perseguir o jogador ou se


precisa fugir e troca de estado para “perseguindo jogador” e tenta alcançar o
jogador

 Se durante esse tempo o jogador ganha a habilidade de engolir o fantasma, o


fantasma muda seu estado para “fugindo do jogador”
Sistemas Baseados em
Regras

 Representação de comportamento muito utilizada em jogos

 Mais flexível que a abordagem puramente estimulo-resposta.

 SBRs apresentam algumas vantagens como as pessoas normalmente pensam sobre


conhecimento

 São bastante expressivos e permitem a modelagem de comportamentos complexos

 Modelam o conhecimento de uma maneira modular

 São fáceis de escrever e são mais concisos que maquinas de estados finitos
Sistemas Baseados em
Regras

 Como funciona?
 O conhecimento é definido através de um conjunto de parâmetros (variáveis) e um
conjunto de regras que trabalham sobre esses parâmetros, de modo que durante a
“Tomada de Decisão” essas regras são então processadas

 Exemplo: Supondo que o conjunto de parâmetros seja definido como:


 Distancia do Inimigo

 Energia do Agente

 Energia do Inimigo

 Quantidade de Munição
Sistemas Baseados em
Regras

 E uma vez definidos os parâmetros de entrada, seja também concebido o conjunto de ações
possíveis do agente:

 fugir

 procurar

 Atirar

SE (distancia do inimigo > 100) E (energia do agente > 50) E ( energia do inimigo < 50)

ENTAO procurar.

 E se a seguinte condição fosse assim:

 - Se há um osso por perto e o cachorro esta com fome, ele irá comê-lo;

 - Se o cachorro está com fome, mas não há nenhum osso por perto, ele procura por um;

 - Se o cachorro não está com fome, mas está com sono, ele irá dormir;

 - Se o cachorro não está com fome e não esta com sono, o cachorro irá andar e latir.
Sistemas Baseados em
Regras

 Essas quatro sentenças são difíceis de serem representadas através de uma


maquina de estados
 Cada sentença leva a um estado da maquina e cada estado pode transitar para
qualquer um dos outros estados.

 Nesse exemplo, o cachorro se comporta de acordo com um conjunto de


prioridades ou regras. Um sistema baseado em regras tem a forma:
 “Condição _ Ação”
 Fome & osso por perto _ comer;
 Fome & não osso por perto _ procurar;
 Não fome & com sono _ dormir;
 Não fome & sem sono _ andar e latir
Algoritmos de Busca

 A busca é um dos problemas mais básicos de IA para jogos


 Algumas das principais consequências de uma busca “pobre” são:
 Personagens que parecem totalmente artificiais
 Personagens sem inteligência de navegar entre locais e desviar de obstáculos

 Para solucionar o problema de busca (sair de uma ponto e chegar a um destino),


diversos algoritmos podem ser utilizados

 Algoritmo A* (Lê-se A estrela) o mais famoso e implementado em jogos

 Outros:
 Algoritmo de Dijkstra e waypoints também são utilizados
Algoritmos de Busca

 O A* é um algoritmo onde utiliza uma função heurística que determina a


qualidade de cada um dos estados possíveis, por meio de um custo para a
melhor rota até o destino passando pelo nó atual.

 Esse custo determina a qualidade do caminho, quanto menor o custo melhor


é o caminho.

 Essa técnica é amplamente utilizada para jogos de estratégia, onde os


agentes devem procurar a melhor rota para se deslocar no cenário essa busca
é conhecida como pathfinding.
Algoritmos de Busca

 Pode-se utilizar a analise do terreno para aumentar ou diminuir o custo do


caminho, onde pontos do mapa são identificados como pontes, travessias ou
rios.

 A busca A* é a forma de busca pela melhor escolha mais conhecida.

 Ela avalia nós combinando g(n), o custo para alcançar cada nó, e h(n), o custo
para ir do nó até o objetivo:
f(n) = g(n) + h(n)
Algoritmos de Busca

 Desse modo, se tenta encontrar a solução de custo mais baixo, a opção razoável seria
experimentar o menor valor de g(n) + h(n).

 Desde que a função heurística h(n) satisfaça certas condições, a busca A* será ao
mesmo tempo completa e ótima.

 O algoritmo de A* é utilizado em jogos para realmente encontrar o melhor caminho a


ser tomado, sendo mais utilizado em jogos de estratégia como Age of Empires ou
WarCraft, onde deve-se mover unidades de exército ou unidades normais
Algoritmos de Busca

 Exemplo:
Redes Neurais

 Método de solucionar problemas de inteligência artificial, construindo um


sistema que tenha circuitos que simulem o cérebro humano

 Comportamento
 Aprendizagem,
 Erros
 Descobertas

 São técnicas computacionais que apresentam um modelo inspirado na estrutura


neural de organismos inteligentes e que adquirem conhecimento através da
experiência
Redes Neurais

 As principais vantagens das redes neurais são:

 Tolerância a falhas
 Podem ser treinadas para reconhecerem padrões distorcidos e até
mesmo incompletos

 Compatibilidade com a tecnologia


 Funciona em hardware de baixo custo

 Auto-organização
 Capacidade de aprendizagem adaptativa
Redes Neurais

 Redes neurais são formadas por vários neurônios artificiais

 O número de neurônios do qual a rede é formada depende da tarefa que ela


irá desempenhar, podendo variar de poucos neurônios (3 ou 4) a milhares
deles.
Redes Neurais

 Em aplicações da vida real, as RNs são utilizadas no reconhecimento de padrões,


categorização, aprendizado, competição, auto-organização, entre outras áreas

 Toda rede neural recebe como entrada um conjunto de números reais.

 O problema ocorre quando precisamos utilizar outros tipos de valores de entrada,


como enumerações e valores lógicos verdadeiro/falso –o que é comum na
implementação de jogos.
Redes Neurais

 Em jogos é utilizada onde os personagens necessitam de aprendizado


através das escolhas do jogador

 São usadas em conjunto com outras técnicas, executando tarefas que


necessitam um certo grau de aprendizado ou para realizar tarefas em
que as unidades controladas pelo computador sejam menos previsíveis.
 Exemplo:
 Simuladores de vôo
 Onde as decisões do jogador podem ser mapeadas a fim de obter padrão de
comportamento
Algoritmos Genéticos

 Baseada nos estudos sobre a evolução das espécies, de Charles Darwin,


moldando a população de indivíduos através da sobrevivência dos membros
mais aptos a viver naquele ambiente

 Os seres mais “fortes” e capazes de sobreviver passam adiante suas


características para a próxima geração

 A geração resultante é fruto da combinação de dois cromossomos da


geração atual, num processo denominado crossover
Algoritmos Genéticos

 Nessa combinação podem ocorrer mutações aleatórias, e, se estas mutações


contribuírem para a sobrevivência da espécie, elas serão também passadas
para as gerações futuras

 No desenvolvimento de jogos, os algoritmos genéticos visam a busca de uma


solução ótima para um determinado problema

 Geralmente, os algoritmos genéticos são utilizados quando se deseja uma IA


que atue mesmo em situações não previstas pelo desenvolvedor, como em
tomadas de decisão de acordo com o comportamento do jogador
Algoritmos Genéticos

 São ótimos para resolver problemas de otimização combinatória, onde o


espaço de busca é grande e complexo

 Para problemas como o do pathfinding, (nos quais já existem algoritmos


sólidos para sua resolução) não é recomendado o uso dos algoritmos
genéticos, pois estes são mais custosos computacionalmente
Algoritmos Genéticos

 A implementação dos algoritmos genéticos em jogos pode ser dividida em quatro etapas:

 1- Inicialização: primeiramente, é preciso definir um modo de codificar os


cromossomos da população de criaturas de IA que iremos criar.

Exemplo:

 Suponha que a população de criaturas controladas pelo computador tenham que responder de
acordo com a arma em uso pelo jogador(espada, arco, lança e machado), e as respostas
possíveis são: usarEscudo (1), ataqueComEspada (2), fugir (3), esconder (4) e ataqueComArco
(5). Então os cromossomos destas criaturas serão representados por um vetor de quatro
posições, onde a posição 1 contém o identificador da ação a ser executada caso o jogador tenha
uma espada, a posição 2 será executada caso o jogador tenha um arco, e assim por diante. Cada
posição do vetor assume um valor de 1 a 5.
Algoritmos Genéticos

 2- Validação da aptidão

 Nesta etapa do processo evolucionário, deve se avaliar quais indivíduos da


população são os mais aptos a resolver o problema em questão.

 Utilizamos uma função de avaliação de aptidão

 Para o exemplo acima, uma boa função avaliação é contabilizar a diferença entre o
dano que a criatura causou ao jogador e o dano recebido.
Algoritmos Genéticos

 3- Seleção

 Nesta etapa é utilizada a função calculada na etapa anterior para que sejam
escolhidos os indivíduos que participarão do processo evolucionário.

 Na vida real, geralmente dois pais contribuem com seus cromossomos para a
geração seguinte.

 No mundo dos jogos, podemos escolher qualquer número dentre os melhores


indivíduos
Algoritmos Genéticos

 4- Evolução

 Nesta última etapa, serão criados os novos indivíduos que serão


introduzidos no ambiente do jogo.

 São selecionados os melhores indivíduos e combinados seus genes no


processo de crossover.

 São introduzidas mutações aleatórias


 Futuramente, espera-se que a IA aprenda cada vez mais com o jogador,
utilizando redes neurais artificiais e até mesmo os algoritmos genéticos, que
até o momento têm sido pouco utilizados, salvo em implementações
específicas.
Motores de IA
 A evolução dos motores e frameworks para o desenvolvimento de jogos
eletrônicos seguiu a idéia de dividir e conquistar, após a divisão das áreas de
engine o desenvolvedor só precisaria juntar todas as engines para construir o
jogo.

 Essas engines abordam diversas áreas, porém a área de IA ainda não teve um
aprofundamento e consta de forma tímida em grande maioria das engines
para jogos, deixando o trabalho para o desenvolvedor criar a IA

 Alguns motores de jogos se destacam na ênfase que dão para a área da IA,
porém ainda que timidamente:
 Unreal Engine 3

 Framework desenvolvido pela Epic Games


 Especialmente feito para os novos consoles: Playstation 3, Xbox 360 e Nitendo Wii, além dos PC’s.
 O sistema de IA aborda:
 Suporte ao pathfiding
 Comporta objetos complexos como portas e elevadores
 Permite navegação entre cenários
 Personagens interagem com objeto

 Navegação de Alto Nível


 Suporta táticas de combate

 IA baseada em times
 Adequada para jogos de tiro em primeira pessoa e estratégia
 A Unreal Engine é um framework proprietário tendo três tipos de licença:
· Royalty-Bearing;

· Royalty-Free;

· Custom.

 Royalty-Bearing: possui o valor de U$$ 350.000,00 mais U$$ 50.000,00 por plataforma de
desenvolvimento, além de pagar uma taxa de 3% em cima do faturamento do jogo.

 Royalty-Free: possui o valor de US$750.000,00 mais US$100.000,00 por plataforma, não


cobrando nenhuma taxa por jogo vendido.

 Custom: essa última licença a empresa interessada deverá entrar em contato com a Epic Games
para a aquisição do produto. Sendo destinada para projetos não comerciais voltados mais para
aprendizado.
 Source Engine

 Framework, Desenvolvido pela Valve Software para produção de jogos envolvendo animação de
personagens, física, baseada em shaders e uma avançada IA.

 Foi usado para o desenvolvimento de jogos famosos como Half-Life, Counter-Strike e Day of Defeat.

 Os recursos da engine consistem em um sistema de entrada e saída dando o controle da IA para os


desenvolvedores.

 Possui um sistema de navegação onde os personagens podem correr, voar, pular.

 Permite tratar eventos relacionado aos sentidos humanos e ainda adicionar relacionamentos que
definem o status amigo ou inimigo
 Reality Engine

 Motor para o desenvolvimento de jogos produzido pela Artificial Studios.

 Desenvolvido em cima da plataforma DirectX9 podendo rodar em DirectX7 ou 8.

 Foi criada com o objetivo de competir com a Source Engine e a Unreal Engine 3, tendo
uma qualidade gráfica bem superior.

 Possui um suporte a IA com técnicas importantes como, pathfinding, tomada de


decisões baseadas em máquinas de estados, além de dar aos agentes inteligentes a
possibilidade de responder a estímulos sonoros e visuais.

 A arquitetura da engine foi desenvolvida para melhorar a performance da IA


 Reality Engine

 Motor para o desenvolvimento de jogos produzido pela Artificial Studios.

 Desenvolvido em cima da plataforma DirectX9 podendo rodar em DirectX7 ou 8.

 Foi criada com o objetivo de competir com a Source Engine e a Unreal Engine 3, tendo
uma qualidade gráfica bem superior.

 Possui um suporte a IA com técnicas importantes como, pathfinding, tomada de


decisões baseadas em máquinas de estados, além de dar aos agentes inteligentes a
possibilidade de responder a estímulos sonoros e visuais.

 A arquitetura da engine foi desenvolvida para melhorar a performance da IA


Por onde começar?
Obrigado!

Dúvidas?
gabriel@ecomp.eng.br
Game AI
Inteligência Artificial para Jogos
Eletrônicos
J. Gabriel Lima
gabriel@ecomp.eng.br
http://jgabriellima.wordpress.com
Laboratório de Planejamento de Redes de Alto Desempenho - LPRAD
Empresa Júnior de Engenharia de Computação /UFPa

Vous aimerez peut-être aussi