SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
Técnicas de Inteligência Artificial em Jogos Eletrônicos
Roger Ritter1
, Guilherme Daronch Taufer²
Instituto de Ciências Exatas e Geociências – Universidade de Passo Fundo (UPF)
Caixa Postal 611 – 99.001-970 – Passo Fundo – RS – Brasil
rogerritter@upf.br¹, 110532@upf.br²
Abstract. Since many years ago, the usage of artificial intelligence in
softwares are increasing. Due to this, the curiosity make us know better how
these practices function at the attractive world of games. How there are
several techniques of artificial intelligence used by game developers, we chose
to study and describe in this article just the techniques more used today.
Resumo. Há muitos anos a utilização de inteligência artificial em softwares
vem crescendo. Devido a isso, a curiosidade nos leva a conhecer melhor como
funcionam essas práticas num mundo tão atraente para nós jogadores, que é o
mercado dos jogos eletrônicos. Como existem diversas técnicas de
inteligência artificial utilizadas pelos desenvolvedores de jogos, escolhemos
estudar e expor nesse artigo apenas algumas das técnicas mais
implementadas em jogos eletrônicos atualmente.
1. Introdução
Em jogos digitais, o uso de técnicas de Inteligência Artificial (I.A.) vem se fazendo cada
vez mais necessário, e sendo até mesmo indispensável em certos casos. Estas técnicas
podem ser aplicadas em diferentes tipos de tarefas: resolução de problemas (puzzles,
brain-teasers), planejamento de tarefas, planejamento de trajetórias, controle de agentes
autônomos (NPCs – Non-Player Characters), entre outras diversas aplicações.
Crocomo (2006) tem argumentado que a indústria do videogame vem fundindo
tecnologia e criatividade para produzir alguns dos melhores entretenimentos do século
21. Nos últimos anos, muita ênfase foi dada ao realismo dos jogos eletrônicos, fazendo
surgir uma variedade de motores gráficos, físicos, de áudio e de Inteligência Artificial
(IA). Grandes esforços foram empregados principalmente na ambientação gráfica
utilizada. Sweetser (2002) disse que o próximo foco no mercado de jogos seria a
elaboração de personagens que se comportam de forma realista e podem aprender e se
adaptar, ao invés de personagens com maiores resoluções e com mais frames por
segundo.
Bittencourt (2006) destaca que para poder integrar técnicas de I.A. em jogos
digitais, se faz necessária a inclusão de um novo componente em um motor de jogo
(engine), além dos já tradicionais componentes destas Engines de Jogos: motores
gráficos, de áudio, de rede, de física, de controle de dispositivos de E/S (interação). Este
componente é o motor de Inteligência Artificial – I.A
2. Inteligência Artificial em Jogos
A utilização de Inteligência artificial em jogos não é novidade, segundo Crocomo
(2006) o seu uso começou em jogos clássicos como xadrez ou jogo da velha, porém
atualmente é difícil encontrar um game que não utilize alguma técnica de IA em seu
código.
Nos últimos 25 anos, os esforços empreendidos pela indústria de jogos se
concentraram principalmente na tecnologia gráfica produzida, permitindo a criação de
mundos realistas com gráficos 3D e avançadas engines físicas. No entanto, Fairclough
(2001) também destaca que sofisticadas técnicas de Inteligência Artificial em jogos
estão começando a ser utilizadas apenas atualmente.
As técnicas de Inteligência Artificial, segundo Bittencourt (2006), exploradas
pela indústria de jogos são muito simples quando comparado com as técnicas
exploradas no meio acadêmico e utilizadas em aplicações industriais. Um dos fatores
que leva a uma menor exploração de técnicas é a falta de tempo disponibilizado ao
desenvolvimento de um jogo digital. Muitas vezes é aplicado IA somente após algumas
partes do jogo já terem sido implementadas, como, por exemplo, os motores gráficos.
2.1 - Técnicas de IA utilizadas nos jogos digitais
Correa e Pastor (2012) frisa que recentemente a indústria de jogos digitais passou a
pesquisar técnicas não só em seus ambientes gráficos, mas também, no desempenho e
nos movimentos e estratégias calculadas pelos personagens especialmente em jogos
Role-Playing Game (RPG) e Massive Multiplayer Online Role-Playing Game
(MMORPG).
Um exemplo para que isto acontecesse é o jogo de Role-Playing Game (RPG)
Starcraft II desenvolvido pela Blizzard (2010). Quando escolhido o modo difícil, se joga
contra a Inteligência Artificial, e esta tem uma grande vantagem contra o jogador
humano, já que, pode fazer cálculos rápidos e ter um tempo de resposta melhor que o
player. Porém, uma desvantagem neste caso é que os movimentos dos personagens
artificiais são previsíveis, isso abre a chance de estudar o comportamento de seu inimigo
e definir uma estratégia para vencê-lo. Com isso, o mesmo pode ser derrotado
facilmente.
Com base neste caso, a indústria de jogos digitais pretende pesquisar técnicas
com o objetivo de eliminar a previsibilidade de jogadores humanos, analisando os
movimentos do oponente e realizando movimentos da Inteligência Artificial de acordo.
Crocomo (2006) salienta que a evolução das técnicas utilizadas em jogos
eletrônicos é evidente nos últimos anos, tornando a experiência muito mais imersiva e
trazendo jogos cada vez melhores.
2.1.1 - Máquinas de Estado Finito
Segundo Fairclough (2001) a técnica de Máquinas de Estado Finito (Finite State
Machines – FSM) é uma das técnicas mais utilizadas na implementação de jogos, pois é
baseada em regras, tem baixa complexidade e na maioria das vezes, é utilizada pelos
desenvolvedores por ser de fácil gerenciamento.
As Máquinas de Estado Finito permitem que sejam armazenados tanto os
estados dos personagens do jogo, como do ambiente. Desta forma, torna-se possível
gerenciar tanto o cenário do jogo quanto seus personagens.
Segundo Crocomo (2006) a ideia principal desta técnica é dividir o jogo em
estados, contendo a sua transição para outros estados de acordo com uma determinada
condição, baseadas no comportamento do jogo.
Figura 1. Tabela de transição de estados.
No entanto, por ser determinística, esta técnica torna previsível a estratégia
utilizada pelo computador, como no exemplo citado anteriormente por Correa e Pastor
(2012).
As Máquinas de Estado Finito, quando construídas em maior número, podem ser
organizadas em hierarquia. Denominada como Hierarquia de Máquinas de Estado Finito
(Hierarchial Finite State Machines – HFSM), serve para implementações um pouco
mais complexas, no qual a função de transição de estados recebe as entradas e o estado
atual, que retorna o conjunto de saídas e um novo estado que passa a ser o estado atual.
Figura 2. Hierarquia de máquinas de estado finito.
2.1.2 - Scriptings
Segundo Crocomo (2006) Scripting é uma linguagem de programação de alto nível,
criada para simplificar uma tarefa complexa para um programa em particular, onde o
próprio jogador pode programar o comportamento de seus personagens. Muito popular
entre os desenvolvedores de jogos, tem sua fama devido ao fato de utilizar scripts fáceis
de implementar e entender, até mesmo por usuários sem experiência em programação.
Geralmente, os scripts são criados de forma a lembrar uma linguagem natural, como o
inglês, por exemplo.
Scripting podem ser utilizados em várias partes do jogo por diferentes pessoas:
● O programador pode definir nos scripts os comportamentos a serem tomados
pelos personagens do jogo.
● O roteirista pode utilizar scripts para implementar suas histórias.
● Se o jogo for exposto ao público, os próprios jogadores podem utilizar scripts
para personalizar seus personagens, respeitando os limites definidos pelo
programador.
● Os artistas gráficos usam scripts para automatizar processos de animação com
grande quantidade de repetição.
Esta grande quantidade de aplicações só é possível porque a linguagem scripting
é normalmente separada dos dados do jogo. Desta forma, é criado um ambiente seguro
para que não programadores realizem mudanças no programa sem causar problemas.
2.1.3 - Lógica Nebulosa ou Lógica Fuzzy
A Lógica Nebulosa, também conhecida como Lógica Fuzzy, foi introduzida em 1965,
pelo matemático iraniano Lofti Asker Zadeh, [ZADEH, 1976]. Essa lógica seria um
primeiro passo no sentido de se programar e armazenar conceitos vagos em
computadores, tornando possível a produção de cálculos com informações imprecisas, a
exemplo do que faz o ser humano.
A lógica Fuzzy não deixa de ser uma extensão da lógica booleana, segundo
Pedrycz (2007), pois admite valores lógicos intermediários entre o FALSO (0) e o
VERDADEIRO (1). Por exemplo, utilizar o valor intermediário 0,5. Isto significa que
um valor lógico difuso é um valor qualquer no intervalo de valores entre 0 e 1.
Nos jogos eletrônicos o papel desta técnica é normalmente limitado a complexos
comandos condicionais. É utilizada na seleção de comportamentos e tomada de decisão.
Esta técnica pode permitir, por exemplo, o cálculo de um “nível de medo” de um
personagem com relação a um jogador.
2.1.4 - Floking
Crocomo (2006), destaca que a técnica de floking implementa ao programa a opção de
simular o comportamento natural de um grupo de indivíduos, tais como, o movimento
de um cardume de peixes ou até mesmo o voo de um bando de pássaros. É uma técnica
bastante utilizada para simular ambientes com alto grau de realismo, explorados pelo
jogador.
Desenvolvida como uma alternativa a gerar scripts para um número grande de
indivíduos, na técnica de flocking cada personagem navega de acordo com sua
percepção e as leis da física que governam o ambiente. Nesta técnica as informações
não são mantidas de uma etapa para outra, ou seja, não existem estados, de forma a
visar à economia de memória. A cada novo ciclo o personagem possui uma nova
percepção do ambiente, através do qual realiza uma ação.
Muito utilizada em jogos de primeira pessoa, como Half-life e Unreal, para gerar
comportamentos dos grupos de personagens, e em jogos de estratégia em tempo real,
como Enemy Nations, para gerar movimentação realista dos exércitos. Embora esta
técnica tenha aplicações bem limitadas, é muito simples e eficiente para gerar
movimentações realistas de grupos de indivíduos.
2.1.5 - Árvores de Decisão
Segundo Sweetser (2002) a técnica de aprendizado através de árvores de decisão é
inserida em jogos onde são necessários predição e classificação. Quando utilizada para
prever uma sequência de ações traz um bom resultado.
O uso desta técnica permite um personagem aprender com o jogador ou com
outros personagens no desenrolar do jogo. As experiências armazenadas no decorrer do
jogo com o personagem são organizadas no formato de uma árvore, a partir da entropia,
que é uma medida de desordem dos dados armazenados. Com uma estrutura fácil de
serem compreendidas, as árvores de decisão são robustas a ruídos e possuem um
aprendizado eficiente.
2.1.6 - Redes Neurais Artificiais
As Redes Neurais Artificiais (RNA), segundo Haykin (2001), são inspiradas em
sistemas biológicos e possuem uma grande quantidade de aplicações que utilizam
tomadas de decisões, processamento de informações e otimização.
Esta técnica é mais utilizada no aprendizado off-line de jogos, treinando os
parâmetros de controle dos personagens durante a etapa de desenvolvimento do jogo.
Em jogos on-line ainda não tem grande utilização por parte dos desenvolvedores, pois o
uso desta técnica pode gerar comportamentos não aceitáveis para seus personagens.
Por possuir diversas arquiteturas diferentes para resolver problemas diferentes,
não é uma técnica simples de ser implementada, pois necessita de muitos ajustes em
seus parâmetros.
Nos jogos que utilizam redes neurais, o objetivo é que o computador aprenda a
imitar o comportamento do jogador.
2.1.7 - Algoritmos Evolutivos
Os Algoritmos Evolutivos (AEs), segundo Sweetser (2002), tem por objetivo adaptar as
estratégias utilizadas pelo computador em relação às estratégias utilizadas pelo usuário,
ou seja, fazer com que o jogo apresente um grau de adaptabilidade em relação às ações
dos jogadores e às variações do ambiente de jogo.
Apesar de existir diversas aplicações para Algoritmos evolutivos, existe uma
grande resistência de serem utilizadas pelos desenvolvedores de jogos, pois alguns
autores afirmam que está técnica é lenta e (assim como a técnica de Redes Neurais)
permite a obtenção de comportamentos “não aceitáveis” durante o processo de
aprendizado dos personagens. No entanto, é reconhecido que AEs possuem o potencial
para atuar em áreas nas quais técnicas tradicionais de IA apresentam deficiência.
Yao (2000) frisa que essa técnica vem sendo utilizada desde os anos 80 para
evoluir estratégias de jogos como para o jogo ‘Iterated Prisoner’s Dilemma’ de grande
importância para economistas, cientistas sociais e cientistas da computação.
3. Exemplos de jogos digitais que utilizam técnicas IA
Sweetser (2002), cita técnicas de IA utilizadas em jogos:
Tabela 1. Técnicas utilizadas nos jogos eletrônicos.
TÉCNICA JOGOS
Máquina de Estado Finito
- Age of Empires
- Half Life
- Doom
- Quake
Scripting - Black &White
- Unreal
- Dark Reign
- baldur’s Gate
Lógica Nebulosa ou Lógica Fuzzy
- Swat 2
- Call to Power
- Close Combat
- The Sims
Árvores de Decisão - Black & White
Flocking
- Half Life
- Unreal
- Enemy Nations
Redes Neurais
- BC3K
- Creatures
- Heavy Gear
Algoritmos Evolutivos - Creatures
- Returm to Fire II
4. Vantagens, Desvantagens e aplicação das Técnicas de IA em Jogos
Digitais
Correa e Pastor (2012) destaca que as técnicas para jogos em geral fazem parte de uma
vertente que defende o papel da IA como o de simular um comportamento próximo do
humano, não como em outros ambientes com objetivos, por exemplo, de otimização
buscam atingir níveis de decisão e velocidade de raciocínio muito acima de um ser
humano comum. A inteligência artificial em jogos tem por princípio maximizar a
diversão emulando um jogador inteligente na medida certa, demonstrando fraquezas
propositais.
Para que cada técnica seja aplicada é importante, inicialmente, conhecer a
aplicabilidade destinada à técnica, juntamente a suas vantagens e desvantagens, segundo
Crocomo (2006) as técnicas possuem as seguintes aplicabilidades, seguidas de
vantagens e desvantagens:
Tabela 2. Vantagens, desvantagens e aplicação das técnicas.
Vantagens Desvantagens Aplicações
Máquinas de Estado
Finito
É simples, pode ser
utilizada em conjunto
com outras técnicas,
computacionalmente
barata e com grande
capacidade de
codificação.
Tem uma escalabilidade
ruim, pode ser
fracamente estruturada,
é determinística e tem a
necessidade de
antecipar todas as
situações.
As máquinas de estado
finito são destinadas
basicamente ao
gerenciamento do
universo do jogo,
objetos e/ou
personagens.
Scripting É simples, não
necessariamente tem
uso apenas por
programadores e tem
um ambiente seguro de
implementação.
É determinística e por
isto, tem a necessidade
de antecipar todas as
situações.
Scripting pode
facilmente gerenciar
eventos e automatizar
tarefas além de poder
analisar a IA do
oponente e construir
árvores de conversa.
Lógica Nebulosa Resolve problemas não
lineares, tem muita
flexibilidade, quando o
conhecimento do
especialista se torna
necessário e apresenta
uma alternativa para
quando não há uma
solução simples.
É um pouco complicada
de se construir e não é
uma alternativa boa
quando se existe uma
solução simples.
A lógica nebulosa tem
como aplicação a
tomada de decisão,
filtro para entrada/saída
de dados e seleção de
comportamentos, além
de, algumas vezes,
controlar a situação
emocional dos
personagens juntamente
com sua saúde.
Flocking É realista e puramente
reativa, além de
requerer pouca
memória.
Flocking tem suas
aplicações limitadas.
Flocking é
recomendado para o
controle de movimento
de unidades e de grupos
de animais/monstros
Árvores de Decisão É robusta a ruídos com
uma estrutura fácil de
compreender e com um
algoritmo de
treinamento/avaliação
eficiente
É necessário ajuste de
parâmetros
Árvores de decisão
podem ser utilizadas na
classificação, no
aprendizado e na
predição.
Redes Neurais É flexível, não
determinística e não
linear.
É necessário o ajuste de
parâmetros, se trata de
uma técnica complicada
no qual exige muitos
recursos do computador
e possui ainda uma
difícil escolha de
variáveis.
As Redes Neurais tem
como aplicação o
reconhecimento de
padrões e o controle de
comportamento,
juntamente com a
predição, classificação
e memória.
Algoritmos Evolutivos Tens um método de
busca robusto e efetivo
em espaços de busca
grandes, complexos e
pouco compreendidos,
não linear e não
determinístico.
Exige o uso intensivo
de recursos do
computador e tem a
necessidade de ajuste
de parâmetros.
Os algoritmos
evolutivos são
utilizados em
otimização e
aprendizado, no
desenvolvimento de
estratégias para jogos,
na evolução de
comportamento e
encontrar caminhos a
serem percorridos.
5. Conclusões
Com este estudo foi possível conhecer e entender melhor a utilização das técnicas de
Inteligência Artificial em jogos eletrônicos. Foi possível compreender que apesar de
ainda não serem utilizadas em todos os tipos de jogos, num futuro próximo, a tendência
é que será ampliada a utilização de IA em jogos eletrônicos. Todas as técnicas estudadas
têm muito a contribuir e tornar cada vez mais reais as ações tomadas pelos personagens
dos games, o que atrai cada vez mais pessoas a se entreter e se beneficiar com essas
aplicações.
6. Referências
BITTENCOURT, J.R.(2006) “Motores de Jogos para Criação de Jogos Digitais”, In:
Vescola Regional de Informática de Minas Gerais, Belo Horizonte.
CROCOMO, M. K. (2006) “Desenvolvimento de um Ecossistema Artificial Utilizando
Algoritmos Evolutivos como Ambiente de Teste para Sistemas Multi-Robô”.
FAIRCLOUGH, C.(2001) “Research Directions for AI in Computer Games”, In: AICS.
CORREA, D. B., PASTOR, D. T. (2012) “A evolução das técnicas de Inteligência
Artificial”, In: Proceeding of SBGames.
ZADEH, L. A. (1976) “A Fuzzy-Algorithmic Approach to the Definition of Complex or
Imprecise Concepts”.
PEDRYCZ, W.(2007) “Fuzzy Systems Engineering : Toward Human-Centric
Computing”, In: Wiley/IEEE Press.
SWEETSER, P. (2002) “Current Al in Games: A review”, In: University of
Queensland.
HAYKIN, S. (2001)“Redes Neurais: Princípios e Prática.” In: Bookman.
YAO, X. (2000) “Genetic Algorithms and Evolutionary Games.” In: Cambridge
University Press.

