Inteligência Computacional para Jogos Eletrônicos

Slides:



Advertisements
Apresentações semelhantes
A importância e o poder da informação.
Advertisements

IA Importância da IA em jogos Aplicações.
Vicente Vieira Filho Orientadora: Patrícia Tedesco
INTELIGÊNGIA COMPUTACIONAL
Jogos em Inteligência Artificial
SAD - SISTEMA DE APOIO À DECISÃO Prof. Wagner Andrade
Inteligência Artificial Alex F. V. Machado. Tecnologia de Processamento da Informação que envolve processos de raciocínio, aprendizado e percepção. Winston.
1 Agentes Inteligentes Alex F. V. Machado. 2 Um programa de IA pode ser visto como um Agente Racional Plano da aula O que é um Agente Racional (inteligente)?
Introdução à Computação - Jorge Macêdo
Inteligência Artificial
IA em jogos modelagem de comportamento de personagens
FACENS – Engenharia da Computação Inteligência Artificial
Inteligência Artificial
Inteligência Artificial
FACENS – Engenharia da Computação Inteligência Artificial
INTELIGÊNCIA TECNOLÓGICA Aplicações desenvolvidas no ITA
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
Programação de Jogos Eletrônicos - TCC
Componentes de um jogo, desenvolvimentoComponentes de um jogo, desenvolvimento.
Otimização Prof. Benedito C. Silva IRN UNIFEI
FACENS – Engenharia da Computação Inteligência Artificial
Informática Teórica Engenharia da Computação
INTELIGÊNCIA ARTIFICIAL
IFSul – Campus Venâncio Aires
Inteligência Artificial Aplicada a Problemas de Tomada de Decisão
Game Engines.
Redes Neurais Prof. Alex F. V. Machado.
Geekontro II.  Histórico  Livros  Tipos da I.A.  Aplicação Real  Futuro da I.A.  Turing  Filmes  I.A. nos Games.
Análise e Projeto de Sistemas
INF 1771 – Inteligência Artificial
Tópicos especiais em controle inteligente e distribuído Professor: Jorge Dantas de Melo Rafael Marrocos Magalhães.
Inteligência Artificial em Jogos
Agentes em Jogos. Equipe Renato Ferreira Renato Ferreira Saulo Pessoa Saulo Pessoa Jobson Ronan Jobson Ronan Guilherme Oliveira Guilherme Oliveira Henrique.
Marcílio C. P. de Souto DIMAp/UFRN
BOTs Multiplayer Thiago Jamir e Silva – 20/07/2007.
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Classes e Objetos em Java.
DISCIPLINA INFORMÁTICA MÉDICA Prof. Eliane
Inteligência Artificial em Jogos Eletrônicos
SOFTWARE EDUCACIONAL CLASSIFICAÇÃO
Sistemas Baseados em Aprendizado (Aprendizado de Máquina)
Conceitos básicos da gestão da informação nas organizações
Programação Evolutiva e Lógica Fuzzy
METODOLOGIA, MÉTODOS E FERRAMENTAS
Agentes Inteligentes Vicente Vieira Filho. Conversa de Hoje Introdução Objetivos (Benchmarks em SMA) Trabalhos Relacionados Solução Conclusão Trabalhos.
UMA ESTRATÉGIA DE REDE NEURAL APLICADA À GAME ESTILO BEAT’EM UP Mendes,T.M. e Almeida, A.G. RESUMO O projeto consiste no desenvolvimento de um jogo 2D.
Como Melhorar a Tomada de Decisão
Desenvolvimento de Software Dirigido a Modelos
DESCOBRINDO O RPG.
Inteligência Artificial I
Busca Competitiva Disciplina: Inteligência Artificial
Sistemas de Informações em Recursos Humanos
Inteligência Artificial
Introdução à Inteligência Artificial Prof. Cláudio M. N. A. Pereira.
Inteligência Artificial
Disciplina: Administração e Finanças Prof. Ms Marcos A. Ribeiro
Inteligência Artificial
INTELIGÊNCIA ARTIFICIAL Grupo: Amora Figueiredo Érika Diniz
Computação Evolutiva Nome dado ao estudo de algoritmos cuja inspiração é o processo de evolução natural das espécies. Origem: trabalho de um pesquisador.
O Modelo GOMS Fornece um modelo de Engenharia para a performance humana, capaz de produzir predições a priori ou em um estágio anterior ao desenvolvimento.
Inteligência artificial (IA)
Rafael Oliz. IA Acadêmica X Game IA IA Acadêmica – Solução de problemas complexos(Ex: Reconhecimento de Padrões com visão computacional) Game IA – Proporcionar.
Máquinas de estados finitos
O INÍCIO CIÊNCIA DA COMPUTAÇÃO por: André Aparecido da Silva Disponível em:
Módulo I – Softwares: Linguagens de Programação Prof.: Rogério Morais.
Profa. Dra. Marta Valentim UNESP
ADMINISTRAÇÃO INTERDISCIPLINAR
Inteligência Artificial em Jogos
Transcrição da apresentação:

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?

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 Não-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.

Pesquisado em 1 de Agosto de 2011 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# 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 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).