1 / 28

Inteligência Computacional para Jogos Eletrônicos

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

aya
Download Presentation

Inteligência Computacional para Jogos Eletrônicos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  4. Histórico • 1770: “O turco”, criado por Wolfgang von Kempelen, que supostamente jogava xadrez com perfeição.

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

  6. Histórico • 1978: Space Invaders implantou as primeiras entidades inteligentes em jogos

  7. Histórico • 1980: Pac-man conta com movimentos padronizados dos inimigos, porém cada fantasma tem um modo diferente de caçar o jogador

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

  9. Histórico • 1996: BattleCruiser: 3000AD é publicado como o primeiro jogo a utilizar redes neurais comercialmente

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

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

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

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

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

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

  16. Criadores de jogos • Desenvolvedor, • Designer, • Engenheiro de software, • Programadores, • Character/Level design, • Escritores, • Roteristas, • Músicos, • ... e varios outros profissionais.

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

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

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

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

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

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

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

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

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

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

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

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

More Related