Inteligência Computacional para
Jogos Eletrônicos
Prof. Alex F. V. Machado
[email protected]
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?
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
Histórico
• 1770: “O turco”, criado por Wolfgang von
Kempelen, que supostamente jogava xadrez
com perfeição.
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
Histórico
• 1978: Space Invaders implantou as primeiras
entidades inteligentes em 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
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
Histórico
• 1996: BattleCruiser: 3000AD é publicado como
o primeiro jogo a utilizar redes neurais
comercialmente
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
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).”
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.
Empresa: Confidencial
Área de atuação: Desenvolvimento
Oportunidade: 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
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...
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)
Criadores de jogos
•
•
•
•
•
•
•
•
•
Desenvolvedor,
Designer,
Engenheiro de software,
Programadores,
Character/Level design,
Escritores,
Roteristas,
Músicos,
... e varios outros profissionais.
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.
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.
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.
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
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.
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.
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.
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.
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.
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
Sistemas
Baseados em Regras
Técnicas de Inteligência Artificial em Jogos -
• 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.
Sistema
Baseado em Planejamento
Técnicas de Inteligência Artificial em Jogos -
• 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).
Download

slide-1-introducao