Técnicas de Inteligência Artificial em Jogos Eletrônicos

9
Técnicas de Inteligência Artificial em Jogos Eletrônicos Roger Ritter 1 , 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 [email protected]¹, [email protected]² 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

description

Técnicas de Inteligência Artificial em Jogos Eletrônicos O artigo trata de uma análise das principais técnicas de inteligência artificial aplicadas a jogos eletrônicos.

Transcript of Técnicas de Inteligência Artificial em Jogos Eletrônicos

Page 1: Técnicas de Inteligência Artificial em Jogos Eletrônicos

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

[email protected]¹, [email protected]²

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

Page 2: Técnicas de Inteligência Artificial em Jogos Eletrônicos

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.

Page 3: Técnicas de Inteligência Artificial em Jogos Eletrônicos

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.

Page 4: Técnicas de Inteligência Artificial em Jogos Eletrônicos

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

Page 5: Técnicas de Inteligência Artificial em Jogos Eletrônicos

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.

Page 6: Técnicas de Inteligência Artificial em Jogos Eletrônicos

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

Page 7: Técnicas de Inteligência Artificial em Jogos Eletrônicos

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

Page 8: Técnicas de Inteligência Artificial em Jogos Eletrônicos

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

Page 9: Técnicas de Inteligência Artificial em Jogos Eletrônicos

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.