Contenu connexe

Tendances

Aula Pronta - Gerenciamento de Projetos
Aula Pronta - Gerenciamento de ProjetosAula Pronta - Gerenciamento de Projetos
Aula Pronta - Gerenciamento de ProjetosAyslanAnholon
 
Modelo de Declaracao do escopo do projeto
Modelo de Declaracao do escopo do projetoModelo de Declaracao do escopo do projeto
Modelo de Declaracao do escopo do projetoFernando Palma
 
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOK
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOKAula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOK
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOKDaniela Brauner
 
Unidade 1 níveis de instalações
Unidade 1   níveis de instalaçõesUnidade 1   níveis de instalações
Unidade 1 níveis de instalaçõesDaniel Moura
 
Declaração de escopo MODELO
Declaração de escopo MODELODeclaração de escopo MODELO
Declaração de escopo MODELOSuzana Sarmento
 
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...Caio Teixeira de Farias
 
Análise de Prontidão e Indicadores na Gestão do Portfolio
Análise de Prontidão e Indicadores na Gestão do Portfolio Análise de Prontidão e Indicadores na Gestão do Portfolio
Análise de Prontidão e Indicadores na Gestão do Portfolio Maria Angelica Castellani
 
Apresentacao microsoft project
Apresentacao microsoft projectApresentacao microsoft project
Apresentacao microsoft projectFranklin G. Mendes
 
