You are on page 1of 8

"Inteligncia julgar bem, compreender bem, raciocinar bem"

(Alfred Binet - Pedagogo e psiclogo francs que ficou conhecido por sua
contribuio no campo da psicometria, sendo considerado o inventor do
primeiro teste de inteligncia, a base dos atuais testes de QI.)
"A histria da ascenso da Mquina e do declnio do
Homem, que paradoxalmente coincide com a descoberta da roda...
um alerta de que o seu breve domnio desse planeta
provavelmente terminar, porque o Homem tentou criar o Rob sua
prpria imagem."
(Alan Parsons - I Robot - 1977)
O que ?
Inteligncia Artificial (I.A.) uma rea de pesquisa da cincia da computao
dedicada a buscar mtodos ou dispositivos computacionais que possuam ou
simulem a capacidade racional de resolver problemas, pensar ou, de forma ampla,
ser inteligente.
Podemos identificar diferenas entre a sua aplicao na pesquisa e na
indstria de games. A I.A. para jogos tem por objetivo criar a iluso, realidade e
desafio para o jogador. Devemos sempre ter em mente que uma I.A. perfeita no
real. Lembre-se:
Jogadores no esto interessados em saber se o jogo utiliza uma rede
neural, uma mquina de inferncia ou uma mquina de estados finitos. Esto
interessados em como o jogo aparenta ser inteligente.

1 - Pontos de Atuao de um Algoritmo de IA


Os algoritmos de Inteligncia Artificial em Jogos Digitais podem ser divididos
em trs grandes blocos, tambm relacionados com a respectiva rea de atuao.
Movimento
Como movimentar uma personagem, desde o local onde se encontra at ao
local onde dever desenrolar a sua atividade (seja atacar o adversrio, acender
uma luz, dar o alarme, atender um cliente, etc.). Implica o clculo do percurso,
detectando salas e portas, e evitando obstculos.
Tomada de Deciso
Cada personagem tem habitualmente um conjunto de estados ou atividades
possveis, seja manter-se parado, atacar o adversrio, fugir, patrulhar a rea, comer
um quadro, etc. Para que a tomada de deciso seja possvel a personagem dever
analisar o contexto, e se o assim entender, escolher determinado processo. Este
processo escolhido pode ser simplesmente alterar a animao atual, ativar um
algoritmo de movimento, ou alterar um estado interno (por exemplo, num jogo tipo
Civilization, alterar o estado de conquista de determinado pas).
Estratgia
Embora muitos jogos sejam desenvolvidos apenas com os dois tipos de IA referidos
anteriormente, cada vez mais surgem jogos em que os personagens trabalham em
grupo ou equipe. Nestes casos existe um algoritmo principal que dever controlar

todas as personagens. No entanto, cada personagem ter (opcionalmente) a sua


prpria tomada de deciso, podendo ou no seguir as sugestes do grupo.

1.2 - Tipos de IA em Jogos


Por vezes a implementao de um algoritmo de IA demasiado complicada,
ou gasta demasiados recursos. E na grande maioria das vezes, esses algoritmos
mais complexos no trazem grandes vantagens jogabilidade.
Podemos dividir o tipo de implementao de IA em jogos em trs grandes
grupos, dois dos quais so dificilmente classificados como IA:
Hacks

O exemplo tpico de um hack como implementao de IA a implementao


de como os fantasmas, no Pac-Man, decidem ou no seguir a sua vtima. Em vez de
se decidir a seguir sempre (o que tornaria o jogo difcil se no impossvel de jogar),
a cada interseco calculado um nmero aleatrio, e de acordo com esse nmero
decidido se o fantasma ir, ou no, fazer o seu ataque.
Este procedimento simples foi fcil de implementar nos sistemas
computacionais da poca, e ainda hoje levam alguns jogadores a comentrios como
Ah! Consegui engan-lo! ou mesmo Estes fantasmas fizeram uma armadilha!
Heursticas
Uma heurstica , tambm, uma simplificao de um algoritmo, que embora
no seja implementado de forma correta, funciona na maior parte das situaes.
Como exemplo de uma heurstica volte-se aos fantasmas do Pac-Man. Em
vez de usarem um algoritmo complicado para o clculo do caminho mais curto para
intersectar a sua vtima, calculada a menor distncia (direta, haja caminho ou
no) e esse o caminho seguido.
Algoritmos
Podem ser implementados a diferentes nveis, com resultados mais ou
menos precisos, tendo em considerao os recursos disponveis.
2 - Algoritmos de Movimento
Os algoritmos de movimento tm como principal objetivo, dada uma posio
inicial e um destino pr calculado, determinar a rota (percurso) que dever ser
seguido.
A resoluo deste problema depende em muito do tipo de jogo de que
estivermos a falar, e da liberdade de movimento que a personagem que se ir
movimentar ter:
Podemos ter movimento totalmente 2D, por exemplo, num jogo de
simulao automvel, ou no velho Pac-Man;
Podemos ter movimento pseudo-2D, em que embora o personagem se
movimente num mundo 3D est sujeito gravidade, e portanto o seu
movimento ser muito semelhante ao 2D;
Finalmente, movimento completamente 3D, como na simulao aeronutica
ou espacial;
Inicialmente iremo-nos centrar nos dois primeiros tipos de movimento,
considerando o espao D, descrito em seguida, que facilmente generalizvel para
o espao bidimensional puro. Mais tarde analisaremos algoritmos de movimento em
ambiente 3D.
2.1 - Espao 2 D

