28
Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado [email protected]

Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado [email protected]

Embed Size (px)

Citation preview

Page 1: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com

Inteligência Computacional para Jogos Eletrônicos

Prof. Alex F. V. [email protected]

Page 2: Inteligência Computacional para Jogos Eletrônicos Prof. Alex F. V. Machado alexcataguases@hotmail.com

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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