ProjectLibre 1.5 - Aula 1 - Sobre a iniciativa OpenSource.
ProjectLibre 1.5 - Aula 1 - Sobre a iniciativa OpenSource.ProjectLibre 1.5 - Aula 1 - Sobre a iniciativa OpenSource.
ProjectLibre 1.5 - Aula 1 - Sobre a iniciativa OpenSource.Hezequias Vasconcelos
 
Gerenciamento de projetos - Iniciação
Gerenciamento de projetos - IniciaçãoGerenciamento de projetos - Iniciação
Gerenciamento de projetos - IniciaçãoPaulo Junior
 
Metodologia para Projeto de Design
Metodologia para Projeto de DesignMetodologia para Projeto de Design
Metodologia para Projeto de DesignMarcio Duarte
 
Curso de gestão de projetos & ms project
Curso de gestão de projetos & ms projectCurso de gestão de projetos & ms project
Curso de gestão de projetos & ms projectSilas Serpa
 
Pp1 f8 02 - projeto de produtos, serviços e processos
Pp1 f8   02 - projeto de produtos, serviços e processosPp1 f8   02 - projeto de produtos, serviços e processos
Pp1 f8 02 - projeto de produtos, serviços e processosLuciana C. L. Silva
 

Tendances (20)

Aula Pronta - Gerenciamento de Projetos
Aula Pronta - Gerenciamento de ProjetosAula Pronta - Gerenciamento de Projetos
Aula Pronta - Gerenciamento de Projetos
 
Modelo de Declaracao do escopo do projeto
Modelo de Declaracao do escopo do projetoModelo de Declaracao do escopo do projeto
Modelo de Declaracao do escopo do projeto
 
Gerenciamento de custos
Gerenciamento de custosGerenciamento de custos
Gerenciamento de custos
 
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOK
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOKAula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOK
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOK
 
Unidade 1 níveis de instalações
Unidade 1   níveis de instalaçõesUnidade 1   níveis de instalações
Unidade 1 níveis de instalações
 
Elaboração de projetos sociais objetivos
Elaboração de projetos sociais objetivosElaboração de projetos sociais objetivos
Elaboração de projetos sociais objetivos
 
