Inteligência Artificial Aplicada a Jogos

289

description

Aula sobre Inteligência Artificial Aplicada a Jogos.

Transcript of Inteligência Artificial Aplicada a Jogos

Page 1: Inteligência Artificial Aplicada a Jogos
Page 2: Inteligência Artificial Aplicada a Jogos

Interdisciplinaridade

- A área de jogos é interdisciplinar, envolvendo conhecimentos de

três grandes campos:

- Computação Gráfica.

- Artes.

- Ciências Humanas.

Page 3: Inteligência Artificial Aplicada a Jogos

Computação Gráfica

- Um dos maiores motivos para a troca e atualização de

computadores é o lançamento de novos jogos. Isso prova que os

jogos influenciam a Arquitetura das máquinas. O mercado de jogos

alavanca o lançamento de novas GPUs, placas de processamento

gráfico.

- Dentro de Computação Gráfica temos diversos elementos, como a

simulação da física, uso de giroscópios, modelos de jogabilidade

mais interativos como o Wii, Kinect e Oculus Rift, entre outros.

- Desenvolvimento de acessibilidade da interface, ou seja, criar jogos

para pessoas com deficiências.

- Engenharia de Software | Desenvolver um jogo é desenvolver um

software.

Page 4: Inteligência Artificial Aplicada a Jogos

Artes

- É sabido que as grandes empresas possuem 2 a 3 artistas para cada

programador, o que mostra a complexidade e importância dos

elementos artísticos na elaboração de um jogo.

- Arte conceitual, design de fases, design de personagens,

modelagens 2D.

- Animações.

- Músicas, efeitos de som, trilhas.

Page 5: Inteligência Artificial Aplicada a Jogos

Ciências Humanas

- Roteiros (chegando a possuírem a complexidade de roteiros

cinematográficos).

- Técnicas narrativas.

- Psicologia.

- Sociologia.

- Educação.

- Jogos educativos.

- Impacto pós-jogos como influência na sociedade.

Page 6: Inteligência Artificial Aplicada a Jogos

Inteligência Artificial

- Compreende uma vasta área que precisa ser melhor especificada.

Abrange sub-áreas como a Computação Natural e o Aprendizado

de Máquina.

- Compreende a Robótica nas fundamentações lógicas, proposições

e inferências. Simulação de redes neurais, simular as sinapses

cerebrais.

- Sistema de Recomendação da Web3.0 com a identificação de

padrões (Amazon).

- Characterbot | Robô de Atendimento.

- Cortana, Siri.

- Personagens virtuais em jogos. NPCs, bots.

- De jogos de xadrez aos atuais.

Page 7: Inteligência Artificial Aplicada a Jogos

CharacterBots

Page 8: Inteligência Artificial Aplicada a Jogos

CharacterBots

Page 9: Inteligência Artificial Aplicada a Jogos

CharacterBots

Page 10: Inteligência Artificial Aplicada a Jogos

Pontos de Ancoragem

- Glossário

- Algoritmo

- Um algoritmo é uma sequência finita de instruções bem definidas e

não ambíguas, cada uma das quais pode ser executada

mecanicamente num período de tempo finito e com uma

quantidade de esforço finita.

- O conceito de algoritmo é frequentemente ilustrado pelo exemplo

de uma receita culinária, embora muitos algoritmos sejam mais

complexos. Eles podem repetir passos (fazer iterações) ou necessitar

de decisões (tais como comparações ou lógica) até que a tarefa

seja completada. Um algoritmo corretamente executado não irá

resolver um problema se estiver implementado incorretamente ou se

não for apropriado ao problema.

Page 11: Inteligência Artificial Aplicada a Jogos

Pontos de Ancoragem

- Glossário

- Algoritmo

- Um algoritmo não representa, necessariamente, um programa de

computador3, e sim os passos necessários para realizar uma tarefa.

Sua implementação pode ser feita por um computador, por outro

tipo de autômato ou mesmo por um ser humano. Diferentes

algoritmos podem realizar a mesma tarefa usando um conjunto

diferenciado de instruções em mais ou menos tempo, espaço ou

esforço do que outros. Tal diferença pode ser reflexo da

complexidade computacional aplicada, que depende de

estruturas de dados adequadas ao algoritmo. Por exemplo, um

algoritmo para se vestir pode especificar que você vista primeiro as

meias e os sapatos antes de vestir a calça enquanto outro algoritmo

especifica que você deve primeiro vestir a calça e depois as meias

e os sapatos. Fica claro que o primeiro algoritmo é mais difícil de

executar que o segundo apesar de ambos levarem ao mesmo

resultado.

Page 12: Inteligência Artificial Aplicada a Jogos

Pontos de Ancoragem

- Glossário

- Algoritmo

- O conceito de um algoritmo foi formalizado em 1936 pela Máquina

de Turing de Alan Turing e pelo cálculo lambda de Alonzo Church,

que formaram as primeiras fundações da Ciência da computação.

Page 13: Inteligência Artificial Aplicada a Jogos

Pontos de Ancoragem

- Glossário

- Heurística

- Heurística é um método ou processo criado com o objetivo de

encontrar soluções para um problema. É um procedimento

simplificador (embora não simplista) que, em face de questões

difíceis envolve a substituição destas por outras de resolução mais

fácil a fim de encontrar respostas viáveis, ainda que imperfeitas.

- Tal procedimento pode ser tanto uma técnica deliberada de

resolução de problemas, como uma operação de comportamento

automática, intuitiva e inconsciente.

Page 14: Inteligência Artificial Aplicada a Jogos

Pontos de Ancoragem

- Glossário

- Heurística

- Na primeira forma é uma alternativa rápida e semi-intuitiva ao

raciocínio lento e elaborado, que às vezes funciona razoavelmente

bem se utilizada dentro de suas limitações. Mas que geralmente

induz a vieses e erros graves e recorrentes quando realizada em sua

2ª forma, ou utilizada além de seu escopo.

- Heurística tem origem no termo grego εὑρίσκω, que significa

"encontrar" ou "descobrir". Tem a mesma origem da palavra eureca (εὕρηκα), que significa "encontrei".

Page 15: Inteligência Artificial Aplicada a Jogos

IA Forte

- Strong AI Artificial General Intelligence.

- Tenta replicar ou superar a inteligência do ser humano. Exemplo

fictício: HAL 9000 de 2001, uma Odisseia no Espaço.

- Requer raciocínio, tomada de decisões com incerteza,

representação do conhecimento, planejamento, aprendizado,

processamento de linguagem natural entre outros fatores em um

ambiente de incertezas.

- Tentativa de replicar no PC Intuição, 6º sentido, processando esses

dados.

- Consciência, auto-conhecimento, sentimento, etc.

Page 16: Inteligência Artificial Aplicada a Jogos

IA Fraca

- Narrow or Weak AI

- Focar a IA em casos específicos, como sistemas de recomendação.

- O trabalho focado seria, por exemplo, um mecanismo que resolva

quebra-cabeças. Ele pode até superar um humano nisso, mas

apenas fará isso.

- Eixo de Pensar x Agir e Racionalmente x Humanamente.

- Agir Humanamente é o mais complexo.

Page 17: Inteligência Artificial Aplicada a Jogos

IA Acadêmica x Game IA

- O termo Game IA surgiu para diferenciar os estudos em IA para

jogos eletrônicos dos elaborados pelo meio acadêmico.

- IA Acadêmica.

