Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado...
Transcript of Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado...
![Page 2: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/2.jpg)
Game IA?
“Anything that gives the illusion of intelligence to an appropriate level, thus making the game
more immersive, challenging, and, most importantly, fun, can be considered game AI.”
• Física? Detecção de colisão? Pathfinding?
![Page 3: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/3.jpg)
Papéis da IA em Jogos
• Adversários• Aliados• Personagens de apoio• NPC’s (Non-player Character)• Comentaristas• Controle de câmera• Geração de fases• Nivelamento da dificuldade
![Page 4: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/4.jpg)
Histórico
• 1770: “O turco”, criado por Wolfgang von Kempelen, que supostamente jogava xadrez com perfeição.
![Page 5: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/5.jpg)
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
![Page 6: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/6.jpg)
Histórico
• 1978: Space Invaders implantou as primeiras entidades inteligentes em jogos
![Page 7: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/7.jpg)
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 8: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/8.jpg)
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 9: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/9.jpg)
Histórico
• 1996: BattleCruiser: 3000AD é publicado como o primeiro jogo a utilizar redes neurais comercialmente
![Page 10: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/10.jpg)
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 11: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/11.jpg)
Técnicas de Game IA
• Determinística“Deterministic behavior or performance is specified
and predictable. There's no uncertainty.”
• Não-Determinística“Behavior has a degree of uncertainty and is
somewhat unpredictable (the degree of uncertainty depends on the AI method employed
and how well that method is understood).”
![Page 12: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/12.jpg)
A Indústria dos Games
• O setor de jogos é uma área em crescente ascensão que fatura no bilhões de dólares.
• É hoje um dos setores mais rentáveis do entretenimento.
• Área com excelente futuro para o desenvolvedor de software.
![Page 13: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/13.jpg)
Empresa: ConfidencialÁrea de atuação: DesenvolvimentoOportunidade: Desenvolvedor Java, web e Android
A vaga para programador é para desenvolvimento em Java, web e Android, e é desejável ter familiaridade com CC++ e JavaScript, conhecimento de PHP e experiência de desenvolvimento em Android ou iOS. A contratação é em regime CLT, e a Tectoy Studios oferece ainda benefícios como vale-refeição, plano de saúde completo e plano odontológico optativo, além de um dos melhores ambientes de trabalho do mercado. O salário inicial é a partir de R$ 2,3 mil, dependendo da experiência prévia do candidato na área de atuação.
Pesquisado em 1 de Agosto de 2011
![Page 14: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/14.jpg)
Criação dos jogos• Hoje a área de desenvolvimento de jogos é enorme, tendo
muitas áreas técnicas e artísticas envolvidas.• No mercado atual, cada membro da equipe é especialista em
alguma coisa.• Mas independente da área, eles devem possuir: talento
artístico para produzir um bom enredo, música ou gráficos, talentos como refatoração do código, padrões de projeto, trabalho em equipe e bons conhecimentos técnicos.
• E claro conhecimento das mais variadas áreas, como matemática e física, inteligência artificial, computação gráfica, redes e sistemas distribuídos, otimização, etc...
![Page 15: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/15.jpg)
Seqüência de criação de um jogo
• Definição da idéia • Criação de um game design (planejamento do jogo) • Criação do roteiro • Esboçando concept-arts (artistas 2D e 3D) • Programação e modelagem dos esboços • Criação de efeitos sonoros e trilha sonora. • Testes • Divulgação (marketing)
![Page 16: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/16.jpg)
Criadores de jogos
• Desenvolvedor,• Designer,• Engenheiro de software, • Programadores, • Character/Level design, • Escritores, • Roteristas, • Músicos, • ... e varios outros profissionais.
![Page 17: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/17.jpg)
Linguagens mais usadas na criação de jogos:
• C++, • C, • C# e XNA, • PureBasic, • Python, • Java, • Linguagens de Script como Lua, • .NET, • Delphi, • Flash, • Ferramentas de autoria• ... e outras.
![Page 18: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/18.jpg)
Como anda a IA nos Jogos• Os jogos estão chegando a um patamar artístico incrível, com
gráficos extraordinários, simulando a física real e tendo uma inteligência artificial bem convincente.
• Com o avanço dos jogos, é cada vez mais comum o uso das mais diversas técnicas de inteligência artificial.
• Antigamente os desenvolvedores pouco se preocupavam com a IA, preocupando-se mais com os gráficos do game e sua jogabilidade. Hoje o cenário esta mudando. A Inteligência Artificial está cada vez mais forte no desenvolvimento de um jogo. Proporcionando principalmente uma maior diversão ao jogo.
![Page 19: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/19.jpg)
Mas o que é afinal AI ?
• Inteligência artificial em jogos é o uso de técnicas que possibilitam a implantação de rotinas complexas de tomada de decisões no software. Tudo isso para encontrar caminhos, tomar decisões, agir de acordo com a situação, aprender. A inteligência artificial tem grandes aplicações em jogos, ao tentar atribuir ao computador um comportamento humano.
![Page 20: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/20.jpg)
Técnicas para Programar AI em Jogos • Máquinas de Estado• Maquinas de Estado baseada em Pilha• Lógica Fuzzy• Uso de scripts• Sistema de mensagens• Ferramentas de autoria• Algoritmos Genéticos• Combinação de física com grafos• Matrizes e Árvores de Decisão• Sistemas Baseados em Regras• Steering Behaviors• AlgoritmoPath-finding - A*• Sistema baseado em planejamento• Redes Neurais• Sistemas baseados dados• Uso de Agentes• Combinação de física com grafos • Vida artificial
![Page 21: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/21.jpg)
Técnicas de Inteligência Artificial em Jogos - Máquinas de Estado Finita
• FSM - Finite State Machine• Uma máquina de estados é basicamente composta por um conjunto de
estados e um conjunto de regras de transição entre estes estados. Ou seja, o personagem está configurado com uma série de regras e possui regras de transição para ver se o personagem deve alterar o estado inicial, como por exemplo, se ele viu um oponente e se vale a pena ir atrás dele.
• As desvantagens em utilizar as FSM são os comportamentos repetitivos, caso uma situação se repita. E a questão do desempenho, pois quanto mais complexo for o ambiente, maior será o número de estados e transições na qual o FSM terá de prever.Aumentando seu custo.
![Page 22: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/22.jpg)
Técnicas de Inteligência Artificial em Jogos - Agentes
• Um agente inteligente pode ser um personagem na qual pode raciocinar e tomar suas próprias decisões, baseadas tanto em regras quanto no cenário do jogo em si.
• Além disso, é possível criar emoções que podem deixar um personagem mais realista.
• Uma abordagem interessante para se utilizar em agentes é a arquitetura BDI, baseada em 3 conceitos: – Crenças, desejos e intenções.
![Page 23: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/23.jpg)
Técnicas de Inteligência Artificial em Jogos - Lógica Fuzzy
• Lógica Difusa é uma generalização da lógica booleana que admite valores lógicos intermediários entre a falsidade e a verdade (como o talvez).
• A lógica difusa normalmente está associada ao uso de uma teoria de conjuntos fuzzy.
• A lógica fuzzy permite representar num sistema computacional valores onde lógicas clássicas não conseguiriam representar, como “pouca comida”, “muito perto”, e outros eventos não contáveis (ou imprecisos).
• Uma estratégia interessante para se utilizar é a mistura entre a lógica Fuzzy e as FSMs.
![Page 24: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/24.jpg)
Técnicas de Inteligência Artificial em Jogos -
Algoritmos de Pathfinding • Os personagens precisam criar rotas, e não podem fazer coisas que
comprometam seu funcionamento, como, por exemplo, atravessar paredes ou andar em cima de um lago.
• Por isso, os programadores aplicam algoritmos de pathfinding (procura por caminhos).
• Este tipo de lógica é importante para que o personagem faça uma rota satisfatória e normalmente mais curta, e não ande a esmo pelo cenário.
• Além disso, o algoritmo deverá calcular possíveis novos obstáculos que o personagem poderá se deparar, como uma nova parede, outros personagens, possíveis projéteis que o podem atingir (como uma bala de uma pistola), e qualquer variável do ambiente que possa interromper a ação deste personagem.
![Page 25: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/25.jpg)
Técnicas de Inteligência Artificial em Jogos - Redes Neurais
• São sistemas não lineares que imitam o mecanismo de processamento do cérebro humano.
• Elas são redes computadorizadas onde a sua estrutura é similar a um cérebro humano, tendo nós de rede (neurônios) e conexões entre os nós.
• A vantagem de usar uma rede neural é que a rede pode aprender e armazenar conhecimento para uso posterior.
• Num game de futebol, a aplicação de redes neurais pode ser utilizada para que jogadores de futebol aprendam a interceptar a bola durante uma partida.
![Page 26: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/26.jpg)
Técnicas de Inteligência Artificial em Jogos - Algoritmo genético
• Um algoritmo genético é uma técnica de procura utilizada na ciência da computação para achar soluções aproximadas em problemas de otimização e busca.
• Algoritmos genéticos são uma classe particular de algoritmos evolutivos que usam técnicas inspiradas pela biologia evolutiva como hereditariedade, mutação, seleção natural e recombinação.
• Algoritmos genéticos diferem dos algoritmos tradicionais de otimização em basicamente quatro aspectos:– Se baseiam em uma codificação do conjunto das soluções possíveis, e não nos
parâmetros da otimização em si;– Os resultados são apresentados como uma população de soluções e não como
uma solução única;– Não necessitam de nenhum conhecimento derivado do problema, apenas de
uma forma de avaliação do resultado;– Usam transições probabilísticas e não regras determinísticas
![Page 27: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/27.jpg)
Técnicas de Inteligência Artificial em Jogos - Sistemas Baseados em Regras
• Trata-se de um sistema de apoio à decisão que procura representar o modo de raciocínio e o conhecimento utilizado por especialistas na resolução de problemas no seu âmbito de especialidade.
• É definido através de um conjunto de parâmetros e um conjunto de regras que trabalham sobre estes parâmetros, de modo que durante a tomada de decisão, essas regras são então processadas.
![Page 28: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com.](https://reader035.fdocuments.in/reader035/viewer/2022062623/552fc103497959413d8bf0a7/html5/thumbnails/28.jpg)
Técnicas de Inteligência Artificial em Jogos -Sistema Baseado em Planejamento
• O planejamento de IA aplicado a jogos digitais é o armazenamento de “planos de ação” e fazer com que o usuário escolha o plano mais adequado numa determinada situação. Também pode permitir ao personagem decidir qual estratégia ele pode utilizar (além do próprio personagem criar a sua estratégia).
• Uma vantagem desta técnica é que as ações do personagem não são tão repetitivas (diferente dos personagens com o sistema de Máquina de estado Finita, por exemplo).