Declaração de escopo MODELO
Declaração de escopo MODELODeclaração de escopo MODELO
Declaração de escopo MODELO
 
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
Apresentacao TCC - TCC - Desenvolvimento aplicativo para o ROS (Robotic Opera...
 
Análise de Prontidão e Indicadores na Gestão do Portfolio
Análise de Prontidão e Indicadores na Gestão do Portfolio Análise de Prontidão e Indicadores na Gestão do Portfolio
Análise de Prontidão e Indicadores na Gestão do Portfolio
 
Apresentacao microsoft project
Apresentacao microsoft projectApresentacao microsoft project
Apresentacao microsoft project
 
ProjectLibre 1.5 - Aula 1 - Sobre a iniciativa OpenSource.
ProjectLibre 1.5 - Aula 1 - Sobre a iniciativa OpenSource.ProjectLibre 1.5 - Aula 1 - Sobre a iniciativa OpenSource.
ProjectLibre 1.5 - Aula 1 - Sobre a iniciativa OpenSource.
 
Gerenciamento de projetos - Iniciação
Gerenciamento de projetos - IniciaçãoGerenciamento de projetos - Iniciação
Gerenciamento de projetos - Iniciação
 
Gestão de Projetos
Gestão de ProjetosGestão de Projetos
Gestão de Projetos
 
Inspeções em desenvolvimento de software
Inspeções em desenvolvimento de softwareInspeções em desenvolvimento de software
Inspeções em desenvolvimento de software
 
Atividade objetivos
Atividade objetivosAtividade objetivos
Atividade objetivos
 
Aula 2 ppm
Aula 2 ppm Aula 2 ppm
Aula 2 ppm
 
Metodologia para Projeto de Design
Metodologia para Projeto de DesignMetodologia para Projeto de Design
Metodologia para Projeto de Design
 
Planificação
PlanificaçãoPlanificação
Planificação
 
Curso de gestão de projetos & ms project
Curso de gestão de projetos & ms projectCurso de gestão de projetos & ms project
Curso de gestão de projetos & ms project
 
Pp1 f8 02 - projeto de produtos, serviços e processos
Pp1 f8   02 - projeto de produtos, serviços e processosPp1 f8   02 - projeto de produtos, serviços e processos
Pp1 f8 02 - projeto de produtos, serviços e processos
 

En vedette

Técnicas de inteligência artificial em jogos eletrônicoss
Técnicas de inteligência artificial em jogos eletrônicossTécnicas de inteligência artificial em jogos eletrônicoss
Técnicas de inteligência artificial em jogos eletrônicossRoger Ritter
 
Inteligência Artificial em Jogos Eletrônicos
Inteligência Artificial em Jogos EletrônicosInteligência Artificial em Jogos Eletrônicos
Inteligência Artificial em Jogos EletrônicosAndré Kishimoto
 
Artigo inteligencia artifical-jogos
Artigo inteligencia artifical-jogosArtigo inteligencia artifical-jogos
Artigo inteligencia artifical-jogosFernando Vargas
 
Inteligência Artificial - Aula15 - Algoritmos Genéticos
Inteligência Artificial - Aula15 - Algoritmos GenéticosInteligência Artificial - Aula15 - Algoritmos Genéticos
Inteligência Artificial - Aula15 - Algoritmos GenéticosRafael Pinto
 
Logica fuzzy Conceitos e Aplicações
Logica fuzzy   Conceitos e AplicaçõesLogica fuzzy   Conceitos e Aplicações
Logica fuzzy Conceitos e AplicaçõesToni Esteves
 
Visão artificial
Visão artificialVisão artificial
Visão artificialPedrolobo8
 
Inteligência Artificial Aplicada na SC&L - Thiago Richter - Palestra 2009 Pt Br
Inteligência Artificial Aplicada na SC&L - Thiago Richter - Palestra 2009 Pt BrInteligência Artificial Aplicada na SC&L - Thiago Richter - Palestra 2009 Pt Br
Inteligência Artificial Aplicada na SC&L - Thiago Richter - Palestra 2009 Pt BrThiago Richter
 
Seminario fuzzy
Seminario fuzzySeminario fuzzy
Seminario fuzzyiaudesc
 
INFUZZY - FERRAMENTA PARA DESENVOLVIMENTO DE APLICAÇÕES DE SISTEMAS DIFUSOS
INFUZZY - FERRAMENTA PARA  DESENVOLVIMENTO DE APLICAÇÕES  DE SISTEMAS DIFUSOSINFUZZY - FERRAMENTA PARA  DESENVOLVIMENTO DE APLICAÇÕES  DE SISTEMAS DIFUSOS
INFUZZY - FERRAMENTA PARA DESENVOLVIMENTO DE APLICAÇÕES DE SISTEMAS DIFUSOSEderson Posselt
 
Inteligência Artificial em Jogos Eletrônicos
Inteligência Artificial em Jogos EletrônicosInteligência Artificial em Jogos Eletrônicos
Inteligência Artificial em Jogos EletrônicosErisvaldo Junior
 
Representação do conhecimento (rc)
Representação do conhecimento (rc)Representação do conhecimento (rc)
Representação do conhecimento (rc)iaudesc
 
Lógica Fuzzy aplicada à Sistemas de Apoio a Decisão
Lógica Fuzzy aplicada à  Sistemas de Apoio a DecisãoLógica Fuzzy aplicada à  Sistemas de Apoio a Decisão
Lógica Fuzzy aplicada à Sistemas de Apoio a DecisãoOtávio Calaça Xavier
 
Inteligencia Artificial - Linguistica
Inteligencia Artificial - LinguisticaInteligencia Artificial - Linguistica
Inteligencia Artificial - LinguisticaToni Esteves
 
Conceitos inteligencia artificial
Conceitos inteligencia artificialConceitos inteligencia artificial
Conceitos inteligencia artificiallucasgodines
 
Inteligência artificial aplicada a jogos
Inteligência artificial aplicada a jogosInteligência artificial aplicada a jogos
Inteligência artificial aplicada a jogosRafael Sakurai
 
Inteligência Artificial e suas aplicações - A experiência do TECPAR
Inteligência Artificial e suas aplicações - A experiência do TECPARInteligência Artificial e suas aplicações - A experiência do TECPAR
Inteligência Artificial e suas aplicações - A experiência do TECPARBruno Campagnolo
 

En vedette (20)

Técnicas de inteligência artificial em jogos eletrônicoss
Técnicas de inteligência artificial em jogos eletrônicossTécnicas de inteligência artificial em jogos eletrônicoss
Técnicas de inteligência artificial em jogos eletrônicoss
 
Técnicas de ia
Técnicas de iaTécnicas de ia
Técnicas de ia
 
Inteligência Artificial em Jogos Eletrônicos
Inteligência Artificial em Jogos EletrônicosInteligência Artificial em Jogos Eletrônicos
Inteligência Artificial em Jogos Eletrônicos
 
Artigo inteligencia artifical-jogos
Artigo inteligencia artifical-jogosArtigo inteligencia artifical-jogos
Artigo inteligencia artifical-jogos
 
Inteligência Artificial - Aula15 - Algoritmos Genéticos
Inteligência Artificial - Aula15 - Algoritmos GenéticosInteligência Artificial - Aula15 - Algoritmos Genéticos
Inteligência Artificial - Aula15 - Algoritmos Genéticos
 
Logica fuzzy Conceitos e Aplicações
Logica fuzzy   Conceitos e AplicaçõesLogica fuzzy   Conceitos e Aplicações
Logica fuzzy Conceitos e Aplicações
 
Visão artificial
Visão artificialVisão artificial
Visão artificial
 
Inteligência Artificial Aplicada na SC&L - Thiago Richter - Palestra 2009 Pt Br
Inteligência Artificial Aplicada na SC&L - Thiago Richter - Palestra 2009 Pt BrInteligência Artificial Aplicada na SC&L - Thiago Richter - Palestra 2009 Pt Br
Inteligência Artificial Aplicada na SC&L - Thiago Richter - Palestra 2009 Pt Br
 
Seminario fuzzy
Seminario fuzzySeminario fuzzy
Seminario fuzzy
 
Aula menus
Aula menusAula menus
Aula menus
 
Aula3 input
Aula3   inputAula3   input
Aula3 input
 
INFUZZY - FERRAMENTA PARA DESENVOLVIMENTO DE APLICAÇÕES DE SISTEMAS DIFUSOS
INFUZZY - FERRAMENTA PARA  DESENVOLVIMENTO DE APLICAÇÕES  DE SISTEMAS DIFUSOSINFUZZY - FERRAMENTA PARA  DESENVOLVIMENTO DE APLICAÇÕES  DE SISTEMAS DIFUSOS
INFUZZY - FERRAMENTA PARA DESENVOLVIMENTO DE APLICAÇÕES DE SISTEMAS DIFUSOS
 
Inteligência Artificial em Jogos Eletrônicos
Inteligência Artificial em Jogos EletrônicosInteligência Artificial em Jogos Eletrônicos
Inteligência Artificial em Jogos Eletrônicos
 
Representação do conhecimento (rc)
Representação do conhecimento (rc)Representação do conhecimento (rc)
Representação do conhecimento (rc)
 
Lógica Fuzzy aplicada à Sistemas de Apoio a Decisão
Lógica Fuzzy aplicada à  Sistemas de Apoio a DecisãoLógica Fuzzy aplicada à  Sistemas de Apoio a Decisão
Lógica Fuzzy aplicada à Sistemas de Apoio a Decisão
 
Inteligencia Artificial - Linguistica
Inteligencia Artificial - LinguisticaInteligencia Artificial - Linguistica
Inteligencia Artificial - Linguistica
 
Conceitos inteligencia artificial
Conceitos inteligencia artificialConceitos inteligencia artificial
Conceitos inteligencia artificial
 
Lingüística e inteligencia artificial
Lingüística e inteligencia artificialLingüística e inteligencia artificial
Lingüística e inteligencia artificial
 
Inteligência artificial aplicada a jogos
Inteligência artificial aplicada a jogosInteligência artificial aplicada a jogos
Inteligência artificial aplicada a jogos
 
Inteligência Artificial e suas aplicações - A experiência do TECPAR
Inteligência Artificial e suas aplicações - A experiência do TECPARInteligência Artificial e suas aplicações - A experiência do TECPAR
Inteligência Artificial e suas aplicações - A experiência do TECPAR
 

Similaire à Técnicas de IA em jogos

Framework de GameAnalytics para Jogos Moveis 2D Tipo Plataforma
Framework de GameAnalytics para Jogos Moveis 2D Tipo PlataformaFramework de GameAnalytics para Jogos Moveis 2D Tipo Plataforma
Framework de GameAnalytics para Jogos Moveis 2D Tipo PlataformaBeatriz Vaz Pinto
 
SBgames09 Time2Play and TREG
SBgames09 Time2Play and TREGSBgames09 Time2Play and TREG
SBgames09 Time2Play and TREGKatia Canepa Vega
 
Palestra Introdução ao Game Design
Palestra Introdução ao Game DesignPalestra Introdução ao Game Design
Palestra Introdução ao Game DesignLeonardo Zamprogno
 
Artigo tecpar ráfagan - Pesquisando a viabilidade de utilização de engin...
Artigo tecpar   ráfagan - Pesquisando a viabilidade de utilização de engin...Artigo tecpar   ráfagan - Pesquisando a viabilidade de utilização de engin...
Artigo tecpar ráfagan - Pesquisando a viabilidade de utilização de engin...Ráfagan Abreu
 
A Ciência da Computação e os Jogos Eletrônicos
A Ciência da Computação e os Jogos EletrônicosA Ciência da Computação e os Jogos Eletrônicos
A Ciência da Computação e os Jogos EletrônicosIngrid Mendes
 
Frameworks Formais de Game Design.
Frameworks Formais de Game Design.Frameworks Formais de Game Design.
Frameworks Formais de Game Design.Pedro Emil Freme
 
Realidade aumentada com ia
Realidade aumentada com iaRealidade aumentada com ia
Realidade aumentada com iaAdriana Euzebio
 
Desenvolvimento de jogos e ogre 3D - Palestra Fatec Santos
Desenvolvimento de jogos e ogre 3D - Palestra Fatec SantosDesenvolvimento de jogos e ogre 3D - Palestra Fatec Santos
Desenvolvimento de jogos e ogre 3D - Palestra Fatec Santosjonathanblacknight
 
Palestra - Introdução ao desenvolvimento de Jogos
Palestra - Introdução ao desenvolvimento de JogosPalestra - Introdução ao desenvolvimento de Jogos
Palestra - Introdução ao desenvolvimento de Jogosjuliocoopergames
 
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)Fabio Moura Pereira
 