O espao denominado 2 D o usado na maioria dos jogos. tpico que os


personagens se movimentem num ambiente 3D mas estejam sujeitas gravidade,
e portanto, o seu movimento principal seja 2D (nos eixos x e z). Se a este
movimento adicionarmos a possibilidade da personagem saltar, estaremos perante
o espao 2 D.
Para representar a posio de um personagem num mundo tridimensional, e
embora a personagem tenha uma altura e largura associada, tpico usar-se uma
coordenada tridimensional (x,y,z) , com y sendo o eixo vertical. Os sistemas de
fsica usaro a informao de largura para simular colises, mas do ponto de vista
de movimento s nos interessa ter noo da posio da personagem.
Alm da posio da personagem, importante saber para onde ela est
virada. tpico considerar que, por omisso, um objeto colocado num ambiente
tridimensional est olhando na direo do eixo z positivo. Considerando o nosso
ambiente 3D sujeito gravidade podemos defender que importante saber qual a
rotao do personagem em relao ao eixo dos y (para onde est olhando, que
dever ser na direo em que se desloca) mas que a inclinao do personagem em
relao ao eixo dos x ou dos y irrelevante (embora se possa usar uma
animao da personagem inclinada durante uma queda, ou ligeiramente inclinada
para a frente durante a corrida, estes detalhes so apenas grficos, e em nada
contribuem para a movimentao da personagem).
A imagem abaixo representa a informao crtica para o posicionamento de
uma personagem num espao 2 D: as coordenadas (x,y,z) em que se encontra, e
a rotao (tipicamente em radianos) calculada a partir do eixo positivo dos z, em
sentido contrrio ao dos ponteiros do relgio.

Em alguns casos iremos querer transformar a orientao da personagem


representada como um ngulo, para um vetor unitrio que nos indique a direo do
personagem. Para isso, e tendo em considerao a descrio do mundo 3D.

3 - Clculo de Caminhos
Para que um personagem se movimente em um jogo necessrio que se
saiba para onde o personagem deve se deslocar. O clculo de caminhos
responsvel por esta tarefa.
Em relao ao modelo de Inteligncia Artificial definido anteriormente, o
clculo de caminhos sobrepe o mdulo de movimento e de tomada de deciso:
preciso saber para onde se movimentar, e preciso que se saiba quais os destinos
atingveis, para que o mdulo de tomada de deciso possa decidir para onde se
deslocar.
Infelizmente no possvel analisar a posio dos objetos no ambiente de
jogo para que se possam calcular os caminhos. necessrio descrever estes
caminhos numa estrutura de dados que seja consultvel em tempo real de forma
eficiente.
Grafos para Caminhos
Grafo o nome usado para se referir a uma estrutura matemtica composta
por dois tipos de elementos: nodos (tambm chamados de vrtices) e conexes
(tambm chamados de arcos).

Chama-se grafo pesado se, a cada conexo, houver associado um peso


(tambm chamado de custo), e grafo orientado se as conexes definirem uma
orientao (ou seja, a ligao unidirecional). Na figura podem ver-se trs tipos
distintos de grafos.
No contexto de jogos, os grafos vo representar ligaes entre salas, ou
zonas de uma sala ou de um corredor. Os pesos correspondem ao custo de um
personagem se deslocar entre salas (quanto tempo demora, por exemplo). A
orientao, corresponde possibilidade, ou no, de o personagem se deslocar

naquela direo (por exemplo, possvel saltar de um telhado, mas no possvel


levantar voo para esse mesmo telhado; os prprios custos podem ser diferentes:
demora mais tempo subir uma rampa do que desc-la).

