Artigos Acadêmicos

1 Introdução

Um game informático é motivante de acordo com as estratégias traçadas pelo Game Designer. A jogabilidade é uma das partes mais desafiadoras para o sucesso do jogo. Sendo que, os programadores em Java, precisam utilizar algoritmos para o desenvolvimento dos códigos. Esses algoritmos são facilitadores para a organização dos comandos visando a funcionalidade do game.

1.1 Título.

1.1.1 Algoritimos Utilizados para Jogos Computacionais(JC) em Java.

1.2 Objetivo.

Expor os algoritmos existentes para o crescimento dos alunos no desenvolvimento de JC.

2 Referência Bibliográfica.

2.1 Conceito de Algoritmo.

Algoritmo é um passo-a-passo lógico, que tem um começo, meio e fim. Sendo que, este fim é alcançado com sucesso. Um bom exemplo é a tradicional receita de bolo, que tem uma sequência de raciocínio e o objetivo é alcançado, ou seja, o bolo fica pronto para degustar. Segundo Efraim Turban, James e Ephraim (2002, p.431) , " algoritmo é convertido em programa de computador, que lhe informa exatamente quais operações deve executar. O algoritmo então usa dados, tais como números, letras ou palavras, para solucionar problemas.". Existe o algoritmo de computação tradicional, que pode-se chamar "portugol" sendo que o algoritmo mais indicado para JC é o baseado em Inteligência Artificial(IA). Segundo Efraim Turban, James e Ephraim (2002, p.431), "o software de IA é baseado no processamento simbólico do conhecimento. Na IA, símbolo pode ser uma letra, palavra ou número representando objetos, processos e suas relações. Os objetos podem ser pessoas, coisas, idéias, conceitos, eventos ou fatos. Usando os símbolos, é possível criar uma base de conhecimento contendo fatos, conceitos e as relações possíveis entres eles.". O algoritmo para programação tradicional é um raciocínio processado de cima para baixo, em geral não multi-tarefas, muitas vezes insuficiente para criar a jogabilidade para os JC.

2.2 Tipos de Algoritmos

2.2.1 Inteligência Artificial (IA) .

O conceito de Inteligência Artificial é complexo pois envolve várias tecnologias com características próprias. Como exemplo: Lógica Fuzzy, Algoritmos Genéticos, Redes Neurais e outros. Como forma de sintetizar, para melhor entendimento do assunto, segundo Ricardo Linden (2008, p.3), "...inteligência artificial é a ciência que tenta compreender e emular a inteligência humana como um todo(tanto no comportamento quanto no processo cognitivo), enquanto que a inteligência computacional procura desenvolver sistemas que tenham comportamento similares a certos aspectos do comportamento inteligente. Qualquer uma das duas definições é válida e suficiente..." .

Os primeiros jogos não foram desenvolvidos com a preocupação de utilizar a Inteligência Artificial (IA). Segundo Azevedo Eduardo(2005, p.247), os jogos de estratégia tais como Civilization e Civilization 2, da MicroProse, foram os primeiros jogos que utilizaram algoritmos de Inteligência Artificial, permitindo o uso de estratégias e táticas complexas e com um maior grau de dificuldade pelos jogadores de games virtuais. Embora que outros autores informem outros jogos como primeiros a utilizar a IA, exemplo é o Gun Fight (1975), citado pelo André Kishimoto (2004), um jogo com personagens em movimento tendo as primeiras utilizações de IA. 

2.2.2 Lógica Fuzzy.

Segundo Azevedo Eduardo (2005, p.250), Lógica Fuzzy ou Difusa, é a maneira para raciocinar com expressões lógicas que descrevem a pertinência a conjuntos difusos. Ainda de acordo com este mesmo autor (2005, p.251), "a Lógica Fuzzy pode acrescentar naturalidade ao comportamento das entidades; jogos em que o nível de dificuldade é modificado dinamicamente, ou seja, de acordo com o interesse do jogador ". E de acordo com os autores Efraim Turban, James e Ephraim (2002, p.445), "A lógica difusa trata com incertezas, simulando o processo do raciocínio humano e permitindo ao computador se comportar de forma menos precisa e lógica do que os computadores normais".