- Solução de problemas difíceis (Ex: Reconhecimento de Padrões.

- Game IA.

- Diversão dos jogadores.

- Impor desafios.

- Promover realismo comportamental.

Page 18: Inteligência Artificial Aplicada a Jogos

Histórico

- 1770: “O turco”, criado por Wolfgang von Kempelen, que

supostamente jogava xadrez com perfeição.

Page 19: Inteligência Artificial Aplicada a Jogos

Histórico

- Até a década de 1970, os jogos possuíam apenas Versus Mode.

- 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.

- 1978: Space Invaders implantou as primeiras entidades inteligentes

em jogos.

Page 20: Inteligência Artificial Aplicada a Jogos

Histórico

- 1980: Pac-man conta com movimentos padronizados dos inimigos,

porém cada fantasma tem um modo diferente de caçar o jogador.

Page 21: Inteligência Artificial Aplicada a Jogos

Histórico

- 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.

Page 22: Inteligência Artificial Aplicada a Jogos

Histórico

- 1996: BattleCruiser: 3000AD é publicado como o primeiro jogo a

utilizar redes neurais comercialmente.

Page 23: Inteligência Artificial Aplicada a Jogos

Histórico

- 1998: Half-Life é lançado como a melhor Game IA até então.

- 2001: Black & White é alvo da mídia a respeito de como as criaturas

aprendem com as decisões do jogador.

Page 24: Inteligência Artificial Aplicada a Jogos

Objetivo IA para Jogos

- Guiar as metas

- O que fazer e como fazer.

- Reação

- Responder imediatamente as mudanças no mundo.

- Conhecimento intensivo

- Conhecimento profundo sobre o mundo e como ele se comporta.

- Incorpora esse conhecimento em seu comportamento.

Page 25: Inteligência Artificial Aplicada a Jogos

Objetivo IA para Jogos

- Representatividade

- Incorpora um personagem plausível.

- Velocidade

- Desenvolvimento fácil e rápido.

- Recursos

- Pouco consumo de processamento e memória.

Page 26: Inteligência Artificial Aplicada a Jogos

Pipeline da Game IA

- IA geralmente funciona em 3 passos distintos

- Percepção

- Raciocínio

- Ação

Page 27: Inteligência Artificial Aplicada a Jogos

Pensar Racionalmente

- IA Clássica ou Simbólico, proposições lógicas.

- Sócrates é homem.

- Todo homem é mortal.

- Logo, Sócrates é mortal.

- Programa tira conclusão a partir de preposições.

- Qualquer problema descrito por lógica pode ser resolvido.

- A dificuldade consiste em modelar qualquer conhecimento lógico.

- É difícil modelar o mundo real em proposições lógicas.

Page 28: Inteligência Artificial Aplicada a Jogos

Pensar Humanamente

- Problema: Não se sabe ao certo como nós pensamos.

- Deve-se estudar como o ser humano pensa, utilizando as ciências

cognitivas, que são multidisciplinares.

- Envolvem Biologia, Psicologia, Fisiologia, Neurociência,

Computação.

- Exemplo: Entender como o cérebro pode controlar um braço

mecânico.

Page 29: Inteligência Artificial Aplicada a Jogos

Agir Humanamente

- Teste de Turing (matemático). Métrica: parecer humano.

- Consiste em uma pessoa, em uma sala, teclar com outra sala. Ela

não sabe se quem a responde é uma máquina ou um humano. Se a

pessoa não conseguir distinguir se é uma pessoa ou um

computador, a máquina foi aprovada no teste.

- Envolve processamento da Linguagem natural, representação do

conhecimento, raciocínio, aprendizado, ser capaz de errar (os

primeiros sistemas eram facilmente identificados como

computadores, pois eles não erravam. Simular o erro é importante

para a naturalidade, deve-se deixar a máquina imperfeita para

simular um humano, pois os humanos erram.

- Loebner Prize (premiação).

- Teste de Turing invertido. Você deve provar para a máquina que

você é uma pessoa. CAPTCHA(caracteres difíceis do PC

reconhecer). Evitar software bot (AI). Impedir o acesso de um

sistema automático.

Page 30: Inteligência Artificial Aplicada a Jogos

Agir Humanamente

- Teste de Turing (matemático). Métrica: parecer humano.

Page 31: Inteligência Artificial Aplicada a Jogos

Agir Racionalmente

- Agente é a entidade que percebe o ambiente através de seus

sensores e age através de seus atuadores.

- Agentes:

- Ser humano.

- Robô (câmeras, sensores).

- Softbot (agente de software). Bot de busca do Google, sistema que

gera lances automáticos em leilões.

- NPC (personagem não jogável, possui sensor de proximidade, etc.)

- IA é construir agentes inteligentes, sistemas de softwares que

trabalham no mundo artificial e/ou real.

Page 32: Inteligência Artificial Aplicada a Jogos

IA para Jogos

- A utopia é passar no Turing Test de modo que você não consiga

identificar se está jogando com um humano ou um NPC.

- Adaptar jogo ao usuário, em interface, nível de dificuldade, etc.

Player Modeling.

- Bot para perseguir inimigo, recuperar saúde, etc.

- Fazer IA em um jogo consiste em colocar “grau de inteligência”

nesse jogo.

Page 33: Inteligência Artificial Aplicada a Jogos

IA para Jogos

- Não necessariamente precisa ser uma inteligência muito complexa,

sofisticada, pode ser algo mais simples, como roubar (cheating).

- Por exemplo, um chefão de fase difícil de ser derrotado possui mais

informação que você, isso não é IA propriamente dita.

Page 34: Inteligência Artificial Aplicada a Jogos

IA para Jogos

- Movimentos aleatórios.

- Tetris. Você separa um espaço para encaixar uma peça quadrada,

e ela nunca vem. Parece IA mas, na realidade, é um movimento

aleatório.

- Zombie Tsunami.

Page 35: Inteligência Artificial Aplicada a Jogos

IA para Jogos

- Uma das definições diz que qualquer coisa que dê uma ilusão de

inteligência até um certo nível, tornando o jogo mais imersivo,

desafiador e divertido pode ser considerado IA para jogos. Mesmo

um cheating ou um movimento aleatório.

- Essa definição não é totalmente adequada, por ser muito ampla, é

como se qualquer coisa fosse IA. É oposta ao teste de Turing que é

muito estreito.

Page 36: Inteligência Artificial Aplicada a Jogos

IA para Jogos

- A melhor definição seria considerar a IA para jogos como um

conjunto de técnicas que permitem a implementação de

comportamentos inteligentes (“humanos”) em jogos, com foco em:

- 1. Movimento de personagens.

- 2. Tomada de decisão.

- 3. Estratégia. Jogos RTF, xadrez, etc.

- Isso serve para jogos mais ou menos sofisticados.

Page 37: Inteligência Artificial Aplicada a Jogos

IA para Jogos

Page 38: Inteligência Artificial Aplicada a Jogos

Agentes Inteligentes

- Quanto mais complexo o ambiente, mais sofisticado deve ser o

algoritmo para lidar com aquilo.

- Percept: entrada em um determinado momento.

- Actions: normalmente dependem da sequencia do percept até

aquele momento.

Page 39: Inteligência Artificial Aplicada a Jogos

Agentes Inteligentes

- Existe uma função que faz o “mapeamento” implementada por um

programa mais ou menos complexo de acordo com o ambiente.

- Por exemplo, no xadrez você observa todo o ambiente, vê todas as

peças. Enquanto você pensa, nada acontece. É mais controlado.

- É diferente de um carro autônomo que, mesmo tendo um mapa de

rota, pode ser que durante o processamento do mapa tenham

fechado uma via, o trânsito aumentou, do nada surgiu um pedestre,

um buraco. É um ambiente dinâmico e cheio de incertezas.

Page 40: Inteligência Artificial Aplicada a Jogos

Tipos de Ambientes

- Completamente Observável (vs Parcialmente Observável)

- No completamente observável os sensores lhe dão informação

completa sobre o mundo. Você tem informações sobre todo o

ambiente, como, por exemplo, no xadrez.

- No parcialmente observável você não conhece todo o ambiente.

Por exemplo, Age of Empires.

Page 41: Inteligência Artificial Aplicada a Jogos

Tipos de Ambientes

- Determinísticos (vs Estocásticos).

- O determinístico está sob seu controle. É completamente

determinado. O ambiente possui seu estado, que é o conjunto de

variáveis que definem aquele ambiente).

- Por exemplo, no xadrez o tabuleiro tem uma configuração, e

permanece daquela forma até que você faça seu movimento.

Depende apenas de você, da configuração anterior, de seu

movimento e do outro agente, não depende de mais coisas

aleatórias. Você joga, adversário joga (outro agente) e você volta a

jogar.

- É diferente de um robô adentrar um prédio antigo e ele desabar

independentemente da ação deste robô. Esse ambiente é

imprevisível, aleatório, estocástico.

Page 42: Inteligência Artificial Aplicada a Jogos

Tipos de Ambientes

- Episódico (vs Sequencial).

- Nos episódicos seus eventos são separados em eventos

independentes. Neste caso uma ação realizada agora não

depende das anteriores e não interfere nas futuras.

- Nos sequenciais a ação que o agente faz em um determinado

momento depende das anteriores e influenciam as futuras.

- Jogos dentro de uma mesma partida são, na maioria dos casos,

sequenciais. Você pegar ou não determinado item te influenciará

mais ao longo da partida, sua munição pode acabar, você não

terá a chave certa para abrir a passagem, etc.

- Os episódicos são os mais simples de serem lidados, pois as ações

não geram as consequências.

- Por exemplo, duas partidas diferentes de um jogo contanto que

você não leve conhecimento de uma partida para a próxima.

- Um robô que precise separar porcas de parafusos fará isso e ele

pegar um parafuso não dependerá do anterior, nem influenciará o

próximo.

Page 43: Inteligência Artificial Aplicada a Jogos

Tipos de Ambientes

- Estáticos (vs Dinâmicos).

- Os estáticos são os mais simples, pois o mundo não muda enquanto

você pensa. Nada ocorre enquanto você define sua jogada.

- No dinâmico coisas podem ocorrer enquanto se pensa a jogada.

- Semidinâmicos: enquanto eu penso o ambiente não muda, mas eu

posso estar perdendo pontos nesse caminho, por consequência de

tempo, etc. Por exemplo, jogo de xadrez com cronômetro.

- A função de utilidade em um ambiente semidinâmico muda. Essa

função é a que o agente utiliza para definir o melhor movimento, a

melhor e mais rentável ação.

Page 44: Inteligência Artificial Aplicada a Jogos

Tipos de Ambientes

- Discretos (vs Contínuos).

- Nos ambientes discretos temos variáveis discretas, como tempo,

grid, estrutura de dados.

- No contínuo temos fatores como aceleração, etc.

Page 45: Inteligência Artificial Aplicada a Jogos

Tipos de Ambientes

- Agentes Únicos (vs Múltiplos).

- Nos únicos você joga sozinho.

- Nos múltiplos existem mais agentes, que podem jogar:

- Competitivamente | Para ele ganhar você tem que perder.

- Colaborativamente | Juntos por um bem comum.

- Os jogos são mais simples que o mundo real, que é bem mais

complexo. Por isso é difícil fazer agentes para agirem no mundo real.

Page 46: Inteligência Artificial Aplicada a Jogos

Tipos de Ambientes

Page 47: Inteligência Artificial Aplicada a Jogos

Tipos de Ambientes

Page 48: Inteligência Artificial Aplicada a Jogos

Scripts

- Scripts são linguagens de programação bastante simplificadas,

escritas especificamente para lidar com tarefas específicas dentro

de um jogo, como controle de fluxo de diálogos, controle de ações,

entre outras.

- Os scripts ficam em arquivos separados do código principal do

programa, na forma de arquivos de texto simples.

- Para dificultar a alteração desses arquivos de script, alguns

desenvolvedores criam compiladores para a linguagem,

armazenando os mesmos na sua forma compilada de modo que

sua leitura seja irreconhecível ao usuário.

- Isto evita que os mesmos sejam alterados com intenções maliciosas.

Page 49: Inteligência Artificial Aplicada a Jogos

Scripts

- Uma grande vantagem da utilização de scripts é que, conforme o

tamanho do projeto aumenta, a alteração de constantes dentro do

código fica cada vez mais difícil, já que o tempo de compilação é

bastante demorado.

- Armazenando essas constantes na forma de scripts, o código em

linguagem de programação fica separado do código referente às

regras do jogo, e isto permite ainda que pessoas leigas em

programação possam ser incumbidas de tal tarefa.

- Mas isso não é tudo:

- “Uma linguagem script mais avançada aumenta a interação entre

o script e o executável, permitindo não apenas inicializar variáveis

mas criar a lógica do jogo e até mesmo objetos do jogo, tudo a

partir de um ou mais arquivos de script.” (BUCKLAND, 2005)

Page 50: Inteligência Artificial Aplicada a Jogos

Scripts | Construção

- Para que os scripts funcionem de maneira independente do

programa executável, é necessário que este último tenha consigo

um interpretador compatível com a sua linguagem.

- Este interpretador irá carregar o arquivo de script para inicializar as

variáveis dentro do jogo, como no exemplo abaixo:

- O exemplo acima é um pequeno arquivo de script que especifica

os atributos de um personagem controlado pelo computador.

- Veja o exemplo abaixo:

Page 51: Inteligência Artificial Aplicada a Jogos

Scripts | Construção

- Repare como a linguagem script pode ser utilizada para controlar

aspectos lógicos do computador. Este exemplo utiliza uma

linguagem de alto nível, mais próxima à linguagem natural.

- Scripts como este requerem maior tempo gasto no desenvolvimento

de interpretadores e compiladores para a linguagem, mas permitem

a criação de “mods”.

- Mods são extensões de um jogo criadas através de scripts pelos

próprios jogadores. Através de sua linguagem, o desenvolvedor

pode permitir quais aspectos do jogo o jogador poderá alterar, ou

criar, dando a ele a oportunidade de criar novos mundos, armas,

inimigos, entre outros. Isto tem sido uma tendência em jogos

recentes para aumentar o tempo de duração do jogo e alavancar

as vendas. Um grande exemplo de utilização de mods é o jogo

Unreal Tournament 2004, da Epic Games.

Page 52: Inteligência Artificial Aplicada a Jogos

Movimentação de Agentes

- Uma das principais aplicações de IA nos jogos é a movimentação

dos NPCs.

- Tipos mais comuns:

- Padrão (Patterns). Mais simples, como um NPC patrulhando uma

entrada que só vai e volta.

- Perseguição | Fuga (Chase | Evade). Por exemplo, PAC MAN. Uma

hora você está fugindo dos fantasmas que te seguem e, outra, eles

que fogem de você.

- Planejamento de Caminhos (Planning, Pathfinding).

- Mais utilizado. Existe um mapa e você quer que o personagem vá

de um ponto a outro.

- Desvio de Obstáculos (Steering). Desviar de obstáculos que surgem.

- O desvio de obstáculos é feito e aplicado junto com o

planejamento de caminhos.

Page 53: Inteligência Artificial Aplicada a Jogos

Movimentação de Agentes

- A diferença entre o Desvio de Obstáculos e o Planejamento de

Caminhos é o Deliberativo (primeiro você planeja, pensa e depois

executa) e o Reativo (mais imediato, aparece o obstáculo do nada

e você deve desviar).

- O Planejamento de Caminho está em um nível mais alto e o Desvio

de Obstáculos em um mais baixo.

Page 54: Inteligência Artificial Aplicada a Jogos

Movimentação de Agentes

- Movimento de Grupo (Flocking, Swarming).

- Mover vários personagens em conjunto.

- Como uma tropa movida em um jogo RTS.

- Possui algoritmos comuns às áreas de Computação Gráfica,

Robótica e Jogos.

- Estouro da manada de búfalos de o Rei Leão. Utilizaram a técnica

de Flocking para a trajetória, não animaram um a um.

Page 55: Inteligência Artificial Aplicada a Jogos

Características dos Algoritmos

- Tipo de Ambiente

- Estático x Dinâmico

- Parcialmente Observável x Completamente Observável

- Determinístico x Estocástico

- Contínuo x Discreto

- Custa de Espaço x Tempo

- Ordem de Complexidade (quadrático, linear).

- Por exemplo, não adianta fazer o software levar minutos para

planejar uma rota pelo fato de o algoritmo ser exponencial. Nesse

caso deveria ter uma heurística para funcionar mais rapidamente.

- Deliberatovo (pensa demais antes de agira) x Reativo (reações

imediatas) x Híbrido.

Page 56: Inteligência Artificial Aplicada a Jogos

Características dos Algoritmos

- Algoritmo completo.

- Se tem um caminho no mapa entre o personagem e o ponto de

destino, esse algoritmo é capaz de achar esse caminho.

- Algoritmo ótimo.

- Acha o melhor caminho possível entre os dois pontos (dependendo

da métrica padrão utilizada, pode ser por distância, ou seja, o mais

curto, ou o que tenha menos risco, menos inimigos, o que menor

gasto de energia, etc).

- Normalmente usamos a métrica de distância, calculando o menor

caminho.

Page 57: Inteligência Artificial Aplicada a Jogos

Campos de Potencial

- Surgiu e é muito utilizado na robótica. Aplicação intuitiva.

- A ideia é simular que o agente está sujeito a um conjunto de forças,

como campo gravitacional, eletromagnético, que será atraído por

algumas coisas e repelido por outras. Essas atrações e repulsões faz

ele se movimentar de um local a outro. Analogia com a física.

- É o Potencial (U) que o faz se mover em determinada direção.

- Neste exemplo o agente está sendo atraído pelo objetivo e repelido

pelo obstáculo e, disso, se tem essa trajetória. Mecânica

gravitacional, eletromagnetismo.

Page 58: Inteligência Artificial Aplicada a Jogos

Gradiente de uma função

- Muito usado para desvio de obstáculos, perseguição e fuga,

movimento de grupo.

- Você tem seu campo potencial, se deriva esse potencial, ou seja,

pegando o gradiente desta função, f.

- O gradiente aponta para o maior crescimento da derivada.

- O mínimo desta função pode ser encontrado se o gradiente

negativo for seguido.

- O gradiente de uma função f em duas dimensões é dado por:

Page 59: Inteligência Artificial Aplicada a Jogos

Funções Potenciais

- Ambiente 2D, tenho o obstáculo e a chegada (Go).

- Isso é um gradiente. Meu agente é como uma bolinha que, ao

soltar, ela escorrega em direção à chegada, desviando do

obstáculo, nesse gradiente parabolóide. Independente do local em

que eu comece. Isso é o campo potencial, projetado no 2D o

objeto vai contornar o obstáculo e chegar ao destino.

Page 60: Inteligência Artificial Aplicada a Jogos

Funções Potenciais

- É análogo à física. A partir de um campo potencial você gera uma

força, que transforma em aceleração, em velocidade, que faz o

agente andar.

- Deriva o potencial para ter força e a partir da força você integra

seu movimento para ter aceleração, velocidade e atingir seu

destino.

Page 61: Inteligência Artificial Aplicada a Jogos

Funções Potenciais

- Problemas que isso pode envolver: Ponto de mínimo local (região

onde o somatório das forças é zero).

- Se no caso eu tivesse dois obstáculos, o ponto de sela (de equilíbrio

instável), você poderia ter uma força atrativa de um lado, uma

repulsiva de outro, o somatório das forças seria zero e ele ficaria

parado.

- Problema: Como transformar o campo potencial em equação

matemática para fazer o relevo, modelar esse grid.

- É complexo gerar esse campo potencial.

Page 62: Inteligência Artificial Aplicada a Jogos

Funções Potenciais

- Normalmente, nestes campos potenciais o go, a chegada, estará

no mínimo, mais em baixo. E os obstáculos você pode ter um

campo infinito, juntando as partes teríamos o esquema abaixo,

como uma curva de nível, curva de relevo. Quanto mais alto, maior

o potencial, quanto mais baixo, menor o potencial.

Page 63: Inteligência Artificial Aplicada a Jogos

Exemplo de Função Potencial

- Lennard-Jones

- Modela forças inter-moleculares.

- Sua derivada gera forças atrativas ou repulsivas dependendo da distância entre as moléculas.

- Derivar a constante de r elevado a n e a de r elevado a m para gerar a equação.

- Na derivada eles se repelem, aponta para baixo, até chegar em um ponto em que ela estabiliza e atinge no zero um ponto de equilíbrio e depois se atraem.

- Distância e potencial. Para certa distância o potencial é zero, não tem força, moléculas ficam inertes. Diminuindo distância, moléculas se aproximam, tem força atrativa até atingir um ponto de equilíbrio. Se chegar mais próximo elas se repelem.

Page 64: Inteligência Artificial Aplicada a Jogos

Exemplo de Função Potencial

- O exemplo apresentado era para duas moléculas. O problema é se

eu tiver várias. Modelar isso a partir de uma punica função fica

muito complexo. Então devo considerar um somatório de forças.

- O agente, conforme for se movendo no mundo, será atraído por

algumas coisas, repelido por outras. Tratamos essas forças de forma

separada e consideramos o somatório das forças para obter a

resultante.

- Considera-se diretamente um somatório de forças (derivadas de

funções potenciais).

- Agente segue a força resultante.

- Legenda:

- Seta verde força atrativa que me leva ao Go. Quando o agente chega perto do obstáculo começa a ter uma força repulsiva (seta vermelha) e ele começa a seguir a resultante, a seta azul.

Page 65: Inteligência Artificial Aplicada a Jogos

Potencial Atrativo

- Potencial é uma função parabólica: quadrado da distância entre o

robô e o goal

Potencial atrativo é o quadrado da distância, então a força atrativa é

proporcional à distância.

- Converge linearmente para zero:

- Força atrativa negativa, maior distância maior atração, menor

distância menor atração.

Page 66: Inteligência Artificial Aplicada a Jogos

Potencial Repulsivo

- Inversamente proporcional à distância.

- Funciona como uma barreira ao redor do obstáculo.

- Mais forte quando está mais próximo ao obstáculo.

- Não influencia se estiver distante.

- P (q): menor distância para o obstáculo.

- Força tende para o infinito quando o agente está muito próximo ao

obstáculo.

Page 67: Inteligência Artificial Aplicada a Jogos

Potencial Repulsivo

- Você gera força para dar aceleração e velocidade ao agente.

- F = ma (força é igual à massa multiplicada pela aceleração).

- Com isso você pode também simular massas aos agentes, os

deixando mais leves ou mais pesados. Os mais pesados são mais

lentos.

- A partir da aceleração você integra a velocidade e a partir da

velocidade você integra que se tenha o deslocamento.

- Os agentes se repelem.

- Se a força atrativa for muito maior que a repulsiva o objeto tromba

com o obstáculo.

Page 68: Inteligência Artificial Aplicada a Jogos

Game Loop

- Todo jogo funciona com o Game Loop.

- Nesse loop o agente faz tudo que tem que fazer, receber as entradas de teclado, computar a física, fazer a parte de IA de tomada de decisões, computar as novas posições dos agentes, executar a nova tela e te mostrar.

- A 30Hz, 1/30 segundos normalmente, ele faz o loop 30 vezes por segundo.

- Intervalo de Integração

- Distância é velocidade x tempo.

- Cada Delta t multiplicado ele anda mais rápido.

- Ex: Tem um agente andando e eu tiro várias fotos. Quanto menor o intervalo de integração, mais fotos eu tiro e você vê passo a passo o movimento. Se eu aumento o intervalo de integração, tiro uma foto agora e outra segundos depois e acelero o processo. Mas, durante essa aceleração eu perco informações e posso trombar com obstáculos. Algoritmos de AI estão embutidos no loop do jogo.

Page 69: Inteligência Artificial Aplicada a Jogos

Exemplos

- Força atrativa proporcional à distância: F = Ka . d

- Força repulsiva inversamente proporcional à distância: F = Ka/d

- Detalhes:

- Forças repulsivas só estão ativas se ele estiver próximo ao obstáculo

- d < T

- É feito uma saturação nas velocidades para evitar velocidades

muito grandes (também poderia ser feito para F). Saturação é

quando você não quer força ou aceleração muito grande, infinita.

Exemplo: simulando um carro que tem aceleração máxima. Faço a

força proporcional à distância mas limito, em determinado

momento eu saturo.

- Cuidado nas escolhas das constantes.

- Para caso holonômico (agente que pode se mover em qualquer

direção), computa-se Fx e Fy. Posso computar de forma diferente a

força no eixo x e y, vejo a resultante e mando para o agente.

- Um carro não é holonômico, não pode ir para qualquer direção,

tem que fazer manobra, balisa. Carro não anda de lado.

Page 70: Inteligência Artificial Aplicada a Jogos

Características dos métodos

baseados em potencial

- Trabalha em espaço contínuo.

- Não é necessária a discretização do ambiente. Já computa as

forças, trabalha diretamente, calcula aceleração e anda.

- Planejamento e execução de trajetórias. Faz planejamento

implícito. A tarjetória é gerada pelas forças e ele usa a resultante

das forças para seguir seu caminho.

- Campo potencial é vetorial, pode ser pré-calculado e ele segue em

tempo de execução.

- As forças computadas podem ser utilizadas diretamente no controle

do NPC.

- Podem ser calculadas em tempo de execução.

- A posição dos obstáculos não precisa ser conhecida a priori, ele é

completamente reativo, percebe as coisas e reage.

Page 71: Inteligência Artificial Aplicada a Jogos

Problema dos Mínimos Locais

- Somatório de forças é nulo em uma posição que não é o mínimo da

função potencial.

- Soluções:

- Aplicar forças randômicas (como mais agentes para “empurrarem”,

impulsionarem).

- Utilizar funções de navegação. Funções potenciais sem mínimo

local, garantido. Wavefront Planner.

- U invertido. Esse algoritmo não é completo. No completo, se existe

um caminho, ele acha. No do exemplo ele não consegue fazer a

volta.

Page 72: Inteligência Artificial Aplicada a Jogos

Wavefront Planner

- Se o ambiente é conhecido, é possível criar funções potenciais sem

mínimos locais, como o Wavefront Planner.

- Discretiza o ambiente em um grid.

- Células com obstáculos são desconsideradas ou coloca-se um valor

infinito.

- As demais células guardam sua “distância” para o goal.

- A célula em que está o goal é o valor mais baixo do obstáculo.

- Usar um algoritmo para ir fazendo uma descida de gradiente, é

possível atingir o goal a partir de qualquer célula.

- Se constrói uma função potencial de baixo para cima.

- Algoritmo de planejamento.

Page 73: Inteligência Artificial Aplicada a Jogos

Wavefront Planner | Exemplo

- Ambiente:

Page 74: Inteligência Artificial Aplicada a Jogos

Wavefront Planner | Exemplo

- Primeiro passo, discretizar o ambiente, ou seja, colocar um grid.

Page 75: Inteligência Artificial Aplicada a Jogos

Wavefront Planner | Exemplo

- Problema, ao discretizar o ambiente, você perde espaço. Tem

células em que tenho obstáculos pela metade.

Page 76: Inteligência Artificial Aplicada a Jogos

Wavefront Planner | Exemplo

- Essas células devem se tornar células ocupadas. No ambiente

discretizado os obstáculos descem um pouco. Ou a célula deve ser

ocupada, ou livre, não existe meia célula ocupada.

Page 77: Inteligência Artificial Aplicada a Jogos

Wavefront Planner | Exemplo

- Marquei o Goal com valor zero e faço o Wavefront Planner

(expansão de frente de onda). Alguns chamam o algotimo de flood

field (encher de água uma bacia), outros de grass fire (queimar a

grama).

Page 78: Inteligência Artificial Aplicada a Jogos

Wavefront Planner | Exemplo

- Expansão de frente de onda é como jogar uma pedra na água e

vai expandindo. Os vizinhos do Goal viram valor 1, os vizinhos do

vizinho viram 2, os demais 3 e assim por diante.

Page 79: Inteligência Artificial Aplicada a Jogos

Wavefront Planner | Exemplo

- Expansão de frente de onda é como jogar uma pedra na água e

vai expandindo, cresce, a onda espalha. O zero é a pedra que

caiu. Os vizinhos do Goal viram valor 1, os vizinhos do vizinho viram 2,

os demais 3 e assim por diante.

Page 80: Inteligência Artificial Aplicada a Jogos

Wavefront Planner | Exemplo

- Ignoro os locais com obstáculos.

Page 81: Inteligência Artificial Aplicada a Jogos

Wavefront Planner | Exemplo

- Dessa forma expando minha frente de onda. Cada célula tem um

número que, na realidade, é o potencial. Agora trata como

potencial. Agente começa em uma célula e desço o gradiente até

atingir o Goal.

Page 82: Inteligência Artificial Aplicada a Jogos

Wavefront Planner | Exemplo

- Por exemplo, o agente começa no 15 e desce para 14, 13, 12, 11,

até atingir o Goal. Aqui não tem mais mínimo local. Se eu tivesse o

obstáculo em U, o gradiente chegaria por trás, seriam valores mais

altos, não entraria naquele local. O problema é conhecer a priori

meu ambiente. O segundo fantasminha tem duas opções de

caminho da mesma distância, é indiferente.

Page 83: Inteligência Artificial Aplicada a Jogos

Exemplo 2

- Meu agente é um quadrado que não passa em algumas áreas do

plano.

- Um macete é você tratar o agente como um ponto e ampliar todos

os obstáculos.

Page 84: Inteligência Artificial Aplicada a Jogos

Exemplo 2

- Aplicar o Wavefront sendo o goal o zero.

- Essa malha não tem local mínimo, ela tem suas descendências.

- Se soltar uma bolinha de gude nesse relevo ela desce até o Goal, os

obstáculos são mais altos.

Page 85: Inteligência Artificial Aplicada a Jogos

Exemplo 2

- Curvas de nível

Page 86: Inteligência Artificial Aplicada a Jogos

Campos de Potencial

- Além do uso para planejamento (e execução) de trajetórias, os

campos de potencial tem algumas aplicações interessantes em

jogos:

- Perseguição | O goal passa a ser móvel.

- Múltiplos Agentes

- Interações entre os agentes modeladas através de forças.

- Inspiração biológica: Swarming, Flocking, entre outras.

Page 87: Inteligência Artificial Aplicada a Jogos

Boids

- Uma das técnicas mais utilizadas para se movimentar grupos de

agentes.

- Reynolds, SIGGRAPH 87

- Animação de grupos de pássaros. Simular da forma mais realista

sem calcular a trajetória de um para um.

- Comportamento emergente (emergent behavior). Não tme muito

controle sobre as coisas. Cada agente baseado com a interação

de forças com os vizinhos gera o comportamento que o faz navegar

pelo ambiente.

- Definição de regras simples para os agentes ao interagir resultam

em um comportamento global interessante.

- Não há a necessidade de definir uma velocidade global para um

grupo, um líder, etc.

Page 88: Inteligência Artificial Aplicada a Jogos

Boids

- 3 regras:

- Coesão.

- Alinhamento.

- Separação.

Page 89: Inteligência Artificial Aplicada a Jogos

Vizinhança

- Outras unidades que devem ser consideradas nos cálculos.

- Considera-se as unidades que estão em uma área específica por

um ângulo e um raio.

- Por exemplo, considerar todos que estão a volta, ou só os que estão

a frente, etc.

Page 90: Inteligência Artificial Aplicada a Jogos

Coesão

- As unidades devem ficar juntas em um grupo.

- Para isso cada unidade possui a tendência de se mover para a

posição média de seus vizinhos.

- Quanto mais distante da média, maior será a força nesta direção.

- Os vizinhos que influenciam o agente verde são os que estão dentro

do círculo branco. Tem uma força aplicada nele que o fará se

deslocar para o ponto médio dos vizinhos.

- Campo potencial, é atraído para o centróide dos vizinhos.

Page 91: Inteligência Artificial Aplicada a Jogos

Separação

- Deseja-se que as unidades mantenham uma distância mínima entre

si. Serei repelido dos vizinhos em uma determinada vizinhança.

- Para isso define-se uma nova vizinhança chama de vizinhança de

repulsão. Geralmente a vizinhança de repulsão é menor que a de

atração.

- Se alguma outra unidade adentrar a esta região especificada, a

tendência é dos dois se afastarem.

- Basicamente tratamos de campos potenciais também.

Page 92: Inteligência Artificial Aplicada a Jogos

Alinhamento

- Deseja-se que a unidades se movam de forma geral na mesma

direção. Ver qual direção meus vizinhos se movem e tento me

mover na mesma direção.

- Para isso cada unidade assume um alinhamento que seja igual a

média do alinhamento de seus vizinhos.

- A correção será proporcional à diferença dos alinhamentos.

Page 93: Inteligência Artificial Aplicada a Jogos

Composição de Regras

- Resultante | Deve-se normalizar cuidadosamente as três forças de

forma a se obter o comportamento desejado.

- O trabalho de normalização geralmente é feito manualmente, mas

as técnicas de aprendizado também podem ser utilizadas.

- Além das três regras:

Desvio de obstáculos;

- Goal seeking.

- VÍDEO PEIXES | Boids | Força e alinhamento

- Cardumes andam apenas com suas próprias espécies.

- Maior força atrativa dos peixes de sua espécie. Força repulsiva

maior entre peixes de espécies diferentes.

- Búfalos de O Rei Leão.

- Jogos RTF, grupos de agentes.

Page 94: Inteligência Artificial Aplicada a Jogos

Composição de Regras

- Vantagem: Você não precisa pensar no comportamento complexo

do grupo, ele emerge.

- Desvantagem: Você não tem muito controle sobre esse resultado.

- Você terá um pouco mais de controle sobre isso se incorporar

Desvio de Obstáculos, além de desviarem deles mesmos e o Goal

Seeking, ir a um goal específico.

- Jogos RTS você define um ponto específico para as tropas, mas as

interações entre os soldados é por essas definições.

Page 95: Inteligência Artificial Aplicada a Jogos

Composição de Regras

- Modelar o campo para formarem letras.

Page 96: Inteligência Artificial Aplicada a Jogos

Composição de Regras

- Algoritmo de resgate.

Page 97: Inteligência Artificial Aplicada a Jogos

Representação do Mundo

- Trabalhamos as técnicas de campos potenciais em ambientes

contínuos mas, normalmente, em jogos os ambientes são discretos,

seja por já ter um grid por trás, por trás do algoritmo tenha uma

estrutura de dados discreta e a ideia de seu algoritmo é trabalhar

sobre essa estrutura discreta.

- Necessário representar o ambiente por meio de uma estrutura de

dados que permita sua implementação.

- A mais comum é o Grafo.

- A questão mais importante é como transformar o ambiente em um

grafo.

- Duas formas principais:

- Pontos (Waypoints).

- Células (Navmeshes).

Page 98: Inteligência Artificial Aplicada a Jogos

Representação do Mundo

- No caso dos Navmeshes o grafo é a união das células.

Page 99: Inteligência Artificial Aplicada a Jogos

Grafos

- Um gravo é uma coleção de nós (vértices) e arestas: G = (V,E).

- Grafo não direcionado x Grafo direcionado.

- O grafo forma caminhos possíveis para o agente.

Page 100: Inteligência Artificial Aplicada a Jogos

WayPoints

- Na representação por Waypoins os nodos do grafo representam

posições do ambiente e as arestas os caminhos entre estas posições.

Posições físicas, por exemplo, das coordenadas em pixels dos nodos

e coloco as arestas ligando estas posições.

- Normalmente chamado de Roadmap.

- Analogia com o mapa rodoviário.

- A princípio nem toda posição está presente em meu grafo, a não

ser que cada pixel tenha um ponto. O grafo não preenche

completamente o ambiente. Se meu agente está em um ponto que

não representa um nodo do grafo, ele tem que encontrar o nodo

mais próximo, localizar, ir até ele, navegar no grafo, encontrar o

melhor caminho até o objetivo, ponto mais próximo, sair dele e

chegar ao goal.

- O NPC deve saber “entrar” e “sair” do mapa, e encontrar neste

mapa o “melhor” caminho.

- Após construído o grafo, passa-se a fazer consultas sobre possíveis

caminhos.

Page 101: Inteligência Artificial Aplicada a Jogos

Points os Visibility

Construção manual de grafos

- O grafo é construído de forma que as arestas conectem os pontos

nos quais existam linhas diretas livres de obstáculos (line of sight).

- Manualmente você clica nas posições, as marca e clica para ir as

conectando. Você tem visibilidade entre dois pontos e os conecta.

Pode considerar determinada distância, raio.

- Em geral construídos manualmente. | Editores de mapas.

Page 102: Inteligência Artificial Aplicada a Jogos

Grafo de Visibilidade

Geração automática

- Tenho o ponto de início, chegada e obstáculos.

Page 103: Inteligência Artificial Aplicada a Jogos

Grafo de Visibilidade

Geração automática

- Cada quina de obstáculos vira um ponto, um nódulo.

Page 104: Inteligência Artificial Aplicada a Jogos

Grafo de Visibilidade

Geração automática

- Se tenho visibilidade entre cada nódulo, eu gero uma aresta.

- Ele escolhe as menores arestas e gera o menor caminho possível até

o goal.

Page 105: Inteligência Artificial Aplicada a Jogos

Grafo de Visibilidade

Geração automática

- Problemas:

- Muitas arestas. A cada novo obstáculo crescem arestas a níveis

exponenciais. Você pode restringir, considerar obstáculos só de uma

certa distância para gerar arestas. Se não localizar obstáculos

aumenta a distância.

- Limitado a polígonos. Problema menor.

- Agente passa raspando nos obstáculos, pois os nodos estão nos

obstáculos. Uma solução possível para resolver isso é aumentar o

obstáculo artificialmente.

- Solução:

- Aumento artificialmente meu obstáculo. É como se eu criasse um

obstáculo em volta dele. Posso aumentar em proporção ao

tamanho do agente.

- Problema, você perde espaço. Tem um limite para aumentar os

obstáculos, para ter o espaço de passagem.

Page 106: Inteligência Artificial Aplicada a Jogos

Diagrama de Voronoi

- Tenho ambiente com pontos e o diagrama é o conjunto de retas

equidistantes a esses pontos.

- Formalmente é o conjunto de pontos equidistantes a um ou mais

pontos.

- Decomposição do espaço que leva em conta a distância de um

ponto qualquer (x,y) a um conjunto discreto de pontos S. Células de

Voronoi.

- As bordas das células serão os conjuntos de pontos mais distantes

de S.

- Cria-se um conjunto de caminhos que passa o mais distante dos

pontos.

Page 107: Inteligência Artificial Aplicada a Jogos

Diagrama de Voronoi

Generalizado

- Diagrama de Voronoi funciona para pontos.

- Conjunto de retas e parábolas contendo os pontos equidistantes a 2

ou mais obstáculos.

- Caminho com a maior distância entre os obstáculos. Em cima disso

grafo um grafo colocando os nodos e arestas.

Page 108: Inteligência Artificial Aplicada a Jogos

Diagrama de Voronoi

Generalizado

- Exemplo de Diagrama de Voronoi com grafo gerado.

- Quanto mais arestas colocadas, mais se aproxima as curvas.

Aproximação de curvas por arestas.

- Vantagem, tenho o caminho que passa mais distante dos

obstáculos.

- Desvantagens, é complexo gerar o grafo a partir do diagrama de

Voronoi.

- Mais caro

computar o

Diagrama e

gerar o grafo.

Page 109: Inteligência Artificial Aplicada a Jogos

Diagrama de Voronoi

Generalizado

- Exemplo de Diagrama de Voronoi em cenário real, foto de satélite.

Page 110: Inteligência Artificial Aplicada a Jogos

Navmeshes

- A ideia é dividir o espaço em regiões simples, convexas, chamadas

de células. Mais utilizado em jogos.

- As células adjacentes (conectadas) formam um grafo de

adjacência. Grafo mostra a conectividade entre essas células.

- O nó representa uma célula, não mais um ponto no eixo X e Y, e a

aresta entre dois nodos representa uma conexão entre elas.

- É possível fazer o planejamento de caminhos em cima desse grafo,

com diferença que os NPCs tem liberdade de navegar dentro das

células. Diferente do Waypoint em que o NPC só anda em cima dos

caminhos.

- Em jogos essa técnica tem recebido o nome de Navigation Meshes

ou NavMeshes.

Page 111: Inteligência Artificial Aplicada a Jogos

Navmeshes

- Personagem navega entre as células andando de forma

independente dentro delas. Vantagem, trabalhando num nível mais

topológico se navega à vontade dentro dessas células convexas.

Page 112: Inteligência Artificial Aplicada a Jogos

Decomposição em Células

- Pode ser feita de forma manual ou automática.

- Muitas vezes o level designer | level artist já decompõe o cenário

em polígonos.

- As formas tradicionais para decomposição do ambiente em forma

automática são:

- Decomposição exata.

- Grids uniformes.

- Quadtrees.

Page 113: Inteligência Artificial Aplicada a Jogos

Decomposição Exata

- Vai passando um raster, uma linha e cada vez que ele encontra

uma quina de obstáculo ele gera uma célula. Começo a andar na

horizontal com a linha vertical.

- É chamada de decomposição exata porque eu aproveito todo o

espaço possível.

Page 114: Inteligência Artificial Aplicada a Jogos

Decomposição Exata

- É gerado o grafo de conectividade. Arestas ligando as células. Isso

não significa que o personagem deve passar por cima desta linha.

Aqui está a principal diferença desta técnica e do Waypoint.

- A posição pode ser, por exemplo, a mediana entre a célula 1 e a 2.

Page 115: Inteligência Artificial Aplicada a Jogos

Exemplo

Page 116: Inteligência Artificial Aplicada a Jogos

Decomposição em Grids

- Grid Uniforme | Problema, perco espaço, igual no Wavefront. Se

tem uma célula parcialmente ocupada por um obstáculo, aquele

espaço do grid será totalmente ocupado.

Page 117: Inteligência Artificial Aplicada a Jogos

Transformar Grids em Grafos

- Tenho o Grid, para cada posição do Grid gero um nodo e para

cada conexão eu gero uma aresta.

- Posso ter grafo com vizinhança 4, que só conecto na vertical e

horizontal ou grafo com vizinhança 8, que também conecto na

diagonal.

Page 118: Inteligência Artificial Aplicada a Jogos

Decomposição em Grids

- No Grid uniforme precisaria de um grafo muito grande para

representar esse grid. Inflaciono meu espaço. Como os algoritmos

são proporcionais ao tamanho do grafo, ficaria algo muito

complexo.

- Solução para evitar esse problema é fazer o Quadtree. Grid não

uniforme onde as áreas que não tenho obstáculos, tenho mais

espaço faço grids de resolução menor, ou seja, quadrados maiores

e onde tenho obstáculos faço quadrados menores. Vai dividindo

cada quadrante em 4 para diminuir os quadrados e ter assim um

grafo de menos conectividades.

Page 119: Inteligência Artificial Aplicada a Jogos

Decomposição em Grids

- Perda de espaço em grids uniformes e resolução de QuadTree.

Page 120: Inteligência Artificial Aplicada a Jogos

Passo a passo

- Agente quadrado no ambiente.

Page 121: Inteligência Artificial Aplicada a Jogos

Passo a passo

- Amplio os obstáculos e trabalhar com agente pontual (o agente

passa a ser um ponto). Fica claro que na passagem de baixo o

agente quadrado não passa, mesmo tendo a abertura, não tem o

tamanho suficiente. Passagem desapareceu.

Page 122: Inteligência Artificial Aplicada a Jogos

Passo a passo

- Decomposição em células (exata). Não perde nenhum espaço.

Tenho um caminho que passa na metade de cada borda de célula.

Page 123: Inteligência Artificial Aplicada a Jogos

Passo a passo

- Decomposição em grid (aproximada). Perco espaço.

Page 124: Inteligência Artificial Aplicada a Jogos

Mapas Topológicos

- Tenho regiões do meu ambiente e o grafo representa as conexões

entre essas regiões.

- É o que fazemos quando decompomos por células.

- Os mapas topológicos guardam informações sobre a conectividade

de regiões e ambientes, sem se preocupar com caminhos

detalhados.

- Uteis para planejamentos de mais altos níveis.

- Muitas vezes são construídos manualmente.

Page 125: Inteligência Artificial Aplicada a Jogos

Mapas Topológicos

- F sem conexão, porque tem uma porta.

Page 126: Inteligência Artificial Aplicada a Jogos

Pathfinding

- Busca de caminhos. Algoritmo de mais alto nível, feito em cima de

um grafo.

- Jogos usam grafos para mapear ambientes.

- Em geral os grafos possuem pesos (custos) em suas arestas para

indicar a “dificuldade” de se seguir aquele caminho.

- Ex: Distância, tipo de terreno, etc.

- É necessário um algoritmo que, dado um grafo com pesos, ache o

menor caminho entre dois nós.

- Algoritmo mais utilizado é o A* (A estrela).

- Acha o melhor caminho, é um algoritmo de busca que utiliza a

heurística para localizar esse caminho.

Page 127: Inteligência Artificial Aplicada a Jogos

Pesquisa em Grafos

- Explora os nodos em sequência em busca de um nó objetivo (ou de um caminho até o nó).

- Exemplo: Estou no nó A e quero chegar ao D, faço uma exploração para saber por qual caminho passar.

- A ordem de expansão é importante.

- Busca sem informação, só se baseia nas características do grafo para fazer a expansão:

- Busca em largura (ABCD). Do A passo para os vizinhos (B ou C) e depois para os vizinhos deles, em outro nível.

- Busca em Profundidade (ABDC).

- ...

- Busca com informação, busca heurística:

- A* Além da informação do grafo, uso outra

- Informação que eu tenha sobre o problema

- Para criar as possibilidades

- ...

Page 128: Inteligência Artificial Aplicada a Jogos

Algoritmo A*

- Um dos algoritmos mais utilizado em jogos para se fazer uma busca

de caminhos.

- Algoritmo de pesquisa em grafos no qual o próximo nodo a ser

pesquisado é escolhido com o auxílio de uma função heurística.

- Normalmente envolve ter um conhecimento prévio sobre o

problema.

- Algoritmo de “busca com informação”: informed Search.

Page 129: Inteligência Artificial Aplicada a Jogos

Algoritmo A*

- A escolha do nodo a ser investigado é feita considerando-se:

- F(n) = g(n) + h(n)

- g(n) | Custo de chegar ao nó atual.

- h(n) | estimativa do custo do nó atual para o gol.

- Portanto, f(n) vai ser a estimativa de custo da melhor solução que

passa por n.

- O A* faz o cálculo do custo real utilizado para chegar até o atual nó

com mais uma estimativa de custo para se chegar até o final,

dependendo do peso da aresta do grafo.

- Expandir o nó de menor custo.

Page 130: Inteligência Artificial Aplicada a Jogos

Exemplo

- Estamos na Romênia e queremos navegar entre Arad e Bucarest [Russell e Norvig 2003]

- Jogo: Em busca do Conde Drácula.

- Possuímos um mapa com as estradas e respectivas distâncias entre

as cidades (grafo).

- A heurística usada será a distância direta entre qualquer cidade e

Bucarest.

Page 131: Inteligência Artificial Aplicada a Jogos

Exemplo

- Ao lado distância em linha reta de qualquer cidade até Bucarest.

- Expandir os nós de menor custo primeiro.

Page 132: Inteligência Artificial Aplicada a Jogos

Exemplo

- f(n) = g(n) + h(n)

- Como comecei nesse nó, o custo real para chegar até esse nó foi

zero.

- 366 é a heurística em linha reta de Arad até Bucarest.

Page 133: Inteligência Artificial Aplicada a Jogos

Exemplo

- Considerar os vizinhos de Arad.

Page 134: Inteligência Artificial Aplicada a Jogos

Exemplo

- O f(n) privilegia Sibiu que está na direção, no caminho de Bucarest.

- Zerind eu teria um custo real menor, mas estaria me distanciando de

Bucarest, e a heurística me informa isso.

- Expando Sibiu, que é o nodo de menor custo total.

Page 135: Inteligência Artificial Aplicada a Jogos

Exemplo

- Expansão de Sibiu.

- Voltar para Arad não faz sentido.

- Nesse caso, Arad e Sibiu estão em cor diferente por serem nós

fechados, ou seja, já os explorei, já os expandi.

- Escolho o de menor custo e o expando.

Page 136: Inteligência Artificial Aplicada a Jogos

Exemplo

- Expansão de Rimncu Vilcea.

Page 137: Inteligência Artificial Aplicada a Jogos

Exemplo

- Lembrando que o f(g) que aparece nos níveis posteriores é o

somatório das rotas anteriores, o somatório dos custos reais.

Page 138: Inteligência Artificial Aplicada a Jogos

Exemplo

- Notem que, a partir de Rimnicu V, o melhor caminho é Pitesti, com

417, porém, no nível anterior tinha um 415 em Fagaras. Signifique

que talvez o caminho por Fagaras seria melhor. A heurística não é

perfeita. A heurística era um pouquinho menor que o custo real.

Page 139: Inteligência Artificial Aplicada a Jogos

Exemplo

- IMPORTANTE:

- Nestes casos, essas rotas que estou escolhendo são um

PLANEJAMENTO, ou seja, o meu NPC não está se movendo

enquanto eu estou traçando o caminho. Devido a isso não terei um

custo para voltar o nó, pois ainda não comecei a andar. Posso sim

voltar um nó para replanejar o caminho.

- Nesse caso, como Fagaras em um nível anterior acabou

apresentando menor f(n), posso voltar ao nível anterior e, agora,

expandir Fagaras.

Page 140: Inteligência Artificial Aplicada a Jogos

Exemplo

- Expansão de Fagaras.

Page 141: Inteligência Artificial Aplicada a Jogos

Exemplo

- A partir de Fagaras chego, fim, a Bucarest. A heurística de Bucarest

é zero, pois já cheguei lá. E o custo real foi 450.

Page 142: Inteligência Artificial Aplicada a Jogos

Exemplo

- Cheguei e achei o caminho, mas esse não é necessariamente o

melhor caminho. Ainda não acabou. Tenho que explorar todas as

alternativas que dê um custo menor que 450.

- Por exemplo, ainda tenho uma opção. O custo até Pitest é 417.

Quem sabe o custo de Pitest até Bucarest seja, ao fim, menor.

- Só paro quando cheguei ao nó destino e não tenho nenhum nó

aberto no grafo com um custo menor do que o valor que achei.

Page 143: Inteligência Artificial Aplicada a Jogos

Exemplo

- Expando Pitesti. E vejo que de Pitesti até Bucarest tenho mais um

gasto de 101 que, somado ao custo real para chegar em Pitesti, de

317 me dá um total de 418.

Page 144: Inteligência Artificial Aplicada a Jogos

Exemplo

- Ou seja, é muito melhor eu fazer o caminho Arad | Sibiu | Rimnicu

V. | Pitesti | Bucharest, com um custo de 418 do que o caminho

Arad | Sibiu | Fagras | Bucharest, com custo de 450.

Page 145: Inteligência Artificial Aplicada a Jogos

Busca A* | Solução

- Agora a princípio acabou, pois do custo de 418, não tem nenhum ní

aberto com valor menor.

Page 146: Inteligência Artificial Aplicada a Jogos

Algoritmo A*

- Provavelmente fornece solução ótima se a heurística é admissível,

ou seja, o custo indicado pela heurística é menor ou igual ao custo

real para o gol. O custo real, no melhor caso, é igual a heurística,

isso significa que ela é admissível.

- No exemplo, a distância direta entre duas cidades é sempre menor

ou igual a distância através das estradas. Logo, a solução

encontrada é ótima. A distância euclidiana entre dois pontos é uma

heurística admissível.

- O fato de a heurística ser admissível me garante que eu possa parar

quando encontrar o menor custo, pois nenhum outro nó terá custo

menor.

- Complexidade depende da heurística.

- Pior caso é exponencial no tamanho da solução.

- Mas tem como mostrar que a heurística não cairá no pior caso e,

assim, a uso com mais segurança.

Page 147: Inteligência Artificial Aplicada a Jogos

Algoritmo A*

- Uma heurística consistente, que não caia no pior caso segue a

lógica do triângulo. Se eu tenho um caminho em linha reta e um

caminho que passa por duas arestas de um triângulo,

preferencialmente irei pelo que passa em linha reta, é mais curto. É

a lógica da distância euclidiana.

- Tem situações em que eu expanda um nó e depois tenho que

reabri-lo novamente, revisitar esse nó.

Page 148: Inteligência Artificial Aplicada a Jogos

Algoritmo A*

- No código tem uma lista

open e uma lista closed

e o algoritmo fica

rodando até uma

solução ótima ser

encontrada.

- A lista open é um rip,

uma lita de qualidade

onde o primeiro nó é o

de menor custo. Tiro ele

e investigo, se não for o

certo pego os “filhos”,

ou “vizinhos” e os incluo

na lista open e vou

tirando até finalizar o

processo.

Page 149: Inteligência Artificial Aplicada a Jogos

Outros Detalhes

- Existem diversas melhorias e variações de A*, algumas interessantes

para jogos.

- Indicação: Survey e paralelismo do A*.

- Várias implementações de A* para pesquisa em grids.

- Nodos = quadros do grid.

- Arestas = vizinhança (4 ou 8).

Page 150: Inteligência Artificial Aplicada a Jogos

Outros Detalhes

- O A* apresentado foi o clássico, mas existe variação dele para a

ambiente dinâmico.

- Por exemplo, fiz o planejamento até Pitesti e percebo ao chegar

que a estrada até Bucharest está fechada por desmoronamento.

Page 151: Inteligência Artificial Aplicada a Jogos

Outros Detalhes

- Não preciso recomputar tudo novamente. Existe uma versão do

algoritmo A*, o Z* que consegue recomputar só uma parte do grafo

e me indicar um desvio local que me leve ao destino.

Page 152: Inteligência Artificial Aplicada a Jogos

Outros Detalhes

- Existem versões paralelas do A*.

- Existe o A* em tempo real, pois em um grid com milhares de nodos,

embora o A* pareça rápido, pode ser meio demorado computar o

A*. Mesmo que eu não caia no pior caso, pelo tamanho do espaço,

do grid, pode ficar muito caro. E o jogo está rodando a 30 frames

por segundo. Posso querer uma solução em tempo real. Bateu o

clock, o personagem deve andar naquele momento e preciso da

melhor solução para aquele momento, mesmo que não seja a

solução ótima.

- Any Time, lhe fornece a solução no momento em que você precisa,

você pede.

- E diversas outras variações.

- Heurística em grid: Distância de Manhatan, a soma das distâncias

dos quadrados verticais e horizontais, sem considerar os obstáculos.

Page 153: Inteligência Artificial Aplicada a Jogos

Comportamento dos NPCs

- Basicamente o “comportamento” define quais ações o NPC deve

tomar em um determinado momento do jogo.

- Tomada de decisões:

- Sob fogo inimigo, o NPC deverá atirar, se esconder ou fugir?

- Dada a decisão, qual a melhor ação do meu agente.

- Apesar do grande potencial, a maioria dos jogos comerciais usa

algoritmos simples:

- FSM, sistemas baseados em regras, etc.

- A IA acadêmica já estuda os algoritmos mais complexos, mas eles

ainda não estão sendo implementados na indústria de jogos.

Page 154: Inteligência Artificial Aplicada a Jogos

Máquinas de Estados Finitos (FSM)

- É um grafo. Cada nodo do meu grafo modela o comportamento de

meu NPC e cada aresta modela a mudança de comportamento.

Estou andando, vejo um inimigo e mudo para estado correndo.

Estou andando, vejo munição e mudo para buscar munição.

- Uma das abordagens mais utilizadas para modelar comportamentos

em jogos.

- Ideia Geral: O NPC vai estar em um dentre vários estados possíveis e

pode mudar de estado quando certas condições são satisfeitas.

- O estado determina o comportamento.

- As transições modelam as mudanças de comportamento.

Page 155: Inteligência Artificial Aplicada a Jogos

Exemplo clássico: Pac Man

- Fantasma fica andando aleatoriamente pelo labirinto, pelas

bifurcações. Se ele vê o Pac Man e o percebe passa a perseguir.

Ocorreu uma condição (Pac Man ficou visível) e houve uma

transição de estado (perseguir). Se o Pac Man sair da área visível, o

fantasma volta ao movimento aleatório.

Page 156: Inteligência Artificial Aplicada a Jogos

Exemplo clássico: Pac Man

- Se em algum momento o Pac Man comer a pílula azul, o fantasma

começa a fugir até ser comido ou, depois de um certo tempo

(tempo máximo), o fantasma volta ao movimento aleatório. Apesar

de ser extremamente simples e utilizado, parece que o fantasma

tem um certo nível mínimo de inteligência. A transição de estados é

uma variação de expressão lógica que pode ser baseada na

percepção do agente. Se comer a pílula, se acabar o tempo, se

ficar visível.

Page 157: Inteligência Artificial Aplicada a Jogos

Exemplo clássico: Pac Man

- Posso ter ações específicas que ocorrem na transição. Mudar a cor

do fantasma, fazer ele piscar (era uma falha do sistema isso, na

realidade). Na transição zero o cronômetro, faço ele piscar, etc.

Page 158: Inteligência Artificial Aplicada a Jogos

Máquinas de Estados Finitos

- Vantagens:

- Intuitivas:

- Facilita iteração com roteiristas, artistas, etc. Pessoas que não

precisam saber os algoritmos, mas conseguem entender os

contextos.

- Comportamentos tratados separadamente.

- Modelagem e testes mais simples. Pode testar um por um os

comportamentos.

Page 159: Inteligência Artificial Aplicada a Jogos

Máquinas de Estados Finitos

- Extremamente simples de codificar.

- Um computador, por exemplo, é uma máquina de estado finito. Ou

seja, uma máquina que guarda meu estado.

- O estado corrente é armazenado em uma variável.

- No game loop de acordo com o estado corrente, diferentes ações

são implementadas (switch). Uma ação para um estado. Por

exemplo, se meu estado é “corre”, movimenta o personagem de

uma forma, se é “persegue”, movimenta de outra. Se o estado é

“ficar parado”, não movimenta o personagem.

- Um “if” que faz uma condição para cada estado.

- Uma sequência de testes (if) é feita para as mudanças de estado

(ou utilizar uma tabela de mudança de estados). Uma sequência de

estados que muda o estado.

- Múltiplas FSM (máquinas de estado finito) distribuídas: uso de

eventos e mensagens. Por exemplo, se um fantasma achar algo,

você pode ordenar que ele mande uma mensagem, os outros

recebam e mudem também.

Page 160: Inteligência Artificial Aplicada a Jogos

Demais exemplos

- Quake Bots |FPS|Persegue, atira, procura saúde, abriga, foge.

- Fifa (e outros jogos de esporte) | Chuta, dribla, persegue a bola,

marca jogador.

- Comportamentos do time de mais alto nível: defesa, ataque, etc.

- Por exemplo, dentro do comportamento defesa você pode ter uma

máquina de estado finito para cada agente. O atacante faz tal

coisa, o meio campo outra, etc. Hierarquia de estados finitos.

- Pode ter uma máquina de estado finito para um comportamento

“persegue” em que, se eu estiver longe velocidade diminui, perto

ela aumenta, etc.

- RTS (Star Craft, Age of Empires)

- Move para posição, patrulhar determinada área, segue um

caminho.

Page 161: Inteligência Artificial Aplicada a Jogos

Foraging

- “Busca de Alimento”

- Paralelo com quando as formigas vão buscar alimentos.

- Jogo RTS | Agentes devem varrer uma área em busca de

“alimentos” ou “tesouros” e levá-los ao abrigo.

- Estado EXPLORAR (andar aleatoriamente pelo cenário), achando

tesouro vou ao tesouro, achando o goal vou ao goal.

- Funções Potenciais + FSM

- Random, atração pelo tesouro, atração pelo goal.

- Diferentes estratégias.

- Sem memória.

- Sem comunicação.

- Memória e Comunicação.

Page 162: Inteligência Artificial Aplicada a Jogos

Foraging

- Podem dois agentes acharem o tesouro, os dois irão. O último que

chegar não encontra mais o tesouro e volta ao movimento

aleatório. Peguei o tesouro mudo ao estado “levar ao goal”.

Chegou lá, deixa o tesouro e volta ao movimento aleatório.

Page 163: Inteligência Artificial Aplicada a Jogos

Foraging

- Campos potenciais. Em Movimento aleatório ele é atraído para

locais aleatórios do mapa, em busca pelo tesouro é atraído pelo

tesouro e em levar ao goal é atraído pelo goal. Só muda para onde

ele está sendo atraído. Algo assim simples já gera um

comportamento inteligente.

Page 164: Inteligência Artificial Aplicada a Jogos

Foraging

- Posso colocar memória em meus agentes. Por exemplo, enquanto

ele carrega um tesouro, passa por outros e guarda essas posições

na memória. Assim que entregar no goal, ele já busca de levar ao

goal para busca de tesouro, indo ao ponto que ele havia

detectado anteriormente.

Page 165: Inteligência Artificial Aplicada a Jogos

Foraging

- Posso ter comunicação entre os agentes. Um encontra vários

tesouros e envia aos demais que estão em movimento aleatório

para buscarem os tesouros.

Page 166: Inteligência Artificial Aplicada a Jogos

Foraging

- Você pode ter um jogo em que o guarda persegue os bandidos e

os bandidos devem fugir do guarda, por exemplo.

Page 167: Inteligência Artificial Aplicada a Jogos

Extensões

- Hierarquias (modularização).

- Estados podem ser decompostos em conjuntos de estados.

- Máquinas de Estados não determinísticas.

- O mesmo evento pode levar a diferentes estados.

- Adicionam imprevisibilidade.

- Isso resolve um problema da máquina de estado finita que é ficar

sempre na mesma coisa, mesmo comportamento e acabar ficando

tudo previsível e “chato”, por ser repetitivo.

Page 168: Inteligência Artificial Aplicada a Jogos

Extensões

- Por exemplo, em jogo FPS, contra fogo inimigo ele deve se esconder

ou revidar. Pode dar uma aleatoriedade a isso e variar, algumas

vezes ele revida, outras vezes ele atira.

- Por probabilidade: esconde 10% das vezes e atira 90%.

- Isso adiciona “personalidade” ao agente, sendo um “covarde” que

mais esconde e um “suicida” que mais revida.

- Coloco probabilidade nas transições e deixo a máquina não

determinística.

- Autômato finito não determinístico | O mesmo caractere pode levar

o agente a estados diferentes.

- A mesma transição saindo para estados diferentes é esse não

determinismo.

Page 169: Inteligência Artificial Aplicada a Jogos

Árvores de Decisão

- Mais simples que máquinas de estados finitos.

- A ideia é codificar o conhecimento em uma árvore, nos quais os

nodos internos são “perguntas” sobre o estado do agente e do

mundo (decisões) e as folhas são as ações.

- Vantagens: simples, rápidas e intuitivas.

- Desvantagens: pode ficar complexa, estática, comportamentos

previsíveis.

- Extensões: aprendizado, aleatoriedade.

- Clássico na década de 70 e 80 em vários sistemas, como

diagnóstico médico.

- Está com febre, sim ou não. Cansado, sim ou não. Dores, sim ou não.

Disso se tira o diagnóstico.

Page 170: Inteligência Artificial Aplicada a Jogos

Exemplo FTS

- O que é feito em árvore de decisão pode ser feito em máquina de

estados finitos, ambos consistem em fazer perguntas sobre o estado

do agente.

Page 171: Inteligência Artificial Aplicada a Jogos

Exemplo FTS

- Árvore de decisão é chamada de Sistema Especialista, pois precisa

de um especialista para montar isso. Por exemplo, no caso do

diagnóstico é o médico.

- Você pode ter um agente que veja as informações sobre o jogo,

note os padrões de comportamentos e lhe dê dicas durante a

partida.

- Incorporar o conhecimento na árvore.

- A desvantagem da árvore é que você depende do especialista

para montar a árvore e ela fica complexa, difícil de gerenciar se

tiver que modelar todo o jogo nela, fica imensa.

- Falta aleatoriedade, mas você pode incluir.

- Existem algoritmos para fazer aprendizado de árvore de decisão e

aprender a árvore a partir do que ocorreu (exemplos), ao invés de

montar tudo.

Page 172: Inteligência Artificial Aplicada a Jogos

Rule Based Systems

- De forma mais geral, FSMs e Árvores e decisão podem ser considerados simplificações de um Sistema Baseado em Regras.

- Rule Based Systems | Definição informal

- Conjunto de regras no estilo if-then que são utilizadas para fazer inferências em uma base de conhecimento e decidir quais ações tomar.

- Temos a estrutura de banco de regras, a de memória de trabalho. Consulto a memória de trabalho me dá a situação de jogo, consulto as regras de estados para realizar o comportamento.

- Permite realização de inferências. Situação atual do mundo está na memória de trabalho, o conhecimento do especialista nas regras e consulto.

- A base de conhecimento pode ser alterada dinamicamente para incluir novos fatos.

- Permite a realização de inferências muito mais complexas.

- Década de 70-80: sistemas especialistas.

Page 173: Inteligência Artificial Aplicada a Jogos

Rule Based Systems

- Memória de Regras

- Regras no estilo if-then que operam sobre os fatos armazenados na

memória de trabalho.

- Memória de Trabalho

- Armazena fatos conhecidos e conclusões tiradas a partir das regras.

Page 174: Inteligência Artificial Aplicada a Jogos

Rule Based Systems

- Funcionamento Geral

- As regras são “disparadas” a partir de fatos presentes na memória

de trabalho, e com isso novos fatos (asserções) são armazenados na

memória.

- Exemplo: memória de trabalho guarda posição do personagem.

Memória de regras testa, se posição do personagem é X, move ele

para Y.

- Condição verdadeira, dispara a regra e executa a ação da regra

que altera a memória de trabalho, movendo o personagem.

- Pega memória de trabalho, dispara as regras com base nos fatos da

memória de trabalho e novos fatos são incluídos nela, fica em loop.

Page 175: Inteligência Artificial Aplicada a Jogos

Mecanismo de Inferência

- Forward Chaining | Encadeamento Direto

- Verifica-se qual das regras casa com a informação atual da memória de trabalho.

- Deve-se resolver eventuais conflitos caso mais de uma regra case (árbitro).

- Escolher a primeira, aleatoriamente, pesos, etc.

- Dependendo da implementação, escolher mais de uma se resultados não forem conflitantes.

- Regra escolhida é disparada.

- O processo é repetido até que todas as inferências possíveis com os dados fatos tenham sido feitas.

- Vai atualizando a memória de trabalho com os resultados das regras.

Page 176: Inteligência Artificial Aplicada a Jogos

Mecanismo de Inferência

- Backward Chaining

- Não muito utilizado em jogos.

- Funciona de maneira inversa.

- A partir do resultado, tenta-se determinar quais regras foram

disparadas para chegar até ali.

- Em vez de sair da condição para resultado, se vai do resultado para

a condição, se tenta inferir.

- Normalmente o Backward Chaining é recursivo e mais difícil de

implementar, por isso não é usado em jogos.

Page 177: Inteligência Artificial Aplicada a Jogos

Mecanismo de Inferência

- Exemplo simples | Forward Chaining

- Jogo RTS. Quer inferir o estado do jogador. Em verde é a memória

de trabalho. Em determinado momento tenho um pedreiro e 650 de

ouro.

- Tenho uma regra que se tenho um pedreiro e mais de 500 de outro,

construo um castelo. Diminui a quantidade de ouro em 500 pepitas

e tenho o castelo.

- Fico com 150 de ouro e um pedreiro.

- Na memória de regra penso que, se alguém tem um castelo, cria

soldados e dispara a regra. A partir da ´memória de trabalho vejo

quais regras disparam e atualizo a memória.

Page 178: Inteligência Artificial Aplicada a Jogos

Mecanismo de Inferência

- No modo inverso, o Backward Chaining, sei que para ter um castelo

com certeza tenho um pedreiro e mais de 500 de ouro.

- Caminho inverso. Com certeza tal regra foi disparada.

- Para teoremas faz sentido, para jogos não muito, se usa a cadeia

direta.

- Posso implementar isso a partir de uma Árvore de Decisão, de

máquina de estado finito, mas o método mais formal é a partir de

um sistema baseado em regras. Ele facilita para implementar como

banco de dados, consultar e usar “select” e SQL para saber se

condição é verdadeira.

Page 179: Inteligência Artificial Aplicada a Jogos

Mecanismo de Inferência

- No sistema baseado em regras, se as consultas aos bancos de

dados e regras forem muito complexas, ele se torna mais caro e

difícil de ser implementado ao jogo.

Page 180: Inteligência Artificial Aplicada a Jogos

RBS | Conclusão

- Rule Based Systems são interessantes quando o problema pode ser

representado por if-then rules e não é grande.

- Vantagens: muito estudado em IA.

- Permitem a criação de comportamentos mais complexos.

- Desvantagens:

- Pode ser lento dependendo do tamanho do problema.

- Requer um especialista para montar a base de conhecimento.

- De repente você não precisa de uma complexidade de um RBS

para resolver o problema, uma máquina de estado finito já resolve.

Page 181: Inteligência Artificial Aplicada a Jogos

Lógica Nebulosa

- Sair da lógica booleana, em que tudo é verdadeiro ou falso.

- Lógica Nebulosa permite ter um certo grau de verdadeiro ou falso.

- Permite resolver essa dificuldade linguística em modelar um

problema em verdadeiro ou falso.

- Maior grau de liberdade para definir as coisas. Por exemplo, a

temperatura do ambiente hoje não precisa ser quente ou fria, pode

ser um meio termo.

- Muito frio, frio, agradável, quente, muito quente.

- A lógica nebulosa (Fuzzy Logic) surgiu como uma alternativa para

essas situações.

- Não substitui a teoria da probabilidade, que trata a incerteza das

coisas.

- Hoje a IA está estudando muito os casos de probabilidade, mas isso

não tem nada a ver com Lógica Nebulosa.

Page 182: Inteligência Artificial Aplicada a Jogos

Jogo de Golfe

- Se a bola está longe do buraco e o terreno é levemente inclinado

da esquerda para a direita, bata na bola forte e numa direção um

pouco à esquerda da bandeira.

- Se a bola está muito perto do buraco e o terreno é plano, bata na

bola gentilmente e diretamente na direção do buraco.

- Aqui deixo as coisas em aberto, não determino “se distância for

maior que X.”

- Isso não traz a necessidade de ficar codificando tudo, como “if”

xxxxxx, “then” yyyyy; “if” zzzzzzzz, “then” wwwwww.

- Resolve a linguística.

Page 183: Inteligência Artificial Aplicada a Jogos

Jogo de Golfe

- Uma possível definição de distância seria:

- Muito perto: <1m.

- Perto: 1 – 3m.

- Média: 3 - 5m.

- Longe: 5 – 7m.

- Muito longe: > 7m

- Isso não é bom, pois dependendo do detalhamento que quero, isso

pode ser infinito.

- Como classificar a distância 4,99m? Está dentro da distância média,

mas quase longe. É um médio-longe?

- A Lógica Nebulosa faz uma transição suave entre esses conjuntos.

Ao invés de algo pertencer somente a um conjunto, do tipo está

perto ou longe, ela pode dizer que está mais para médio que para

longe. 55% médio e 45% longe, por exemplo. A partir disso faz

inferências e facilita a lógica do jogo.

Page 184: Inteligência Artificial Aplicada a Jogos

Lógica Nebulosa

- Surge em 1965 por Lotfi Zadeh.

- É uma forma de representar problemas nos computadores de uma

forma que nós, seres humanos, pensamos.

- Nós não somos booleanos. Não somos tão lógicos, usamos coisas

menos discretas e mais contínuas.

- A essência da Lógica Nebuosa é uma questão de grau. O grau de

pertencimento.

- Muito perto, perto, médio, longe, muito longe.

- 4,99m está mais para longe do que para médio. Faz mais parte do

conjunto longe do que do conjunto médio.

Page 185: Inteligência Artificial Aplicada a Jogos

Lógica Nebulosa

- Exemplo, controle de ar condicionado:

- ~Quente é negação, not quente.

- Gray Area é uma Área Nebulosa. Transição suave entre os dois

estados (conjuntos nebulosos). 15º com certeza é ~Quente, 30 com

certeza é quente, mas 26 pode ser 40% ~Quente e 60% Quente, etc.

- Não é completamente verdadeiro, nem falso.

- Controlador do ar condicionado booleano seria o bang bang, que

liga e desliga, liga e desliga. No nebuloso se tem o controlador de

termostato.

- Lógica Nebulosa permite diferentes graus de verdadeiro e falso.

Page 186: Inteligência Artificial Aplicada a Jogos

Lógica Nebulosa

- A princípio qualquer coisa que você representa com Lógica

Nebulosa se consegue representar com Lógica Booleana.

- Tradicionalistas em lógica argumentam que lógica booleana pode

ser utilizada para representar as mesmas coisas.

- Vários atributos: T21-24, T25-27, T27-30, T30-33.

- Fazer os intervalos ficarem cada vez menores.

- Com isso, o número de regras em um Rule Based System é muito

maior.

- 50% a 80% maior.

Page 187: Inteligência Artificial Aplicada a Jogos

Lógica Nebulosa | Processo de Inferência

- Crisp | Valor claro. Por exemplo, o valor da temperatura hoje, de

28,6º.

- Pego esse valor e o transformo, faço a fuzzificação, que é o

processo que transforma esse valor claro e absoluto em um grau de

pertencimento dos conjuntos. Por exemplo, falar que esse valor de

temperatura é meio quente e meio médio.

Page 188: Inteligência Artificial Aplicada a Jogos

Lógica Nebulosa | Processo de Inferência

- A partir do momento em que se tem os conjuntos “fuzzificados”

você faz a inferência, aplica as diversas Regras Nebulosas. Tal valor

disparará tais regras.

- A partir do resultado de aplicação dessas regras você terá um novo

conjunto nebuloso que você poderá fazer a defuzzificação para, se

necessário, transformar em um valor Crisp.

Page 189: Inteligência Artificial Aplicada a Jogos

Lógica Nebulosa | Processo de Inferência

- Por exemplo, tem um jogo de corrida e você quer fazer o controle

do volante. Você tem um sensor que dá uma distância em metros e

um ângulo em graus do carro da frente. Transformo a distância em

metro para um conjunto booleano, para saber se ele está perto,

longe, muito perto, etc. Os ângulos transformo em um conjunto

booleano para saber se está mais à esquerda, direita, muito à

esquerda, um pouco à direita.

- Terei regras nebulosas da seguinte forma: se o adversário está perto

e o ângulo é muito à esquerda, vire um pouco o volante à direita.

Se está perto e em frente, vire muito à direita. Esse resultado é um

conjunto nebulosos.

- Depois terei que fazer a defuzzificação para transformar esse “vire

MUITO à direita”, “vire POUCO à direita”, em um conjunto de graus

que fará o carro andar.

Page 190: Inteligência Artificial Aplicada a Jogos

Lógica Nebulosa | Processo de Inferência

- Peguei o valor claro, transformei em conjunto nebuloso, fiz as

inferências em cima desses conjuntos nebulosos através das regras

nebulosas e faço a defuzzificação.

Page 191: Inteligência Artificial Aplicada a Jogos

Conjuntos Claros | Crisp

- Exemplo:

- Universo (U): números inteiros entre 1 e 15.

- Pares = {2, 4, 6, 8, 10, 12, 14}

- Ímpares = {1, 3, 5, 7, 9, 11, 13, 15}

- 2 pertence aos pares, 3 pertence aos ímpares.

- Operações:

- União.

- Interseção.

- Complemento.

Page 192: Inteligência Artificial Aplicada a Jogos

Conjuntos Nebulosos

- Conjuntos Crisp não são adequados em várias situações práticas.

- Exemplo: Teste de QI.

- Abaixo = {70, 71, 72, ..., 89}

- Mediano = {90, 91, 92, ..., 109}

- Inteligente = {110, 111, ..., 129}

- Como comparar os QIs 89 (abaixo) com 90 (mediano), 91 e 109?

- Um passo faz você sair de um conjunto e pertencer a outro.

- Os conjuntos nebulosos permitem que os elementos pertençam a

diferentes conjuntos. Grau de pertencimento a um determinado

conjunto.

- Partial Membership. Exemplo: o 89 é meio abaixo, meio na média.

Page 193: Inteligência Artificial Aplicada a Jogos

Membership Functions

- Transforma uma entrada Crisp em uma entrada nebulosa.

Transforma o valor absoluto em conjunto, em grau de

pertencimento ao conjunto.

- As funções irão indicar o grau daquela entrada para um

determinado conjunto nebuloso.

- Definem uma transição gradual.

- Mapeiam a entrada em valores 0.1.

- Virtualmente qualquer função pode ser utilizada.

- Esse processo é chamado de Fuzzification.

Page 194: Inteligência Artificial Aplicada a Jogos

Membership Functions

- Na lógica booleana eu tenho simplesmente um degrau. Ou o QI é

abaixo, ou é mediano. Ou está frio, ou está quente.

- A Lógica Nebulosa dá essa transição mais sutil.

Page 195: Inteligência Artificial Aplicada a Jogos

Funções Típicas

Page 196: Inteligência Artificial Aplicada a Jogos

Membership Functions

- Modelo o gráfico das funções do Teste de QI.

Page 197: Inteligência Artificial Aplicada a Jogos

Membership to Fuzzy Sets

- Todos de QI abaixo de 80 são 100% “burros”. Começa a virar

mediano. QI 100 é completamente mediano. Depois deixa de ser

mediano e vai passando a ser inteligente. QI 120 é inteligente.

- As demais são todas transições.

Page 198: Inteligência Artificial Aplicada a Jogos

Membership to Fuzzy Sets

- Funções nebulosas são um grau de pertencimento de um

determinado valor no conjunto.

- A função de 115, por exemplo, no conjunto mediano é 0,25. O valor

de 115 no conjunto inteligente é 0,75.

Page 199: Inteligência Artificial Aplicada a Jogos

DOM

- Você tem um DOM | Degree of Membership

- O grau de pertencimento do valor. Por exemplo, o de 115 é 25%

mediano e 75% inteligente.

Page 200: Inteligência Artificial Aplicada a Jogos

Fuzzyficação

- Esse é o processo de fuzzyficação, pega o valor absoluto, no caso

115 e transformo nos graus de pertencimento em cada um dos

conjutos.

Page 201: Inteligência Artificial Aplicada a Jogos

Dicas para uma boa escolha

- De forma a fazer transições suaves a soma das DOMs deve ser

próxima de 1.

- Não colocar mais de dois conjuntos para cada valor de X.

- Não faz muito sentido ser mais de um conjunto ao mesmo tempo, a

pessoa no caso seria burra, mediana e inteligente ao mesmo tempo.

- A transição é sempre de um conjunto para outro.

Page 202: Inteligência Artificial Aplicada a Jogos

Operadores

- Como qualquer lógica, posso ter operações sobre elas.

- Pode ter AND (e), OR (ou), NOT (negação).

- Mediano AND Inteligente.

Page 203: Inteligência Artificial Aplicada a Jogos

Operadores

- Quando você tem os graus de pertencimento, o AND é o mínimo e

o OR o máximo.

Page 204: Inteligência Artificial Aplicada a Jogos

Operadores

- O AND de mediano e inteligente é, então, o menor valor, ou seja,

0,25.

Page 205: Inteligência Artificial Aplicada a Jogos

Operadores

- O inverso para o OR.

- Mediano OR Inteligente.

Page 206: Inteligência Artificial Aplicada a Jogos

Operadores

- O OR é o maior dos dois.

- Lembrança do OR Lógico, em que o OR de duas variáveis

verdadeiras é verdadeiro.

- O OR de um verdadeiro e um falso é verdadeiro, é o maior de 1 e 0,

enquanto AND é o menor de 1 e 0. AND de 1 e 0 é 0.

- Operador OR Nebuloso é o máximo do grau de pertencimento de

dois conjuntos.

Page 207: Inteligência Artificial Aplicada a Jogos

Operadores

- O NOT é o menos.

- Por isso é ideal deixar a soma próxima de 1 para aplicar o NOT.

Page 208: Inteligência Artificial Aplicada a Jogos

Operadores

- Nesse caso o NOT Inteligente é 1 menos o F de inteligente.

- 1 – 0,25.

- E assim monto minhas várias regras nebulosas.

Page 209: Inteligência Artificial Aplicada a Jogos

Regras Nebulosas

- If A then B | Se A, então B.

- A é chamado antecedente ou premissa, condição.

- B é chamado consequente ou conclusão.

- Exemplos:

- If Perto and Tem_Munição then Atira

- Se está perto e tem munição, então atire.

- If Longe then Faz_Nada

- Se está longe, então não faça nada.

- Uma variável que mede a distância e outra que mede a munição.

- Na hora da inferência, por exemplo, ele substitui esse “perto” pelo

grau de pertencimento da variável crisp no conjunto perto.

- No Tem Munição ele pega o grau de pertencimento da variável

munição e substitui no conjunto Tem_Munição.

Page 210: Inteligência Artificial Aplicada a Jogos

Regras Nebulosas

- Em seguida pega o AND dos dois, o menor valor e dispara o

consequente ATIRA, que receberá o valor de A.

- Diferentemente da lógica booleana, A vai ter valores entre 0 e 1,

não será só verdadeiro ou falso.

- B vai receber o mesmo valor de A.

- Se tenho determinado valor na condição, meu consequente,

conclusão terá o mesmo valor.

- Se o resultado do AND, por exemplo, for 0.3, tenho o Atira em um

conjunto nebuloso de 0.3.

- No caso do jogo de corrida, vira muito, médio, o volante com valor

0.3, 0.2.

Page 211: Inteligência Artificial Aplicada a Jogos

Regras Nebulosas

- As regras são disparadas com um certo grau.

- Após a aplicação de todas as regras, pode-se ter diferentes graus

para a conclusão (não é só true ou false, ele carrega os valores,

como 0.3).

Inferência Nebulosa

Para cada regra:

Para cada Antecedente, calcular seu grau.

Calcular a Conclusão.

Combinar os resultados para determinar o conjunto nebuloso (Fuzzy

Associatuon Matrix – FAM). Matriz de Associação Nebulosa.

Se desejada uma saída crisp fazer a defuzzificação.

Page 212: Inteligência Artificial Aplicada a Jogos

Exemplo

- Temos um lançador de granadas, e queremos saber quando ele é

útil, de forma a escolhe-lo e usá-lo na hora certa.

- Variáveis (FLVs | Fuzzy Linguistic Variables)

- Antecedentes:

- Distância par ao alvo. Ex: 200 pixels.

- Quantidade de munição. Ex: 8 granadas.

- Conclusão:

- Utilidade. Pode ser muito útil, mais ou menos útil e pouco útil.

Page 213: Inteligência Artificial Aplicada a Jogos

Exemplo

- Primeiro passo, construir os conjuntos nebulosos.

- No caso utilizando o software MathLab.

Page 214: Inteligência Artificial Aplicada a Jogos

Exemplo

- Distância menor que 50 é completamente perto. Começa transição

que deixa de ser perto e começa a ser médio, e vira longe.

- Menos de 10 granadas e é baixo, acima de 30 é completamente

carregado, etc.

Page 215: Inteligência Artificial Aplicada a Jogos

Exemplo

- O de baixo é o conjunto nebuloso de Utilidade, para fazer a

Defuzzyficação.

- Se o resultado for maior de 70% de utilidade é útil, entre 25% e 75%

serve e abaixo de 25% é inútil

Page 216: Inteligência Artificial Aplicada a Jogos

Exemplo | Regras

- Próximo passo são as regras.

- Lançador de granadas é mais útil à média distância. Perto pode

matar.

Page 217: Inteligência Artificial Aplicada a Jogos

Exemplo | Regras

- Poderia colocar, por exemplo, que se está perto é inútil,

independentemente de qualquer outra coisa.

Page 218: Inteligência Artificial Aplicada a Jogos

Exemplo | Regras

Page 219: Inteligência Artificial Aplicada a Jogos

Exemplo | Inferências

- 200 pixels de distância com 8 granadas.

- Usar lançador de granadas?

- Pelo gráfico anterior vemos que 200px é

0,33 de longe. E 8 granadas é 0, pois está

distante de carregada.

- Inferência:

Page 220: Inteligência Artificial Aplicada a Jogos

Exemplo | Inferências

- Inferência:

- Regra 1: Longe 0.33 AND Carregada 0, o AND é o mínimo, então é 0.

Essa regra não foi disparada, deu 0.

- A Regra 2 disparou o inútil com 0,33.

Page 221: Inteligência Artificial Aplicada a Jogos

Fuzzy Association Matrix (FAM)

- Gerei a Matriz de Associação Nebulosa. Ela indica qual regra

disparou com qual valor.

Page 222: Inteligência Artificial Aplicada a Jogos

Fuzzy Association Matrix (FAM)

- Ela não dispara regras com valor 0. Só quatro regras dispararam.

Page 223: Inteligência Artificial Aplicada a Jogos

Exemplo: Agregação

- Considerar apenas as regras “disparadas”.

- O valor obtido pode ser considerado como um nível de confidência

daquele resultado.

- Útil = 0.67

- Serve = 0.2

- Inútil = 0.33

- Max das duas que dispararam. Pode usar o mínimo, a soma ou

alguma média. Por exemplo, a regra Inútil disparou duas vezes,

considero a maior delas, a média, etc. Considerei o maior, o Max

das duas.

Page 224: Inteligência Artificial Aplicada a Jogos

Exemplo: Agregação

- Volto ao gráfico de saída e tento observar os valores, jogá-los no

gráfico.

Page 225: Inteligência Artificial Aplicada a Jogos

Exemplo: Resultados Graficamente

- Pego os valores e traço no gráfico direto. Cortar no gráfico anterior

onde as utilidades servem.

Page 226: Inteligência Artificial Aplicada a Jogos

Exemplo: Defuzzificação

- Agora, voltando às etapas anteriores, quero obter um valor Crisp

daquele conjunto.

Page 227: Inteligência Artificial Aplicada a Jogos

Exemplo: Defuzzificação

- Uma das formas de Defuzzificar é fazer o centro de massa dos

gráficos. Somo os três. A massa maior está para o útil.

Page 228: Inteligência Artificial Aplicada a Jogos

Exemplo: Defuzzificação

- Processo de obter um resultado Crisp a partir de um conjunto

nebuloso.

- Vários métodos:

- Centróide (centro de massa do exemplo).

- FOM | First of Maximum (primeiro dos máximos).

- MeOM | Mean of Maximum (média dos máximos).

- RCOM | Random Choice of Maximum (escolha randômica dos

máximos).

- Etc.

Page 229: Inteligência Artificial Aplicada a Jogos

Exemplo: Defuzzificação

- Centróide.

- O método mais preciso mas também o mais complexo de calcular.

- Computa-se o centróide (centro de massa) do conjunto.

- A utilidade é de 58,9%

Page 230: Inteligência Artificial Aplicada a Jogos

Exemplo: Defuzzificação

- Na prática peguei todos os valores Crisp, joguei no arcabolço do

Conjunto Nebuloso e o resultado final, após fazer a Defuzzificação é

um que me dá a utilidade.

- Você pode ter um threshold, se a utilidade for maior que 60% usa,

menor não usa, usa moderadamente. O que faz com o resultado

depende da aplicação.

Page 231: Inteligência Artificial Aplicada a Jogos

Exemplo: Resultado Final

- No resultado final você pode traçar um gráfico que me dá o valor

da defuzzificação para todos os valores possíveis de entrada.

Page 232: Inteligência Artificial Aplicada a Jogos

Exemplo: Resultado Final

- Eixo X munição, eixo Z distância, eixo Y utilidade.

- Note que, se eu estou perto, pequena distância, a utilidade é

sempre baixa. Começo a afastar, utilidade vai subindo até que uma

distância média é meu melhor valor de utilidade, depois vai caindo.

Page 233: Inteligência Artificial Aplicada a Jogos

Exemplo: Resultado Final

- Distância média e muita munição representa meu máximo de

utilidade.

- Aumenta distância ou diminui a munição, a utilidade cai.

Page 234: Inteligência Artificial Aplicada a Jogos

Lógica Nebulosa

- A lógica nebulosa me permite tratar o problema de uma forma

menos estrita. Não se limita a true ou false. Posso modelar meu

problema fazendo estas inferência de “se”, “e”, “então”.

- O resultado fica mais perto do que acostumamos a fazer na vida

real.

Page 235: Inteligência Artificial Aplicada a Jogos

Lógica Nebulosa | Aplicações em Jogos

- Controle de Movimento. Jogos e Robótica.

- Para onde virar o NPC?

- Tomada de Decisão | Inferência

- Qual decisão tomar frente ao estado atual?

- Exército inimigo: pequeno, médio, grande...

- Distância: muito longe, longe, perto...

- Conclusão: pouca ameaça, média ameaça...

- Ação: número de exército a enviar para defesa.

- Classificação

- Ex: Determinar um Ranking para os seus NPCs.

Page 236: Inteligência Artificial Aplicada a Jogos

Outros Tópicos de IA para Jogos

- Aprendizado. Ao invés de eu especialista ficar montando árvore de decisão, sistema de regras quero que o sistema aprenda.

- Player Modeling. Determinado tipo de aprendizado. Modelar o jogador e adaptar a IA de acordo com o jogador. Principalmente em jogos difíceis como Poker (ambiente parcialmente observável, não determinístico, pois depende do fator de sorte de tirar as cartas e ainda tem o blefe).

- Técnicas “modernas”. Estudadas pela IA acadêmica mas ainda não tão implementadas em jogos.

- Redes neurais, algoritmos genéticos (otimização, melhorar performance do personagem, faz gerações de personagem e faz a seleção natural deles para ter o melhor NPC para determinado jogo. Seleção natural no FPS é a quantidade de vezes que morre. É como a genética. Dois indivíduos fortes gera descendente forte, dois fracos gera um fraco e a seleção natural o elimina. Vou combinando os indivíduos para ter o descendentes), redes bayesianas (probabilidade, ambiente incerto, muitas variáveis).

Page 237: Inteligência Artificial Aplicada a Jogos

Outros Tópicos de IA para Jogos

- Personalidade | Emoções. Agente corajoso, medroso, etc.

- Interactive Storytelling. Usar IA não para coordenar agentes, mas para

coordenar o enredo do jogo, alterar de acordo com o andamento.

Controlar a narrativa do jogo.

- Arquiteturas | APIs | Engines de IA. Algo que facilite IA para jogos, da

mesma forma que hoje a GPU facilita a implementação gráfica em

jogos. Dois PCs seguem padrão e conseguem comunicar, se alguém

fizer um software que segue um padrão poderia usar no meu sistema.

Ainda não se conseguiu criar isso, muitas nuances existem.

- Jogos Clássicos. Teoria dos jogos. No poker, como lidar com incerteza,

coordenar inteligência, ação da dupla no truco e buraco.

- Etc.

Page 238: Inteligência Artificial Aplicada a Jogos

Redes Neurais

- A humanidade sempre desenvolveu máquinas para nos auxiliar.

- Elas aperfeiçoam nossa potência ou velocidade, reduzindo o tempo

de trabalho ou aumentando nossa força. São poucas as máquinas

que fazem o que o ser humano não faz, mas todas fazem o que

fazemos de uma forma muito mais eficaz.

- Recentemente, principalmente a partir da Terceira Revolução

Industrial, com o desenvolvimento de computadores e a implantação

de sistemas informatizamos no trabalho, muitos pesquisadores vêm

desenvolvendo máquinas para nos ajudar a pensar melhor.

- Conseguimos até agora, com bastante eficácia, melhorar nossa força,

nosso rendimento, nossa velocidade, mas mal arranhamos a

capacidade de melhorar nossa inteligência. Isso acontece

principalmente porque mal conhecemos como ela funciona.

Page 239: Inteligência Artificial Aplicada a Jogos

Redes Neurais

- Muitas pessoas defendem que a inteligência é fruto do pensamento

lógico e desenvolveram vários sistemas lógicos diferentes, culminando

na criação dos computadores.

- Outras pessoas defendem que a inteligência humana é fruto de como

nosso cérebro é organizado.

- Esse grupo desenvolveu, na década de 1940 e 1950, a teoria das

Redes Neurais.

- Essas redes eram tão promissoras, que vários pesquisadores acharam

que isso não daria certo ou esse modelo nunca alcançaria as

previsões feitas até então.

- Durante mais de 20 anos, as pesquisas sobre redes neurais caíram em

descrédito e mais ênfase foi dada à computação lógica conhecida e

utilizada atualmente.

Page 240: Inteligência Artificial Aplicada a Jogos

Redes Neurais

- Porém, de um tempo para cá, principalmente devido ao avanço das

neurociências, as pesquisas sobre redes neurais foram retomadas e

muita coisa foi desenvolvida. Existem pesquisas, por exemplo, para o

desenvolvimento de neurocomputadores. Para se entender melhor o

que são as Redes Neurais e como seria os computadores baseados

nelas, vale à pena conhecer como funcionam os neurônios.

Page 241: Inteligência Artificial Aplicada a Jogos

O comportamento dos neurônios

- Os neurônios são as células que formam o nosso cérebro. Elas são

compostas basicamente por três partes: os dendritos, que captam

informações ou do ambiente ou de outras células, o corpo celular ou

Soma, responsável pelo processamento das informações, e um

axônio, para distribuir a informação processada para outros neurônios

ou células do corpo. Só que uma célula dificilmente trabalha sozinha.

Quanto mais células trabalharem em conjunto, mais elas podem

processar e mais eficaz torna-se o trabalho. Logo, para o melhor

rendimento do sistema são necessários muitos neurônios.

Page 242: Inteligência Artificial Aplicada a Jogos

Os neurônios às redes neurais

- Foi pensando em como os neurônios trabalham que pesquisadores

desenvolveram neurônios artificiais. Cada um tem dois ou mais

receptores de entrada, responsáveis por perceberem um

determinado tipo de sinal. Eles também possuem um corpo de

processadores, responsável por um sistema de feedback que modifica

sua própria programação dependendo dos dados de entrada e

saída. Finalmente, eles possuem uma saída binária para apresentar a

resposta “Sim” ou “Não”, dependendo do resultado do

processamento.

- Um neurônio artificial tenta imitar o comportamento de um neurônio

natural.

Page 243: Inteligência Artificial Aplicada a Jogos

Os neurônios às redes neurais

- Um neurônio artificial é capaz de um único processamento. Cada

entrada recebe somente um tipo de sinal ou informação. Como um

neurônio pode possuir várias entradas, então ele pode perceber

diferentes sinais. Porém, ligar vários neurônios similares em rede, faz

com que o sistema consiga processar mais informações e oferecer

mais resultados.

- Por exemplo, é possível criar um sistema para identificação de

bananas e maças. Para tal, cria-se neurônios sensíveis a cor e forma.

Os de cor percebem o amarelo e o vermelho. Os de forma percebem

o redondo e o comprido. Cada neurônio, então, possui quatro

entradas, uma para cada informação.

Page 244: Inteligência Artificial Aplicada a Jogos

Os neurônios às redes neurais

- Para obter um melhor rendimento do sistema, cria-se uma rede em

camadas: uma primeira camada com quatro neurônios (um para

cada sinal de entrada), uma segunda camada oculta de

processamento com três neurônios e uma camada de saída com dois

neurônios, um para avisar quando é uma maça e outro para avisar

quando é uma banana.

- O segredo não está na arquitetura dessa rede, mas na forma como

ela processa: Redes Neurais não rodam programas, elas aprendem!

Page 245: Inteligência Artificial Aplicada a Jogos

Os neurônios às redes neurais

Page 246: Inteligência Artificial Aplicada a Jogos

O aprendizado das redes neurais

- Não existe uma programação pré-definida dos neurônios artificiais,

como existem nas portas lógicas utilizadas nos circuitos

computacionais. Ao invés disso, eles possuem um sistema de feedback

que modifica sua programação. Cada informação processada gera

um peso, dependendo do resultado. Se for um acerto, ela ganha um

ponto, se for um erro, ela perde meio ponto.

- Dessa forma, a rede neural do exemplo acima testa várias vezes a

percepção do objeto. A cada acerto, os neurônios envolvidos no

processamento ganham um ponto e aquela rede é reforçada. A

cada erro, esses neurônios perdem meio ponto. Dessa forma, o

sistema cria a rotina de seguir o caminho com mais pontos sempre.

Quanto mais tentativas, mais aprimorado fica o sistema, chegando,

ao final de um processo de aprendizado, a executar tarefas quase

sem erro algum.

Page 247: Inteligência Artificial Aplicada a Jogos

O aprendizado das redes neurais

- A grande vantagem disso é que para executar tarefas, uma rede

neural não precisa guardar instruções de comando e executá-las de

forma lógica, como num computador tradicional. Ao invés disso, a

rede aprende o que é preciso ser feito e executa a função. Dessa

forma, uma mesma rede, se ela for capacitada com os neurônios

necessários para tal, é capaz de executar várias funções diferentes,

independente de espaço de memória.

Page 248: Inteligência Artificial Aplicada a Jogos

O aprendizado das redes neurais

- Isso porque em uma mesma rede é possível criar várias regras

diferentes. No exemplo acima, podemos ainda ensinar a rede a

detectar bolas amarelas ou bastões vermelhos, utilizando os mesmos

neurônios e as mesmas regras.

- A diferença é q precisaríamos capacitá-las com neurônios de saída

extras para cada nova informação que queremos dela e outros

neurônios ocultos para facilitar o processamento.

- Mas isso não implica em criarmos novas regras ou novas

programações, somente em ensinar o sistema e executar novas

funções utilizando a mesma rede existente.

- Em sistemas mais elaborados, uma rede neural consegue aprender

qualquer função que uma pessoa possa saber e não há limites para a

quantidade de informação que ela possa processar.

Page 249: Inteligência Artificial Aplicada a Jogos

Inteligência Artificial | IA

- As redes neurais são principalmente utilizadas para criar sistemas de

inteligência artificial.

- Os computadores tradicionais podem fazer isso de forma simulada,

mas sua principal função é seguir regras ou comandos oferecidos pelo

usuário.

- Assim, a inteligência artificial gerada por computadores tradicionais

são simulações de inteligência real, ou seja, apresentam respostas

segundo regras e comandos de um programa pré-estabelecido.

Page 250: Inteligência Artificial Aplicada a Jogos

Inteligência Artificial | IA

- Acontece que a verdadeira inteligência não é a capacidade de

seguir regras, mas sim a capacidade de resolver problemas. Mais

inteligente é o sistema que consegue resolver problemas diferentes de

forma eficaz.

- Baseado nisso, temos então duas formas diferentes de inteligência

artificial, ou IA, a simbólica e a conexionista.

- A IA simbólica simula o comportamento inteligente. Ela é baseada em

uma programação que indica quais respostas devem ser dadas

diante de determinados comandos.

- Essa IA é a utilizada em programas “inteligentes”, como corretores

ortográficos ou simuladores dos mais variados.

- A questão é que esses programas dificilmente aprendem coisas novas,

somente se você incluir novas programações. Essa é a IA mais comum.

Page 251: Inteligência Artificial Aplicada a Jogos

Inteligência Artificial | IA

- A IA conexionista simula a estrutura do cérebro, pois acredita-se que a

inteligência está na forma de processar informação e não na

informação processada.

- Como o sistema do cérebro é inteligente, usa-se tal modelo para

desenvolver IA. Assim, os sistemas de IA baseados em redes neurais

conseguem aprender com seus erros e executar diferentes processos,

independente de instruções.

Page 252: Inteligência Artificial Aplicada a Jogos

As Redes Neurais e o Perceptron

- Não só pensando nisso, mas principalmente tentando desenvolver

melhores formas de inteligência artificial, alguns pesquisadores

começaram a estudar o funcionamento dos neurônios.

- Em especial, Frank Rosenblatt pesquisou a estrutura da retina humana.

Ela é composta por vários neurônios sensoriais, responsáveis por

perceber as cores e as formas.

- Cada um desses neurônios transmite uma resposta em rede para

vários outros neurônios que então enviam suas informações para o

cérebro para finalmente processá-las e transformá-las em imagens.

- Essa é a base de funcionamento dos neurônios artificiais, que levaram

ao desenvolvimento do Perceptron.

Page 253: Inteligência Artificial Aplicada a Jogos

As Redes Neurais e o Perceptron

- O Perceptron foi a primeira máquina criada para processamento de

informação feita sobre o sistema de redes neurais.

- Ele foi o primeiro sistema de processamento pequeno o suficiente para

ser usado por uma pessoa, diferente dos computadores da época

que ocupavam salas enormes com seus processadores. Ele foi

considerada por muitos como o pai do computador pessoal.

- Atualmente, o Perceptron é conhecido como a forma de

processamento de informação baseado em redes neurais. Ele é

construído com neurônios artificiais, formando redes de

processamento. Uma rede dessas é chamada de Perceptron.

Page 254: Inteligência Artificial Aplicada a Jogos

As Redes Neurais e o Perceptron

Page 255: Inteligência Artificial Aplicada a Jogos

Diferenças entre Computador e Perceptron

- A melhor forma de compreender a singularidade desse sistema é

compará-lo ao computador.

- Talvez a característica mais marcante de um Perceptron seja que ele

não executa programas, mas os aprende. Em um computador, instala-

se instruções de comando que formam um programa. Em um

Perceptron, treina-o para executá-los.

- As informações não são gravadas, mas aprendidas.

- Um computador funciona a partir da execução de operações lógicas,

rodando programas que podem

- Ser reduzidos à combinação de procedimentos de lógica booleana.

Por sua vez, um Perceptron é capaz de processos não-lógicos,

comparações e transformações, pois seus sistema não é

condicionado a um funcionamento lógico e linear.

Page 256: Inteligência Artificial Aplicada a Jogos

Diferenças entre Computador e Perceptron

Page 257: Inteligência Artificial Aplicada a Jogos

Diferenças entre Computador e Perceptron

- Ao mesmo tempo, um Perceptron é capaz de múltiplos

processamentos e testes de hipóteses em paralelo, enquanto

computadores funcionam com um processamento em cada circuito

de cada vez.

- Isso faz com que a velocidade de processamento do Perceptron seja

muito maior do que a de um computador tradicional.

- Finalmente, um computador está preso à sua programação.

- Ele só executa aquilo que foi programado.

- Enquanto isso, um Perceptron pode perceber novas possibilidades,

aprender com as tentativas e erros e apresentar novos resultados.

Page 258: Inteligência Artificial Aplicada a Jogos

Diferenças entre Computador e Perceptron

- Sabe-se que nenhuma máquina é capaz de superar a inteligência

humana.

- Muitas são capazes de vários processamentos por segundo, de

calcular inúmeras possibilidades, mas nenhum computador é capaz

de aprender com seus erros.

- Já os Perceptrons nos mostram que podemos construir máquinas

realmente inteligentes, capazes de aprender, de errar, de melhorar e

principalmente, que não são presos a programações que podem

falhar.

- O que limita uma máquina dessas é sua própria experiência.

- Aliado a isso e ao uso de nanotecnologia, podemos esperar grandes

avanços nos computadores e na forma como entendemos a mente

humana. O que virá disso tudo, só o futuro pode dizer.

Page 259: Inteligência Artificial Aplicada a Jogos

RNs

- Foi só recentemente que as redes neurais, ou RNs, começaram a ser

utilizadas em jogos comerciais.

- Devido à falta de recursos disponíveis tanto nos PCs quanto nos

consoles das gerações passadas, era preferível utilizar técnicas mais

simples e determinísticas na implementação da IA.

- Mas conforme o tempo foi passando, tanto a quantidade de memória

quanto de processamento disponível evoluiu muito, e agora é cada

vez mais comum o uso das redes neurais em jogos.

Page 260: Inteligência Artificial Aplicada a Jogos

RNs

- As redes neurais são baseadas no modelo de ligações entre neurônios

dos seres vivos, onde que cada neurônio possui três partes básicas:

dendrito, corpo celular e axônio.

- O cérebro possui aproximadamente 100 bilhões desses neurônios, que

se comunicam através de sinais eletro-químicos.

- A troca de informações entre neurônios é denominada “sinapse”, que

é a ligação entre o axônio de um neurônio com o dendrito de outro.

- Quando um neurônio recebe um sinal, ele executa uma espécie de

“cálculo”, que, ao ultrapassar um limiar, dispara o neurônio, e este

envia um sinal ao próximo neurônio da rede, através de seu axônio.

Page 261: Inteligência Artificial Aplicada a Jogos

RNs

Page 262: Inteligência Artificial Aplicada a Jogos

O neurônio artificial

- Redes neurais são formadas por vários neurônios artificiais. Um

neurônio artificial é modelado à semelhança de um neurônio

biológico.

- Cada neurônio possui um conjunto de entradas, uma função de

ativação e uma saída.

- Cada entrada do neurônio possui um peso associado.

- 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.

- 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.

Page 263: Inteligência Artificial Aplicada a Jogos

O neurônio artificial

- Uma vez criada a rede, ela deverá ser treinada para que funcione da

maneira esperada. Treinar uma rede neural nada mais é que ajustar os

pesos, ou seja, a força entre suas conexões.

- Cada peso está associado a uma entrada do neurônio, e é

representado por um número de ponto flutuante negativo ou positivo

(exercendo influência excitatória ou inibitória) na entrada.

- Quando uma entrada é apresentada ao neurônio, ela é multiplicada

pelo seu peso.

- O neurônio então soma todas essas entradas, gerando um valor de

ativação. Se este valor for maior que um certo limiar, o neurônio gera

um sinal de saída, que dependendo da topologia da rede pode ser a

saída desejada, ou uma saída que servirá como entrada para outro

neurônio.

Page 264: Inteligência Artificial Aplicada a Jogos

O neurônio artificial

Page 265: Inteligência Artificial Aplicada a Jogos

Redes neurais | Vantagens

- As principais vantagens das redes neurais são:

- • tolerância a falhas: as redes neurais podem ser treinadas para

reconhecerem padrões distorcidos e até mesmo incompletos, além

serem capazes de operar, até certo ponto, mesmo quando parte da

rede for danificada;

- • compatibilidade com a tecnologia atual: é possível treinar uma rede

para executar uma tarefa especializada e depois implementá-la em

um hardware de baixo-custo. Assim, elas podem ser facilmente

inseridas em sistemas existentes;

- • auto-organização: redes neurais possuem uma capacidade de

aprendizagem adaptativa, auto-organizando as informações

recebidas. Isto permite que a rede responda satisfatoriamente mesmo

quando forem apresentadas informações novas.

Page 266: Inteligência Artificial Aplicada a Jogos

Redes neurais em Jogos

- Até o momento, não existem técnicas para modelagem de uma rede

com inteligência complexa (ao nível de um animal, por exemplo),

mesmo sendo possível, com a tecnologia de hoje, montar uma rede

com milhares de neurônios.

- A maioria das aplicações atuais de RNs utilizam cerca de uma dúzia

ou mais neurônios, e elas são feitas para desempenhar tarefas

específicas. E em jogos isto não é diferente. Redes neurais 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.

Page 267: Inteligência Artificial Aplicada a Jogos

Redes neurais em Jogos

- Uma das redes mais utilizadas em jogos é a rede feedforward de três

camadas.

- Ela é assim chamada devido ao fato de seus neurônios enviarem suas

saídas à próxima camada até que seja obtida a saída final da rede.

Page 268: Inteligência Artificial Aplicada a Jogos

Redes neurais em Jogos

- A rede possui uma camada de entrada, uma camada escondida e

uma camada de saída.

- Não há restrições quanto ao número de neurônios em cada camada,

e a quantidade ideal deles depende do problema a ser resolvido.

- Cada neurônio da camada de entrada é ligado a todos os neurônios

da camada escondida, e cada neurônio da camada escondida é

ligado a todos os neurônios da camada de saída.

- Maiores detalhes sobre o cálculo de funções de ativação, bem como

de outros tipos de RN pode ser encontrados em FREEMAN 1991.

Page 269: Inteligência Artificial Aplicada a Jogos

Redes neurais em Jogos

- A rede poderia ser utilizada, por exemplo, para controlar a direção de

uma unidade, tendo como entrada as informações enviadas por seus

sensores visuais e como saída, para qual direção a unidade deve

seguir.

- Observe que apenas a parte da tomada de decisão é controlada

pela RN. Para a movimentação pode-se utilizar um algoritmo simples

de perseguição e fuga. Veja abaixo uma ilustração para o problema.

Page 270: Inteligência Artificial Aplicada a Jogos

Mapeando o Problema

- 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.

Page 271: Inteligência Artificial Aplicada a Jogos

Mapeando o Problema

- O mapeamento pode ser feito utilizando os valores 0 (zero) para o

valor lógico “falso” e 1 (um) para o valor lógico “verdadeiro”.

- Quando a variável for uma enumeração, utiliza-se um vetor de

entrada, sendo que cada posição do vetor possui valor 0 ou 1.

- Por exemplo: se temos uma variável enumerada que pode assumir os

valores “espada”, “revólver” e “canhão”, por exemplo, teríamos um

vetor de três posições com os valores “{0, 0, 1}”, caso o valor desta

variável seja “canhão”, por exemplo (aqui assumimos que as variáveis

se excluem mutuamente, não podendo assumir mais de um valor ao

mesmo tempo). Se a enumeração tivesse um valor “revólver”, o vetor

de entrada seria “{0, 1, 0}”.

Page 272: Inteligência Artificial Aplicada a Jogos

Mapeando o Problema

- Quando nosso problema já se encontra no domínio contínuo, apenas

precisamos enviar suas variáveis como entrada na rede neural.

- Deve-se atentar para entradas com diferenças acentuadas entre seus

elementos.

- Por exemplo, se uma rede possuir uma entrada com valor 20 e outra

com valor 200, pode-se obter um valor influenciado pela entrada de

maior valor. Para tal problema, pode-se dividir ambas as entradas pelo

maior valor (200), obtendo valores em termos percentuais.

Page 273: Inteligência Artificial Aplicada a Jogos

Algoritmos Genéticos

- A pesquisa em algoritmos genéticos, assim como as redes neurais, é

outra área da IA influenciada pela biologia. Ela é 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.

- No mundo real, as espécies evoluem constantemente na tentativa de

melhor se adaptarem aos seus ambientes. Os seres mais “fortes” e

capazes de sobreviver passam adiante suas características para a

próxima geração. Tais características são codificadas nos

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

cromossomos da geração atual, num processo denominado

crossover. 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.

Page 274: Inteligência Artificial Aplicada a Jogos

Algoritmos Genéticos em Jogos

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

de uma solução ótima para um determinado problema. Cada um dos

indivídios mencionados anteriormente são possíveis soluções para o

problema em questão.

- 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. 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.

- A implementação dos algoritmos genéticos em jogos pode ser

dividida em quatro etapas, que são a inicialização da população,

validação da aptidão, seleção e evolução.

Page 275: Inteligência Artificial Aplicada a Jogos

Algoritmos Genéticos em Jogos

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

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

Esta codificação pode ser feita de maneira simples, utilizando um

vetor de caracteres; cada índice do vetor pode representar uma

característica do ambiente externo e o valor contido nesta posição

representa a ação que a criatura deverá executar.

- 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 cromomossomos 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.

Page 276: Inteligência Artificial Aplicada a Jogos

Algoritmos Genéticos em Jogos

- Na etapa de inicialização, espera-se obter uma população com alto

grau de variabilidade genética, portanto atribui-se valores aleatórios

para os cromossomos. Veja o exemplo da tabela abaixo.

- Definidos os métodos de codificação dos genes da população,

inicializamos ela conforme descrito acima, com valores aleatórios para

os cromossomos das criaturas. Note que o exemplo acima possui

apenas quatro situações possíveis. Numa aplicação real poderíamos

ter um número muito maior de situações a considerar.

Page 277: Inteligência Artificial Aplicada a Jogos

Algoritmos Genéticos em Jogos

- 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. Para isto, utilizamos uma função de

avaliação de aptidão (também denominada função fitness).

- 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.

- As criaturas com a maior aptidão segundo esta função terão a maior

probabilidade de passar seus genes à geração seguinte.

Page 278: Inteligência Artificial Aplicada a Jogos

Algoritmos Genéticos em Jogos

- 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. Já no mundo

dos jogos, podemos escolher qualquer

número dentre os melhores indivíduos

(segundo a função de aptidão).

Page 279: Inteligência Artificial Aplicada a Jogos

Algoritmos Genéticos em Jogos

- 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. Aqui também são introduzidas mutações aleatórias.

Observe a tabela abaixo.

Page 280: Inteligência Artificial Aplicada a Jogos

Algoritmos Genéticos em Jogos

- Observe que no terceiro cromossomo do indivíduo resultante (terceira

linha da tabela) a característica não foi herdada de nenhum dos pais.

Isto é resultado de uma mutação aleatória. Por exemplo, na hora do

crossover, podemos fazer com que a característica resultante tenha,

digamos, 5% de chances de ser gerada aleatoriamente, ou seja, não

estando presente em nenhum dos indivíduos da geração anterior.

Page 281: Inteligência Artificial Aplicada a Jogos

Algoritmos Genéticos em Jogos

- Agora o algoritmo retornará à segunda etapa, e a cada iteração,

serão criados indivíduos mais aptos a enfrentar o jogador em

diferentes situações.

- A implementação do algoritmo genético é resumida abaixo, em

pseudo-código.

Page 282: Inteligência Artificial Aplicada a Jogos

Flocking

- É bastante comum na implementação de jogos a necessidade de

prover uma movimentação em grupos para personagens controlados

pelo computador, principalmente em jogos de estratégia e RPG. Estes

grupos podem ser de animais, pessoas, unidades de combate, entre

outros. É claro que também é possível implementar esse tipo de

movimentação com scripts bem elaborados, mas a utilização de

flocking elimina a necessidade de criar um script para controlar cada

criatura do jogo –ao invés disso, precisamos de apenas um script para

controlar o grupo como um todo.

- Um algoritmo básico de flocking foi apresentado por Craig Reynolds,

em seu artigo de 1987 intitulado “Flocks, Herds, and Schools: A

Distributed Behavioral Model”. A idéia principal do algoritmo é fazer os

NPCs moverem-se de maneira coerciva, como se houvesse um

objetivo em comum –o oposto de se ter várias unidades movendo-se

de maneira independente, sem coordenaçao alguma.

Page 283: Inteligência Artificial Aplicada a Jogos

Flocking

- Para determinar a direção resultante de cada unidade, cada

unidade controlada pelo flocking mantém informações sobre outras

unidades em um raio circular de tamanho pré-definido, centrado na

própria unidade. Este raio é denominado “ráio de vizinhança”

(neighborhood radius) (BUCKLAND, 2005). Ainda segundo BUCKLAND,

flocking também é bastante utilizado em filmes, como em “Batman

Returns” e “O Senhor dos Anéis”.

Page 284: Inteligência Artificial Aplicada a Jogos

Flocking

- As três principais regras que regem o algoritmo de flocking são:

separação, alinhamento e coesão:

- • separação: é uma força que faz com que as unidades mantenham

certa distância uns dos outros, evitando colisões com seus vizinhos;

- • alinhamento: mantém a direção de cada unidade alinhada à

direção de seus vizinhos. Isto é feito calculando-se a média dos

vetores de direção de cada vizinho e subtraindo-se desta média a

direção atual da unidade. O resultado é a direção que a unidade

deve seguir para manter-se em rumo com seus vizinhos;

- • coesão: é um tanto similar à regra anterior, mas neste caso a

unidade dirige-se ao centro de massa (posição média) de seus

vizinhos. A média é calculada levando em consideração o vetor de

posições dos vizinhos. O vetor resultante é o centro de massa da

vizinhança e indica a posição à qual a unidade deve se dirigir.

Page 285: Inteligência Artificial Aplicada a Jogos

Flocking

- Flocking é considerado uma área de estudo da Artificial Life, ou

simplesmente A-Life (vida artificial).

- “[...] Artificial Life (Alife) basicamente procura estudar a vida e suas

propriedades no computador –criando a vida digitalmente dentro do

computador, simulando-a ou ambos. Alife pode ser especialmente

interessante para pessoas de outras áreas como a teoria do caos, pois

muitos aspectos são comuns entre ambas as áreas. ” (MATTHEWS,

2002, trad.nossa).

- Para emular a vida, a A-Life faz uso de técnicas como algoritmos

genéticos, flocking, sistemas baseados em regras, entre outras. O

comportamento das criaturas é dividido em problemas menores, que

são mais tarde unidos por uma hierarquia de decisões que cada uma

delas possui, determinando que ações devem ser feitas para satisfazer

suas necessidades. Segundo Woodcock (2000):

Page 286: Inteligência Artificial Aplicada a Jogos

Flocking

- “[...] as interações que ocorrem entre comportamentos de baixo-

nível, explicitamente codificados e as motivações/necessidades dos

personagens causa o surgimento de um comportamento de alto-nível,

mais ‘inteligente’, sem qualquer programação explícita ou complexa.”

Page 287: Inteligência Artificial Aplicada a Jogos

Conclusão

- A área de Jogos Digitais está crescendo muito tanto na indústria

quanto na academia.

- Especificamente, o desenvolvimento da IA para jogos está na sua

infância.

- Jogos permitem trabalhos multidisciplinares, dentro e fora da

computação.

Page 288: Inteligência Artificial Aplicada a Jogos

Referências

Page 289: Inteligência Artificial Aplicada a Jogos

Contatos

grupoceanus.com.br

nandexramos.com.br

Facebook

http://www.facebook.com/nandex.ramos