Programação de jogos eletrônicos
Programação de jogos eletrônicosProgramação de jogos eletrônicos
Programação de jogos eletrônicosguest8ff100
 
Jogo para dispositivos móveis
Jogo para dispositivos móveisJogo para dispositivos móveis
Jogo para dispositivos móveisCristiano Agosti
 
Uma abordagem prática para o ensino do desenvolvimento de jogos digitais para...
Uma abordagem prática para o ensino do desenvolvimento de jogos digitais para...Uma abordagem prática para o ensino do desenvolvimento de jogos digitais para...
Uma abordagem prática para o ensino do desenvolvimento de jogos digitais para...Diego Barbosa da Cruz
 

Similaire à Técnicas de IA em jogos (20)

Framework de GameAnalytics para Jogos Moveis 2D Tipo Plataforma
Framework de GameAnalytics para Jogos Moveis 2D Tipo PlataformaFramework de GameAnalytics para Jogos Moveis 2D Tipo Plataforma
Framework de GameAnalytics para Jogos Moveis 2D Tipo Plataforma
 
Game AI
Game AIGame AI
Game AI
 
Curso Unity3D
Curso Unity3DCurso Unity3D
Curso Unity3D
 
SBgames09 Time2Play and TREG
SBgames09 Time2Play and TREGSBgames09 Time2Play and TREG
SBgames09 Time2Play and TREG
 
Palestra Introdução ao Game Design
Palestra Introdução ao Game DesignPalestra Introdução ao Game Design
Palestra Introdução ao Game Design
 
Artigo tecpar ráfagan - Pesquisando a viabilidade de utilização de engin...
Artigo tecpar   ráfagan - Pesquisando a viabilidade de utilização de engin...Artigo tecpar   ráfagan - Pesquisando a viabilidade de utilização de engin...
Artigo tecpar ráfagan - Pesquisando a viabilidade de utilização de engin...
 
A Ciência da Computação e os Jogos Eletrônicos
A Ciência da Computação e os Jogos EletrônicosA Ciência da Computação e os Jogos Eletrônicos
A Ciência da Computação e os Jogos Eletrônicos
 
Comparativo entre Engines de Jogos em 3d
Comparativo entre Engines de Jogos em 3dComparativo entre Engines de Jogos em 3d
Comparativo entre Engines de Jogos em 3d
 