4 - Tomada de Deciso
Quando falamos em inteligncia artificial em jogos a um jogador ele ir
pensar imediatamente em algoritmos de tomada de deciso, que permitam a um
personagem decidir o que fazer. Executar essa ao (um movimento, uma
animao, etc.) tido como garantido.
Na verdade, a tomada de deciso uma parte muito pequena de todo o
esforo de construir um bom mdulo de inteligncia artificial para um jogo. Grande
parte dos jogos usam sistemas de tomada de deciso simples, como rvores de
deciso. Os sistemas baseados em regras so raros, mas importantes.
Tcnicas vindas da inteligncia artificial, como a lgica fuzzy ou as redes
neuronais, tm ganho algum interesse por parte de programadores de jogos, mas
ainda no adotada totalmente porque pode ser complicado funcionar devidamente.
A tomada de deciso o componente que se articula com o movimento,
implementado em cada personagem, e que permite que ele tome decises.
Todos os algoritmos de tomada de deciso podem ser vistos funcionando do mesmo
modo. O personagem processa um conjunto de informao e usa-a para gerar uma
ao que quer desenvolver. Os dados para o sistema de tomada de deciso o
conhecimento que o personagem possui, e o resultado um pedido de ao. O
conhecimento pode ainda ser dividido em conhecimento interno ou conhecimento
externo. Este ltimo a informao que o personagem tem sobre o ambiente sua
volta: a posio de outros objetos, o mapa, se determinado boto foi apertado, a
direo de que surge um som, etc. O conhecimento interno informao sobre o
estado interno do personagem, ou os seus processos de pensamento: a sua sade,
o seu objetivo principal, o que andou fazendo uns segundos atrs, etc.
rvores de Deciso
As rvores de deciso implementam um conceito usado mesmo antes dos
computadores, conhecidas por tabelas dicotmicas: um conjunto de perguntas
encadeadas, em que respondendo apenas sim/no se obtm determinada
classificao.
So fceis de implementar, e simples de compreender. So a tcnica de
tomada de deciso mais simples.

rvores de deciso no Algoritmo


Uma rvore de deciso constituda por um conjunto de pontos de deciso
interligados. A rvore tem uma deciso inicial (na raiz da rvore) e, para cada
deciso, existe um novo conjunto de opes que podem ser escolhidas.
Cada escolha realizada com base no conhecimento do personagem. Uma
vez que as rvores de deciso so habitualmente usadas como mecanismos rpidos
e simples, os personagens costumam aceder diretamente ao estado global do jogo,
em vez de aceder apenas representao do seu prprio conhecimento.
A rvore contm folhas que so aes a fazer (ou folhas nulas, que indicam
que nenhuma ao dever ser feita), e os seus nodos internos so pontos de
deciso, que com base num conjunto de valores tomam uma deciso de qual
caminho seguir.
A maior parte das rvores de deciso implementadas so binrias (em cada
nodo de deciso s possvel verificar se determinada condio seja verdadeira ou
falsa). A figura apresenta a mesma rvore, representando do lado direito um
caminho at determinada ao.

4.4 Sistemas de Markov


Por vezes o estado (ou parte do estado) do nosso jogo pode ser representado
como um conjunto de valores. Por exemplo, podemos ter um conjunto de valores de
prioridade, que representam qual equipa de ataque deve realizar primeiro o seu
ataque, ou ento termos um conjunto de valores que nos indicam para cada uma
das posies em que determinado personagem pode disparar em modo sniper a
sua segurana.
4.4.1 Processos de Markov
O vector de estado no mais que um vector unidimensional em que cada
posio armazena o estado ou valor de determinada situao (por exemplo, a
segurana de cada uma das vrias posies que o sniper pode usar).
No existem restries no contedo do vector. Os valores devem fazer
sentido para a aplicao que os usa, mas parte desses quaisquer valores servem.
Em matemtica os Processos de Markov so quase sempre preocupados com a
distribuio de variveis, e portanto muita da literatura assume que os valores do
vector de estado somam 1.
Os valores do vector de estado mudam de acordo com uma matriz de
transio. As matrizes de transio so sempre quadradas, e os elementos nas
posies representam a proporo do elemento no estado anterior que adicionado
ao elemento no novo estado. Assim, uma iterao de um processo de Markov no
mais que a multiplicao do vector estado pela matriz de transio.

habitualmente assumido que a mesma matriz de transio ser aplicada


ao longo do tempo ao vector estado. Este processo iterativo forma uma cadeia de
Markov.
Considerando de novo o exemplo do sniper, suponhamos que temos um
vector de estado que representa a segurana de um disparo em quatro posies
diferentes, com soma 4.0:

Se o personagem disparar da primeira posio, ir alertar o inimigo da sua


existncia. Assim, a segurana dessa posio ir diminuir. Enquanto o inimigo se
preocupa com essa posio, as outras posies ficaro ligeiramente mais seguras.
Seria possvel usar a seguinte matriz de transio:

Aplicando-a ao vector estado, obtemos novos valores de segurana:

Repare que a soma deste novo vetor 3.4. Isto pode significar que a
segurana do nosso personagem se tornou mais frgil.
Passado algum tempo, nenhuma posio ser segura. Embora isto possa ser
realista, num jogo podemos querer que os valores de segurana subam ao longo do
tempo se nenhum disparo for dado. Para isso podemos usar uma matriz, que seria
multiplicada todos os minutos que passam sem fogo.

You might also like