2.2.3 Algoritmos Genéticos.

São algoritmos baseado na teoria da evolução, mas precisamente no selecão natural e genética das espécies. Segundo Ricardo Linden(2008, p.44), a manutenção da espécie depende de dois fatores, seleção natural e genética, sendo que os melhores sobrevivem, isso mantém uma forma estruturada de troca de informação genética entre dois indivíduos para formar uma estrutura otimizada de busca. O âmago é encontrar a melhor solução possível. Depois de encontrar esta melhor solução não vai parar de procurar por outras melhores soluções. O aperfeiçoamento neste algoritmo torna-se contínuo.

No caso de jogos para computador, o Algoritmo Genético pode ser utilizado em ambientes tipo labirintos, onde a busca pelo melhor caminho é incessante. Para os programadores, o desenvolvimento de um método para a utilização do Algoritmo Genético é indicado para conceder ao jogo melhor jogabilidade e emoção. Alguns autores citam o Algoritmo Genético junto com Redes Neurais, é o caso dos autores Efraim Turban, James e Ephraim(2002, p.67), abordam que Redes Neurais Artificiais é uma maneira de raciocinar baseado em Algoritmos Genéticos.

2.2.4 Redes Neurais.

As Redes Neurais seguem o princípio de imitar a operacinalização do cérebro dos seres vivos. Buscando trabalhar com conexões entre as células neurais. Segundo J. Glenn Brookshear (2003, p.382), "As Redes Neurais artificiais são construídas a partir de muitos processadores individuais, que chamaremos de unidade de processamento (ou simplesmente unidades), arranjados de uma forma que imita as redes de neurônios existentes em sistemas biológicos.". Sendo que, a capacidade de abstrair informações, habilidade típica do cérebro humano, é um grande diferencial entre o homem e o computador. Por isso, as Redes Neurais buscam essa semelhança. Segundo Efraim Turban, James e Ephraim (2002, p.67) , "Redes Neurais artificiais são capazes de aprender a partir de casos históricos. Essa habilidade permite às máquinas processar informações vagas ou incompletas".

2.2.5 Algoritmo A*

Este algoritmo, chamado de "A Estrela", busca o caminho mais otimizado entre as distâncias. De acordo com o autor Eduardo Azevedo(2005, p.258), a partir de um problema de minimização, o algoritmo A* serve para descobrir o caminho de menor custo entre dois pontos, havendo a existência do mesmo. E ainda, o Eduardo Azevedo (2005, p.258) esclarece da seguinte maneira o conceito de algoritmo A*, por ser uma busca heurística (mais profunda), é verificado a soma das distâncias ocorridas com a previsão de distâncias que ainda não foram percorridas, isso é associado ao princípio da programação dinâmica.

Um bom exemplo do A* é ir ao encontro de várias opções de caminhos que tem a mesma distância, ou seja, até um ponto pré-definido, o ponto que tiver condição de expandir para outros pontos, este deve ser escolhido. A figura 1, deve melhor esclarecer o exemplo dado.

Figura 1

AZEVEDO,eduardo. DESENVOLVIMENTO DE JOGOS 3D: E APLICAÇÕES EM REALIDADE VIRTUAL. Editora Campus, 2005.

BROOKSHEAR, J. Glenn. CIÊNCIA DA COMPUTAÇAO: UMA VISAO ABRANGENTE. 7 ed. Porto Alegre: Bookman, 2003.

LINDEN, Ricardo. ALGORITMOS GENÉTICOS. Rio de Janeiro: Brasport, 2008.

KISHIMOTO, André. Inteligência Artificial em Jogos Eletrônicos. Disponível em:<http://www.programadoresdejogos.com/trab_academicos/andre_kishimoto.pdf>. Acessado em: 06 de janeiro de 2011.

TURBAN, Efraim, WETHERBE, James C. ,MCLEAN, Ephraim.Tecnologia da Informaçao para Gestão. Porto Alegre: Bookman , 2002.