Frameworks Formais de Game Design.
Frameworks Formais de Game Design.Frameworks Formais de Game Design.
Frameworks Formais de Game Design.
 
Artigo unity3 d
Artigo unity3 dArtigo unity3 d
Artigo unity3 d
 
Realidade aumentada com ia
Realidade aumentada com iaRealidade aumentada com ia
Realidade aumentada com ia
 
Game programming
Game programmingGame programming
Game programming
 
Desenvolvimento de jogos e ogre 3D - Palestra Fatec Santos
Desenvolvimento de jogos e ogre 3D - Palestra Fatec SantosDesenvolvimento de jogos e ogre 3D - Palestra Fatec Santos
Desenvolvimento de jogos e ogre 3D - Palestra Fatec Santos
 
Palestra - Introdução ao desenvolvimento de Jogos
Palestra - Introdução ao desenvolvimento de JogosPalestra - Introdução ao desenvolvimento de Jogos
Palestra - Introdução ao desenvolvimento de Jogos
 
Game programming
Game programmingGame programming
Game programming
 
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
 
Programação de jogos eletrônicos
Programação de jogos eletrônicosProgramação de jogos eletrônicos
Programação de jogos eletrônicos
 
Jogo para dispositivos móveis
Jogo para dispositivos móveisJogo para dispositivos móveis
Jogo para dispositivos móveis
 
Uma abordagem prática para o ensino do desenvolvimento de jogos digitais para...
Uma abordagem prática para o ensino do desenvolvimento de jogos digitais para...Uma abordagem prática para o ensino do desenvolvimento de jogos digitais para...
Uma abordagem prática para o ensino do desenvolvimento de jogos digitais para...
 
Minicurso as3 games
Minicurso as3 gamesMinicurso as3 games
Minicurso as3 games
 

Plus de Roger Ritter

Arquitetura Orientada a Serviços e BPM
Arquitetura Orientada a Serviços e BPMArquitetura Orientada a Serviços e BPM
Arquitetura Orientada a Serviços e BPMRoger Ritter
 
Teste de Software em Ti Interna
Teste de Software em Ti InternaTeste de Software em Ti Interna
Teste de Software em Ti InternaRoger Ritter
 
A importância dos testes não funcionais
A importância dos testes não funcionaisA importância dos testes não funcionais
A importância dos testes não funcionaisRoger Ritter
 
Desenvolvimento de aplicações web em Dart
Desenvolvimento de aplicações web em DartDesenvolvimento de aplicações web em Dart
Desenvolvimento de aplicações web em DartRoger Ritter
 
Desenvolvimento de aplicações web em Dart
Desenvolvimento de aplicações web em DartDesenvolvimento de aplicações web em Dart
Desenvolvimento de aplicações web em DartRoger Ritter
 
[Iniciante] - Testes Unitários com WP-UNIT no Wordpress
[Iniciante] - Testes Unitários com WP-UNIT no Wordpress[Iniciante] - Testes Unitários com WP-UNIT no Wordpress
[Iniciante] - Testes Unitários com WP-UNIT no WordpressRoger Ritter
 

Plus de Roger Ritter (7)

Arquitetura Orientada a Serviços e BPM
Arquitetura Orientada a Serviços e BPMArquitetura Orientada a Serviços e BPM
Arquitetura Orientada a Serviços e BPM
 
Teste de Software em Ti Interna
Teste de Software em Ti InternaTeste de Software em Ti Interna
Teste de Software em Ti Interna
 
Planning Onion
Planning OnionPlanning Onion
Planning Onion
 
A importância dos testes não funcionais
A importância dos testes não funcionaisA importância dos testes não funcionais
A importância dos testes não funcionais
 
Desenvolvimento de aplicações web em Dart
Desenvolvimento de aplicações web em DartDesenvolvimento de aplicações web em Dart
Desenvolvimento de aplicações web em Dart
 
Desenvolvimento de aplicações web em Dart
Desenvolvimento de aplicações web em DartDesenvolvimento de aplicações web em Dart
Desenvolvimento de aplicações web em Dart
 
[Iniciante] - Testes Unitários com WP-UNIT no Wordpress
[Iniciante] - Testes Unitários com WP-UNIT no Wordpress[Iniciante] - Testes Unitários com WP-UNIT no Wordpress
[Iniciante] - Testes Unitários com WP-UNIT no Wordpress
 

