Академический Документы
Профессиональный Документы
Культура Документы
João Marcos Braz Nucci¹. Patrick Pedreira da Silva¹. Elvio Gilberto da Silva¹.
Silas Evandro Nachif Fernandes¹.
RESUMO
1 INTRODUÇÃO
A participação em jogos foi uma das primeiras tarefas empreendidas em IA. Por volta
de 1950, quase ao mesmo tempo em que os computadores se tornaram programáveis,
o xadrez foi estudado por Konrad Zuse (o criador do primeiro computador
programável e da primeira linguagem de programação), por Claude Shannon (o
criador da teoria da informação), por Norbert Wiener (o criador da moderna teoria de
controle) e por Alan Turing. (NORVIG; RUSSEL, 2004, p. 157)
Autores sobre a história de jogos digitais costumam fazer uma relação mais forte com
o desenvolvimento da área de computação gráfica, ao invés da IA. Com razão, pois foi essa
área da computação que permitiu uma melhor interface interativa com a máquina. O prefixo
“vídeo” em videogames justifica esse ponto de vista. Há evidências de que o primeiro
videogame criado foi o Tennis for Two (Tênis para Dois, em tradução informal), por William
Higginbotham e Robert V. Dvorak, que funcionava por meio de um osciloscópio ligado a um
computador analógico, em 1958 (RABIN, 2012). Não havia uma IA por parte do computador,
uma vez que se tratava de um jogo em que dois usuários competiam entre si. Por outro lado,
se utilizada a abordagem de jogos cujo foco é programar um computador para competir,
independente da interface envolvida, alguns pesquisadores apontam que foram criados jogos
digitais muito anteriores, tais como Bertie the Brain (Bertie o Cérebro, em tradução
informal), um computador desenvolvido por Josef Kates, para desafiar visitantes em uma
partida de jogo-da-velha, durante a feira chamada de Exibição Nacional Canadense, ocorrida
em 1950 (OTTAWA CITIZEN, 1975). Não existem evidências o bastante, no entanto, que
comprovem que Bertie the Brain possuísse uma estratégia inteligente ou tomasse decisões ao
acaso, tampouco sobre a qualidade de sua interface. Há indícios de que um programa de
computador capaz de competir em uma partida de Nim foi publicado em 1952.
Apesar desse debate histórico, é possível notar que há consenso sobre o pioneirismo da
IA envolvida na programação de Pac-Man, videogame em formato arcade desenvolvido em
1980 por Toru Iwatani, lançado pela empresa Namco (originalmente conhecido como
Puckman, no japão) (KENT, 2001). Nele, o jogador assume o papel do protagonista, Pac-
Man, e deve coletar pontos espalhados por um labirinto enquanto foge de quatro agentes
programados para serem adversários, que assumem a figura de fantasmas, que têm
características similares, mas cada um com algumas particularidades em seu comportamento,
o que passa a sensação de que eles “pensam” de modos diferentes. Millington (2006) garante
que esse é um método de aplicação de IA conhecido como máquina de estados, que estabelece
uma ordem de comportamentos a serem assumidos pelos agentes, de acordo com a situação.
O exemplo do jogo desenvolvido por Iwatani demonstra a possibilidade de se
desenvolver jogos em que o desafio pode ser representado pelo próprio programa, muitas
vezes substituindo um adversário humano, ou vários, ou até mesmo substituir jogadores que
atuam como aliados colaboradores. A IA permite uma experiência satisfatória dentro do
ambiente de jogo, independente da necessidade de haver mais de um participante, o que pode
ser interessante ao usuário.
2.1 PATHFINDING
3 METODOLOGIA
4 RESULTADOS E DISCUSSÕES
Cada esfera representa um objeto, cuja classe guarda atributos: um vetor de nós que
são adjacentes; outro vetor que guarda os valores das distâncias de cada um desses vizinhos;
funções que calculam a distância entre vizinhos e até o nó final e que identificam colisões
entre o nó e os personagens do jogo. Sobre esse mapa foi feita a programação do algoritmo de
busca heurística.
No modo como foi implementado, a cada vez que o jogador passa por um dos nós, a
função que inicia a busca é chamada e iniciada, ao mesmo tempo que este nó serve como
parâmetro e fica identificado como o nó final, o objetivo a ser atingido pelo algoritmo de
pathfinding. Dessa maneira, o percurso a ser percorrido pelos NPCs será sempre atualizado
tendo como referência a posição mais próxima possível do jogador, mesmo que ele esteja se
movimentando pelo mapa. Somente após atingir o nó objetivo, o robô deve seguir na direção
da posição atual do jogador dentro do mapa.
Esse método de tornar o algoritmo dinâmico é justificado por se assemelhar ao
processo utilizado pela malha de navegação, de sempre identificar a posição do jogador, e
também por ser uma forma de economizar o processamento, pois evita que a função de
pathfinding seja chamada desnecessariamente, caso o jogador esteja parado ou se encontre
num espaço entre dois nós. Ao mesmo tempo, é uma forma eficiente e simples de identificar a
posição do jogador. Dessa forma foi resolvida a questão de se transformar o algoritmo A* em
sua versão dinâmica, o D*.
A próxima adaptação é consequência, em parte, dessa condição de se alterar
constantemente o nó objetivo do algoritmo, mas também se deve, em outra parte à estrutura
do mapa de nós, pois, uma vez que são muitos, fazer a medição do custo heurístico (h(n)) de
cada nó para todos os outros nós, visto que é um grafo fechado, demandaria um esforço
prévio inviável. Para se tornar viável, o cálculo de h(n) foi feito dentro da função que faz a
busca, a partir do valor calculado da distância entre o nó sendo processado e o nó objetivo. No
entanto, isso acarretou mais um problema decorrente da configuração do grafo e das
características do ambiente.
Uma vez que os nós devem criar caminhos que circundem os obstáculos, ocorrem
situações em que o nó atual sendo processado terá um custo heurístico menor do que os nós
subsequentes, se o custo for calculado apenas com base na distância direta (extensão de uma
reta), fazendo com que o algoritmo considere mais custoso fazer o percurso passar pelos nós
vizinhos, ao fazer a comparação. A Figura 6 ilustra uma situação em que isso poderia ocorrer.
Figura 6 – Demonstração do
cálculo de custo heurístico
baseado em distância direta
Com essas adaptações o A* dinâmico foi capaz de simular uma tomada de decisão
efetiva para os NPCs, recebendo ao fim da função uma lista de nós a serem percorridos que
representam o menor caminho para se chegar ao personagem do jogador.
5 CONCLUSÕES
REFERÊNCIAS
COPPIN, B. Inteligência Artificial. Tradução Jorge Duarte Pires Valério. Rio de Janeiro:
LTC, 2013.
KENT, S. L. The Ultimate History of Video Games. 4. ed. New York, Estados Unidos da
América: Crown Publishing; Three Rivers Press, 2001.
SIMMONS, M. Bertie the Brain programmer heads the science council. The Citizen, Ottawa,
9 out. 1975. p. 17.