Upload
internet
View
104
Download
0
Embed Size (px)
Citation preview
Inteligência Computacional para Jogos Eletrônicos
Prof. Alex F. V. [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: 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
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
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.
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).