Técnicas de IA em jogos

  • 1. Técnicas de Inteligência Artificial em Jogos Eletrônicos Roger Ritter1 , Guilherme Daronch Taufer² Instituto de Ciências Exatas e Geociências – Universidade de Passo Fundo (UPF) Caixa Postal 611 – 99.001-970 – Passo Fundo – RS – Brasil rogerritter@upf.br¹, 110532@upf.br² Abstract. Since many years ago, the usage of artificial intelligence in softwares are increasing. Due to this, the curiosity make us know better how these practices function at the attractive world of games. How there are several techniques of artificial intelligence used by game developers, we chose to study and describe in this article just the techniques more used today. Resumo. Há muitos anos a utilização de inteligência artificial em softwares vem crescendo. Devido a isso, a curiosidade nos leva a conhecer melhor como funcionam essas práticas num mundo tão atraente para nós jogadores, que é o mercado dos jogos eletrônicos. Como existem diversas técnicas de inteligência artificial utilizadas pelos desenvolvedores de jogos, escolhemos estudar e expor nesse artigo apenas algumas das técnicas mais implementadas em jogos eletrônicos atualmente. 1. Introdução Em jogos digitais, o uso de técnicas de Inteligência Artificial (I.A.) vem se fazendo cada vez mais necessário, e sendo até mesmo indispensável em certos casos. Estas técnicas podem ser aplicadas em diferentes tipos de tarefas: resolução de problemas (puzzles, brain-teasers), planejamento de tarefas, planejamento de trajetórias, controle de agentes autônomos (NPCs – Non-Player Characters), entre outras diversas aplicações. Crocomo (2006) tem argumentado que a indústria do videogame vem fundindo tecnologia e criatividade para produzir alguns dos melhores entretenimentos do século 21. Nos últimos anos, muita ênfase foi dada ao realismo dos jogos eletrônicos, fazendo surgir uma variedade de motores gráficos, físicos, de áudio e de Inteligência Artificial (IA). Grandes esforços foram empregados principalmente na ambientação gráfica utilizada. Sweetser (2002) disse que o próximo foco no mercado de jogos seria a elaboração de personagens que se comportam de forma realista e podem aprender e se adaptar, ao invés de personagens com maiores resoluções e com mais frames por segundo. Bittencourt (2006) destaca que para poder integrar técnicas de I.A. em jogos digitais, se faz necessária a inclusão de um novo componente em um motor de jogo (engine), além dos já tradicionais componentes destas Engines de Jogos: motores gráficos, de áudio, de rede, de física, de controle de dispositivos de E/S (interação). Este componente é o motor de Inteligência Artificial – I.A
  • 2. 2. Inteligência Artificial em Jogos A utilização de Inteligência artificial em jogos não é novidade, segundo Crocomo (2006) o seu uso começou em jogos clássicos como xadrez ou jogo da velha, porém atualmente é difícil encontrar um game que não utilize alguma técnica de IA em seu código. Nos últimos 25 anos, os esforços empreendidos pela indústria de jogos se concentraram principalmente na tecnologia gráfica produzida, permitindo a criação de mundos realistas com gráficos 3D e avançadas engines físicas. No entanto, Fairclough (2001) também destaca que sofisticadas técnicas de Inteligência Artificial em jogos estão começando a ser utilizadas apenas atualmente. As técnicas de Inteligência Artificial, segundo Bittencourt (2006), exploradas pela indústria de jogos são muito simples quando comparado com as técnicas exploradas no meio acadêmico e utilizadas em aplicações industriais. Um dos fatores que leva a uma menor exploração de técnicas é a falta de tempo disponibilizado ao desenvolvimento de um jogo digital. Muitas vezes é aplicado IA somente após algumas partes do jogo já terem sido implementadas, como, por exemplo, os motores gráficos. 2.1 - Técnicas de IA utilizadas nos jogos digitais Correa e Pastor (2012) frisa que recentemente a indústria de jogos digitais passou a pesquisar técnicas não só em seus ambientes gráficos, mas também, no desempenho e nos movimentos e estratégias calculadas pelos personagens especialmente em jogos Role-Playing Game (RPG) e Massive Multiplayer Online Role-Playing Game (MMORPG). Um exemplo para que isto acontecesse é o jogo de Role-Playing Game (RPG) Starcraft II desenvolvido pela Blizzard (2010). Quando escolhido o modo difícil, se joga contra a Inteligência Artificial, e esta tem uma grande vantagem contra o jogador humano, já que, pode fazer cálculos rápidos e ter um tempo de resposta melhor que o player. Porém, uma desvantagem neste caso é que os movimentos dos personagens artificiais são previsíveis, isso abre a chance de estudar o comportamento de seu inimigo e definir uma estratégia para vencê-lo. Com isso, o mesmo pode ser derrotado facilmente. Com base neste caso, a indústria de jogos digitais pretende pesquisar técnicas com o objetivo de eliminar a previsibilidade de jogadores humanos, analisando os movimentos do oponente e realizando movimentos da Inteligência Artificial de acordo. Crocomo (2006) salienta que a evolução das técnicas utilizadas em jogos eletrônicos é evidente nos últimos anos, tornando a experiência muito mais imersiva e trazendo jogos cada vez melhores. 2.1.1 - Máquinas de Estado Finito Segundo Fairclough (2001) a técnica de Máquinas de Estado Finito (Finite State Machines – FSM) é uma das técnicas mais utilizadas na implementação de jogos, pois é baseada em regras, tem baixa complexidade e na maioria das vezes, é utilizada pelos desenvolvedores por ser de fácil gerenciamento.
  • 3. As Máquinas de Estado Finito permitem que sejam armazenados tanto os estados dos personagens do jogo, como do ambiente. Desta forma, torna-se possível gerenciar tanto o cenário do jogo quanto seus personagens. Segundo Crocomo (2006) a ideia principal desta técnica é dividir o jogo em estados, contendo a sua transição para outros estados de acordo com uma determinada condição, baseadas no comportamento do jogo. Figura 1. Tabela de transição de estados. No entanto, por ser determinística, esta técnica torna previsível a estratégia utilizada pelo computador, como no exemplo citado anteriormente por Correa e Pastor (2012). As Máquinas de Estado Finito, quando construídas em maior número, podem ser organizadas em hierarquia. Denominada como Hierarquia de Máquinas de Estado Finito (Hierarchial Finite State Machines – HFSM), serve para implementações um pouco mais complexas, no qual a função de transição de estados recebe as entradas e o estado atual, que retorna o conjunto de saídas e um novo estado que passa a ser o estado atual. Figura 2. Hierarquia de máquinas de estado finito.
  • 4. 2.1.2 - Scriptings Segundo Crocomo (2006) Scripting é uma linguagem de programação de alto nível, criada para simplificar uma tarefa complexa para um programa em particular, onde o próprio jogador pode programar o comportamento de seus personagens. Muito popular entre os desenvolvedores de jogos, tem sua fama devido ao fato de utilizar scripts fáceis de implementar e entender, até mesmo por usuários sem experiência em programação. Geralmente, os scripts são criados de forma a lembrar uma linguagem natural, como o inglês, por exemplo. Scripting podem ser utilizados em várias partes do jogo por diferentes pessoas: ● O programador pode definir nos scripts os comportamentos a serem tomados pelos personagens do jogo. ● O roteirista pode utilizar scripts para implementar suas histórias. ● Se o jogo for exposto ao público, os próprios jogadores podem utilizar scripts para personalizar seus personagens, respeitando os limites definidos pelo programador. ● Os artistas gráficos usam scripts para automatizar processos de animação com grande quantidade de repetição. Esta grande quantidade de aplicações só é possível porque a linguagem scripting é normalmente separada dos dados do jogo. Desta forma, é criado um ambiente seguro para que não programadores realizem mudanças no programa sem causar problemas. 2.1.3 - Lógica Nebulosa ou Lógica Fuzzy A Lógica Nebulosa, também conhecida como Lógica Fuzzy, foi introduzida em 1965, pelo matemático iraniano Lofti Asker Zadeh, [ZADEH, 1976]. Essa lógica seria um primeiro passo no sentido de se programar e armazenar conceitos vagos em computadores, tornando possível a produção de cálculos com informações imprecisas, a exemplo do que faz o ser humano. A lógica Fuzzy não deixa de ser uma extensão da lógica booleana, segundo Pedrycz (2007), pois admite valores lógicos intermediários entre o FALSO (0) e o VERDADEIRO (1). Por exemplo, utilizar o valor intermediário 0,5. Isto significa que um valor lógico difuso é um valor qualquer no intervalo de valores entre 0 e 1. Nos jogos eletrônicos o papel desta técnica é normalmente limitado a complexos comandos condicionais. É utilizada na seleção de comportamentos e tomada de decisão. Esta técnica pode permitir, por exemplo, o cálculo de um “nível de medo” de um personagem com relação a um jogador. 2.1.4 - Floking Crocomo (2006), destaca que a técnica de floking implementa ao programa a opção de simular o comportamento natural de um grupo de indivíduos, tais como, o movimento de um cardume de peixes ou até mesmo o voo de um bando de pássaros. É uma técnica bastante utilizada para simular ambientes com alto grau de realismo, explorados pelo jogador. Desenvolvida como uma alternativa a gerar scripts para um número grande de indivíduos, na técnica de flocking cada personagem navega de acordo com sua
  • 5. percepção e as leis da física que governam o ambiente. Nesta técnica as informações não são mantidas de uma etapa para outra, ou seja, não existem estados, de forma a visar à economia de memória. A cada novo ciclo o personagem possui uma nova percepção do ambiente, através do qual realiza uma ação. Muito utilizada em jogos de primeira pessoa, como Half-life e Unreal, para gerar comportamentos dos grupos de personagens, e em jogos de estratégia em tempo real, como Enemy Nations, para gerar movimentação realista dos exércitos. Embora esta técnica tenha aplicações bem limitadas, é muito simples e eficiente para gerar movimentações realistas de grupos de indivíduos. 2.1.5 - Árvores de Decisão Segundo Sweetser (2002) a técnica de aprendizado através de árvores de decisão é inserida em jogos onde são necessários predição e classificação. Quando utilizada para prever uma sequência de ações traz um bom resultado. O uso desta técnica permite um personagem aprender com o jogador ou com outros personagens no desenrolar do jogo. As experiências armazenadas no decorrer do jogo com o personagem são organizadas no formato de uma árvore, a partir da entropia, que é uma medida de desordem dos dados armazenados. Com uma estrutura fácil de serem compreendidas, as árvores de decisão são robustas a ruídos e possuem um aprendizado eficiente. 2.1.6 - Redes Neurais Artificiais As Redes Neurais Artificiais (RNA), segundo Haykin (2001), são inspiradas em sistemas biológicos e possuem uma grande quantidade de aplicações que utilizam tomadas de decisões, processamento de informações e otimização. Esta técnica é mais utilizada no aprendizado off-line de jogos, treinando os parâmetros de controle dos personagens durante a etapa de desenvolvimento do jogo. Em jogos on-line ainda não tem grande utilização por parte dos desenvolvedores, pois o uso desta técnica pode gerar comportamentos não aceitáveis para seus personagens. Por possuir diversas arquiteturas diferentes para resolver problemas diferentes, não é uma técnica simples de ser implementada, pois necessita de muitos ajustes em seus parâmetros. Nos jogos que utilizam redes neurais, o objetivo é que o computador aprenda a imitar o comportamento do jogador. 2.1.7 - Algoritmos Evolutivos Os Algoritmos Evolutivos (AEs), segundo Sweetser (2002), tem por objetivo adaptar as estratégias utilizadas pelo computador em relação às estratégias utilizadas pelo usuário, ou seja, fazer com que o jogo apresente um grau de adaptabilidade em relação às ações dos jogadores e às variações do ambiente de jogo. Apesar de existir diversas aplicações para Algoritmos evolutivos, existe uma grande resistência de serem utilizadas pelos desenvolvedores de jogos, pois alguns autores afirmam que está técnica é lenta e (assim como a técnica de Redes Neurais) permite a obtenção de comportamentos “não aceitáveis” durante o processo de aprendizado dos personagens. No entanto, é reconhecido que AEs possuem o potencial para atuar em áreas nas quais técnicas tradicionais de IA apresentam deficiência.
  • 6. Yao (2000) frisa que essa técnica vem sendo utilizada desde os anos 80 para evoluir estratégias de jogos como para o jogo ‘Iterated Prisoner’s Dilemma’ de grande importância para economistas, cientistas sociais e cientistas da computação. 3. Exemplos de jogos digitais que utilizam técnicas IA Sweetser (2002), cita técnicas de IA utilizadas em jogos: Tabela 1. Técnicas utilizadas nos jogos eletrônicos. TÉCNICA JOGOS Máquina de Estado Finito - Age of Empires - Half Life - Doom - Quake Scripting - Black &White - Unreal - Dark Reign - baldur’s Gate Lógica Nebulosa ou Lógica Fuzzy - Swat 2 - Call to Power - Close Combat - The Sims Árvores de Decisão - Black & White Flocking - Half Life - Unreal - Enemy Nations Redes Neurais - BC3K - Creatures - Heavy Gear Algoritmos Evolutivos - Creatures - Returm to Fire II
  • 7. 4. Vantagens, Desvantagens e aplicação das Técnicas de IA em Jogos Digitais Correa e Pastor (2012) destaca que as técnicas para jogos em geral fazem parte de uma vertente que defende o papel da IA como o de simular um comportamento próximo do humano, não como em outros ambientes com objetivos, por exemplo, de otimização buscam atingir níveis de decisão e velocidade de raciocínio muito acima de um ser humano comum. A inteligência artificial em jogos tem por princípio maximizar a diversão emulando um jogador inteligente na medida certa, demonstrando fraquezas propositais. Para que cada técnica seja aplicada é importante, inicialmente, conhecer a aplicabilidade destinada à técnica, juntamente a suas vantagens e desvantagens, segundo Crocomo (2006) as técnicas possuem as seguintes aplicabilidades, seguidas de vantagens e desvantagens: Tabela 2. Vantagens, desvantagens e aplicação das técnicas. Vantagens Desvantagens Aplicações Máquinas de Estado Finito É simples, pode ser utilizada em conjunto com outras técnicas, computacionalmente barata e com grande capacidade de codificação. Tem uma escalabilidade ruim, pode ser fracamente estruturada, é determinística e tem a necessidade de antecipar todas as situações. As máquinas de estado finito são destinadas basicamente ao gerenciamento do universo do jogo, objetos e/ou personagens. Scripting É simples, não necessariamente tem uso apenas por programadores e tem um ambiente seguro de implementação. É determinística e por isto, tem a necessidade de antecipar todas as situações. Scripting pode facilmente gerenciar eventos e automatizar tarefas além de poder analisar a IA do oponente e construir árvores de conversa. Lógica Nebulosa Resolve problemas não lineares, tem muita flexibilidade, quando o conhecimento do especialista se torna necessário e apresenta uma alternativa para quando não há uma solução simples. É um pouco complicada de se construir e não é uma alternativa boa quando se existe uma solução simples. A lógica nebulosa tem como aplicação a tomada de decisão, filtro para entrada/saída de dados e seleção de comportamentos, além de, algumas vezes, controlar a situação emocional dos personagens juntamente com sua saúde. Flocking É realista e puramente reativa, além de requerer pouca memória. Flocking tem suas aplicações limitadas. Flocking é recomendado para o controle de movimento de unidades e de grupos de animais/monstros
  • 8. Árvores de Decisão É robusta a ruídos com uma estrutura fácil de compreender e com um algoritmo de treinamento/avaliação eficiente É necessário ajuste de parâmetros Árvores de decisão podem ser utilizadas na classificação, no aprendizado e na predição. Redes Neurais É flexível, não determinística e não linear. É necessário o ajuste de parâmetros, se trata de uma técnica complicada no qual exige muitos recursos do computador e possui ainda uma difícil escolha de variáveis. As Redes Neurais tem como aplicação o reconhecimento de padrões e o controle de comportamento, juntamente com a predição, classificação e memória. Algoritmos Evolutivos Tens um método de busca robusto e efetivo em espaços de busca grandes, complexos e pouco compreendidos, não linear e não determinístico. Exige o uso intensivo de recursos do computador e tem a necessidade de ajuste de parâmetros. Os algoritmos evolutivos são utilizados em otimização e aprendizado, no desenvolvimento de estratégias para jogos, na evolução de comportamento e encontrar caminhos a serem percorridos. 5. Conclusões Com este estudo foi possível conhecer e entender melhor a utilização das técnicas de Inteligência Artificial em jogos eletrônicos. Foi possível compreender que apesar de ainda não serem utilizadas em todos os tipos de jogos, num futuro próximo, a tendência é que será ampliada a utilização de IA em jogos eletrônicos. Todas as técnicas estudadas têm muito a contribuir e tornar cada vez mais reais as ações tomadas pelos personagens dos games, o que atrai cada vez mais pessoas a se entreter e se beneficiar com essas aplicações. 6. Referências BITTENCOURT, J.R.(2006) “Motores de Jogos para Criação de Jogos Digitais”, In: Vescola Regional de Informática de Minas Gerais, Belo Horizonte. CROCOMO, M. K. (2006) “Desenvolvimento de um Ecossistema Artificial Utilizando Algoritmos Evolutivos como Ambiente de Teste para Sistemas Multi-Robô”. FAIRCLOUGH, C.(2001) “Research Directions for AI in Computer Games”, In: AICS. CORREA, D. B., PASTOR, D. T. (2012) “A evolução das técnicas de Inteligência Artificial”, In: Proceeding of SBGames. ZADEH, L. A. (1976) “A Fuzzy-Algorithmic Approach to the Definition of Complex or Imprecise Concepts”.
  • 9. PEDRYCZ, W.(2007) “Fuzzy Systems Engineering : Toward Human-Centric Computing”, In: Wiley/IEEE Press. SWEETSER, P. (2002) “Current Al in Games: A review”, In: University of Queensland. HAYKIN, S. (2001)“Redes Neurais: Princípios e Prática.” In: Bookman. YAO, X. (2000) “Genetic Algorithms and Evolutionary Games.” In: Cambridge University Press.