• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Inteligência Artificial em Jogos
 

Inteligência Artificial em Jogos

on

  • 2,130 views

Baixe mais arquivos em http://pastadomau.wikidot.com.

Baixe mais arquivos em http://pastadomau.wikidot.com.
Pesquisa sobre o uso de técnicas de Inteligência Artificial (IA) em jogos de computador.

Statistics

Views

Total Views
2,130
Views on SlideShare
2,130
Embed Views
0

Actions

Likes
1
Downloads
70
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Inteligência Artificial em Jogos Inteligência Artificial em Jogos Document Transcript

    • UNIVERSIDADE LUTERANA DO BRASIL COMUNIDADE EVANGÉLICA LUTERANA “SÃO PAULO”Reconhecida pela Portaria Ministerial nº 681 de 07/12/89 – DOU de 11/12/89 CAMPUS TORRES SISTEMAS DE INFORMAÇÃO JOGOS EM INTELIGÊNCIA ARTIFICIAL Ricardo Borges Cícero Augusto Mauricio Volkweis Professora Andrea Konzen
    • Torres, junho de 2002 2
    • SUMÁRIOINTRODUÇÃO..........................................................................................................................41 Objetivos..................................................................................................................................52 Histórico...................................................................................................................................53 Técnicas Atualmente Utilizadas.............................................................................................10 3.1 Máquinas de Estados Finitos...........................................................................................10 3.2 IA Extensível...................................................................................................................11 3.3 Técnicas de Busca...........................................................................................................12 3.4 Máquinas de Aprendizado..............................................................................................15 3.5 Artificial Life..................................................................................................................18 3.6 Software Developement Kits (SDK’s)............................................................................19Conclusão..................................................................................................................................21Bibliografia...............................................................................................................................22 3
    • INTRODUÇÃO 4
    • 1 Objetivos Os jogos, hoje em dia, utilizam técnicas de IA na tentativa de embutir uma inteligêncianão característica deles, mas desenvolvida ou simulada por tais técnicas. Os jogos maiscomuns onde podemos perceber a aplicação dessas técnicas são jogos clássicos, como o jogode Damas, Xadrez e Jogo da Velha. A utilização de técnicas de IA faz com que o jogo se torne mais real e porconseqüência, mais envolvente e desafiador para o jogador. A aplicação de IA constitui umfato imprescindível para um bom um jogo atualmente. 2 Histórico Os jogos computadorizados surgiram na década de 60, em versões para mainframes. Devemos considerar que os primeiros jogos foram experimentos para verificação detécnicas para solução de problemas, principalmente no que diz respeito a jogos clássicos,como xadrez, Go, damas, entre outros. Porém, é importante frisar que, durante o surgimentodos jogos computadorizados interativos, a principal preocupação dos desenvolvedores eracom o visual, de certa forma descartando a utilização de técnicas de IA. Para simular umcomportamento inteligente por parte dos elementos do jogo, muitos desenvolvedoresfreqüentemente utilizavam-se de artifícios de programação que fizessem com que o jogo“enganasse” o jogador, fazendo com que personagens inimigos tivessem acesso a dados comoa posição do jogador em um mapa, por exemplo. Um dos primeiros jogos de computador foi Core Wars(http://www.ecst.csuchico.edu/~pizza/koth), para ambientes UNIX, onde dois ou maisprogramas de computador “jogavam” entre si, cada um tendo como objetivo impedir aexecução do(s) outro(s) programa(s). Em 1961, Steve Russel desenvolve Space War(http://www.wheels.org/spacewar/creative/SpacewarOrigin.html) um dos primeiros jogosinterativos criados com uma aparência gráfica (os gráficos deste jogo eram representados porcaracteres ASCII). Neste jogo, dois jogadores se confrontavam com pequenas naves espaciais.A partir dos anos 70, já havia um bom número de jogos em modo texto, também conhecidoscomo Multi User Dungeons. (MUD’s) sendo executados, também, em maiframes. Éinteressante notar que, já nesta época, os MUD’s eram jogados em rede. Cada jogadorassumia o papel de um personagem do jogo e começava a desenvolvê-lo. 5
    • O primeiro jogo a ter grande sucesso comercial foi Pong, criado em 1972 por NolanBushnell, fundador da Atari, uma das mais conhecidas companhias especializadas em projetare construir jogos computadorizados. Com o sucesso de Pong, vários outros jogos foramcriados, cada um com uma série de inovações. Como exemplo de jogos que marcaram época,podemos citar: • Breakout: o objetivo deste jogo é destruir blocos situados no topo da tela utilizando uma bolinha. Quanto mais blocos destruídos, maior é a pontuação do jogador (http://www.io.com/~vga2000/manuals/a2600/a26m0029.txt); • Space Invaders: Em Space Invaders, o jogador deve destruir hordas de alienígenas que surgem do topo da tela (http://www.io.com/~vga2000/manuals/a2600b/a26m0190.txt); • Asteroids: O jogador deve destruir asteróides. Quanto mais asteróides forem destruídos, maior é a quantidade de pontos recebidos (http://www.io.com/~vga2000/manuals/a7800/a78m0003.txt); • Pac-Man: o jogador deve coletar pequenos “pontos” dentro de um labirinto, enquanto é perseguido por fantasmas. Quanto mais “pontos” forem coletados, maior é a pontuação final do jogador. Os anos 80 foram marcados pela grande diversidade de jogos oferecidos. O destaque foio jogo Donkey Kong (http://www.io.com/~vga2000/manuals/a2600/a26m0063.txt), que deuorigem ao personagem Mário, que esteve presente no jogo Mário Brothers(http://www.smbhq.com/marframe.htm), criado pela Nintendo em 1984. Neste jogo, ojogador comanda um personagem que deve salvar uma princesa de um rei enlouquecido. Osucesso de mercado atingido por Mário Brothers foi suficiente para tornar o personagem,criado por Shigeru Miyamato, o principal mascote da Nintendo. Com o surgimento dos primeiros computadores de 16 bits, como o IBM PersonalComputer (PC), Atari ST e AMIGA 500, os jogos computadorizados tiveram uma melhoriasignificativa, no que se refere à interface e à interação. Alguns jogos de simulação em 3dimensões (3D) começaram a surgir, como: • Flight Simulator (http://www.crosswinds.net/~andysflightsim ): um simulador de vôo que hoje, após muitas versões, é utilizado para treinamento de pilotos; 6
    • • Wing Commander (http://www.wingcommander.com ): lançado pela primeira vez em 1990, este jogo basicamente se trata de uma batalha espacial entre humanos a alienígenas. A grande revolução no jogos computadorizados na plataforma IBM PC surgiu em 1993,quando uma empresa chamada ID Software criou Doom (http://www.doomworld.com ), umaseqüência do jogo :Wolfenstein 3D, também da mesma empresa. Em Doom, o jogadorcontrolava um personagem que tinha como objetivo destruir os mais variados tipos demonstros. O grande diferencial do jogo foi a inovação tecnológica associada ao ambientesombrio de Doom, onde o jogador visualizava o ambiente pela perspectiva do personagem.Esta tecnologia é chamada de First Personal Perspective (Perspectiva em Primeira Pessoa). Doom foi um grande passo em termos de evolução tecnológica, tanto no âmbito gráfico,quanto na área de IA. Após o lançamento de Doom, muitos outros jogos inspirados nele surgiram. Alguns com um certo sucesso de mercado, como: • Heretic (http://www.planetheretic.com): Heretic é um jogo ambientado na idade média, onde o jogador deve destruir minotauros e outros monstros mitológicos; • Hexen (http://www.planethexen.com): este jogo é a seqüência de Heretic, onde o jogador pode escolher entre mais de um personagem para jogar. Jogos computadorizados em 3D marcaram esta época, em especial Duke Nuke em 3D,(http://www.dukeworld.com/), um jogo no mesmo estilo de Doom, onde o personagemprincipal deve proteger a Terra de uma invasão alienígena. O interessante neste jogo, no quetange a aplicação de técnicas de IA em jogos computadorizados, é que o jogador, através deuma ferramenta que acompanha o jogo, pode modificar o nível de IA dos personagensinimigos, tecnologia esta chamada de Extensible AI (IA extensível) que, a partir de então, foiimplementada em vários jogos. Esta tecnologia será descrita de forma mais detalhada napróxima seção. Quando a ID Software lançou, em 1996, Quake (http://www.quakeworld.com), oprimeiro jogo em 3D real para PC’s, até então se utilizavam técnicas onde o ambiente 3D erasimulado, isto é, se criava a ilusão de elementos tridimensionais, sem efetivamente sê-los.Porém, apesar de implementar a tecnologia de IA extensível, permitindo inclusive que osjogadores criassem seus próprios personagens, a aplicação de técnicas de IA nos elementos dojogo não evoluiu da mesma forma que a computação gráfica. A inovação, no que tange a 7
    • utilização de técnicas de IA, veio com ReaperBot(http://www.geocities.com/~macweb/reapermadness), um oponente especialmente criado paraser utilizado em Quake utilizando-se da capacidade de IA Extensível implementada nestejogo. Este oponente, criado por Steve Polge (que mais tarde seria o desenvolvedor do sistemade IA do jogo Unreal), exibia um comportamento bem mais realístico do que o restante doselementos do jogo, procurando o jogador por toda a fase, ou se escondendo ou buscandoenergia para sobreviver quando necessário. Unreal (http://unreal.epicgames.com/), um jogo do mesmo estilo de Quake, lançado em1998 pela empresa (Epic Megagames), mostrou um avanço significativo não só nas aplicaçõesde técnicas de computação gráfica, mas também no que se refere ao uso de técnicas de IAaplicada a jogos computadorizados. Foram utilizadas tecnologias de IA baseada em regras,como as Finite State Machines (FSM) e Fuzzy State Machines (FuSM), além daimplementação da tecnologia de Extensible AI, permitindo enorme flexibilidade, fazendo comque os personagens inimigos demonstrassem mais esperteza e agilidade, freqüentementedesviando dos ataques do jogador, chamando reforços, ou fugindo quando necessário. EmUnreal o jogador entra em um mundo que mistura alienígenas hostis e seres místicos. Oobjetivo do jogo é salvar o planeta e sua civilização dos ataques alienígenas. Unreal é um jogoimportante, no que tange o histórico da evolução das tecnologias utilizadas em jogoscomputadorizados, pois ele mostra que o real impacto de um futuro jogo de sucesso não serásomente o seu potencial gráfico, mas também o nível de técnicas de IA que ele utilizará. Hoje os jogos computadorizados são criados como grandes produções de cinema, comorçamentos que facilmente chegam a milhões de dólares. Para criar e desenvolver um jogo desucesso no mercado atual, leva-se, em média, três anos. Neste tipo de projeto, a equipe écomposta por: • Programadores: encarregados de dinamizar o jogo. Geralmente oriundos da Informática ou Ciência da Computação, os programadores implementam técnicas de computação gráfica, IA e aplicam conceitos de Física para implementar o jogo; • Artistas Gráficos: são os responsáveis pelo layout do jogo, criando os objetos, personagens, texturas, etc; • Projetistas de Níveis/Fases: oriundos das mais variadas áreas, os projetistas de níveis são aqueles que criam as fases dos jogos e estão associados a sua modelagem; 8
    • • Projetistas de jogos: mais conhecidos por game designers, os projetistas são considerados os “administradores” dos projetos, por terem envolvimento em quase todas as áreas da produção de jogos computadorizados. São eles os responsáveis pela criação das idéias para a concepção do jogo e pela elaboração do Design Document, um documento detalhado contendo as características e especificações do jogo; • Planejador de Software (Software Planner): a tarefa do Software Planner é dividir o design do jogo (elaborado pelo game designer) em um conjunto de requisitos técnicos e estimar o tempo e esforço necessário para implementar tais características. • Arquiteto-Chefe (Lead Architect): a tarefa do Lead Architect é trabalhar em conjunto com o Software Planner para produzir um conjunto de especificações de módulos, baseados nos requisitos técnicos identificados pelo Software Planner. O Lead Architect é o responsável pela arquitetura geral do projeto. • Gerente de Projeto (Project Manager): a tarefa do Project Manager é balancear a carga de trabalho gerada pelo Software Planner e pelo Lead Architect produzindo um planejamento eficiente e organizado. • Músicos e sonoplastas: geralmente vindos de áreas relacionadas à arte e à música, são os responsáveis por compor trilhas sonoras, vozes e efeitos especiais para os jogos; • Testadores: geralmente surgindo nas fases finais do projeto, os testadores, como o próprio nome já diz, são incumbidos de testar o jogo, procurando por falhas e possíveis erros (Bugs). Além de especialistas nas áreas citadas acima, há também envolvimento deprofissionais de marketing, relações públicas, entre outros. Os jogos computadorizados mais atuais possuem gráficos 3D avançados, sendo jogadosem rede, cooperativamente ou competitivamente, com um nível razoável de IA aplicada sobreos elementos do jogo. Podemos citar como exemplos de jogos de última geração, quepossuem estas características: • Diablo 2 (http://www.blizzard.com/diablo2): uma produção da Bilzzard entertainment onde o jogador pode assumir o papel de cavaleiros, bárbaros, amazonas e magos, com o objetivo de destruir um demônio. O interessante neste jogo está na geração dinâmica dos elementos, feita de forma randômica, fazendo 9
    • com que cada vez que o jogador entre no jogo, as fases, itens e inclusive alguns inimigos, sejam diferentes; • Quake III: Arena (http://www.q3arena.com): produzido pela, ID Software, Quake III: Arena é um jogo com perspectiva em primeira pessoa (assim como Quake) onde o jogador, em diferentes arenas, enfrenta robôs (também chamados de bots) com um nível aperfeiçoado de IA, se comparado a jogos anteriores. O jogador é vencedor na arena se derrotar todos os robôs um determinado número de vezes. Este estilo de jogo, mais conhecido como deathmach, surgiu com Doom, mas se tornou popular entre jogadores de Quake na Internet. • Unreal Tournament (http://unreal.epicgames.com): criado pela (Epic Megagames, é o “concorrente” de Quake III: Arena com a mesma proposta de estilo de jogo. Ambos são muito populares entre jogadores via ,Internet e redes locais. A evolução dos jogos computadorizados está fortemente ligada aos avanços dastecnologias associadas aos sistemas computacionais. Cada avanço no hardware repercute emnovas possibilidades para o software. A busca de um maior realismo e interatividade têmlevado os projetistas a ampliarem a pesquisa tanto em nível de computação gráfica como IA.A seguir faremos uma análise das técnicas de IA utilizadas nos jogos comerciais e algunsexperimentos ligados a grupos de pesquisa em universidades. 3 Técnicas Atualmente Utilizadas Do conjunto de técnicas de IA disponíveis, no momento algumas estão sendo utilizadascom uma certa freqüência na construção de jogos computadorizados. O conjunto destastécnicas que compõem o estado-da-arte, no que tange o uso de tecnologias de IA aplicado ajogos, é descrito a seguir. 3.1 Máquinas de Estados Finitos Enfoques baseados em regras, como as FSM’s e as FuSM’s, são as tecnologias de IAmais utilizadas atualmente pelos desenvolvedores de jogos computadorizados. De acordo comeles, o uso em larga escala destas tecnologias está associado ao fato de que sua 10
    • implementação é relativamente simples, além de serem técnicas já consolidadas no mercadode jogos computadorizados. Uma FSM é composta por um conjunto de estados (incluindo um estado inicial), umconjunto de entradas, um conjunto de saídas e uma função de transição de estado. A função detransição recebe as entradas e o estado atual e retorna um único novo estado e um conjunto desaídas. As máquinas de estados finitos são normalmente representadas por diagramas detransição de estados. Para a realização de modelagens mais complexas, as FSM’s podem ser hierarquizadas,de forma que cada nodo de uma hierarquia possa expandir uma nova hierarquia, e assimsucessivamente, até o último nível, expandindo uma FSM. Esta técnica é chamada deHierarchical Finite State Machines (HFSM), e fornece uma forma conveniente para umamodelagem modular de FSM’s. As FuSM’s são baseadas em cadeias de Markov. Pesos (probabilidades) são associadosaos estados e às transições de estado, e regras são estabelecidas para calcular pesos de estadosfuturos. Um jogo que utiliza FuSM’s é Call to Power (http://www.calltopower.com), um jogode estratégia onde o jogador controla civilizações, sendo que o perfil e os traçoscaracterísticos de cada civilização foi modelado com a utilização de FUSM’s. A utilização de máquinas de estados finitos permite criar elementos comcomportamentos relativamente complexos, como mostrado no jogo Unreal, descrito na seçãoanterior, onde os inimigos tomavam uma série de decisões baseadas nas ações do jogador,além de elementos adicionais do jogo, como pássaros, coelhos e outros animais exibindoalgoritmos de aglomeração e formação (flocking algorithms), também controlados por FSM’s; 3.2 IA Extensível Vários jogos lançados nos últimos anos implementaram a técnica de IA Extensível,mantendo uma tendência que surgiu com Duke Nuke ‘em 3D e Quake. Através de linguagensde script, o jogador pode criar seus próprios oponentes e/ou modificar o nível de IA dospersonagens inimigos. A forma como a IA Extensível é apresentada ao usuário varia descripts semelhantes a linguagens como C e C++ até conjuntos de ordens que podem serpassadas ao elemento do jogo. A maioria do jogos que utilizaram a técnica de IA Extensível são do gênero dePerspectiva em Primeira Pessoa, como por exemplo Unreal e Half Life mas existem algunsjogos de outros gêneros que estão utilizando esta tecnologia, como é o caso de Baldur’s Gate 11
    • (http://www.interplay.com/product.asp?GameID=299), um Role Playing Game (RPG) criadopela ,Interplay onde as classes de personagens do jogo são controlados por scripts. Estesscripts podem ser definidos pelo jogador, permitindo que este especifique as reações básicasdos personagens do jogo em várias situações de combate. Desta forma, os jogadores podemadaptar o jogo de forma particular, ou então criar novas classes de personagens. Como forma de exemplo da técnica de IA Extensível, a listagem abaixo mostra umtrecho de um script criado para ser utilizado no jogo Baldur´s Gate. O trecho faz parte de umscript que cria um novo personagem para ser utilizado no jogo: IF // If my nearest enemy is not within 3 !Range(NearestEnemyOf(Myself),3) // and is within 8 Range(NearestEnemyOf(Myself),8) THEN // 1/3 of the time RESPONSE #40 // Equip my best melee weapon EquipMostDamagingMelee() // and attack my nearest enemy, checking every 60 // ticks to make sure he is still the nearest AttackReevalutate(NearestEnemyOf (Myself),60) // 2/3 of the time RESPONSE #80 // Equip a ranged weapon EquipRanged() // and attack my nearest enemy, checking every 30 // ticks to make sure he is still the nearest Pode-se visualizar que o script se baseia em chamadas de funções definidas do sistemainterno de IA do jogo. É importante notar que a técnica de IA Extensível permite que sejamfeitas várias modificações no nível de IA dos personagens, mas ela não permite que o jogadorpossa modificar o sistema interno de IA do jogo. 3.3 Técnicas de Busca 12
    • Dos algoritmos de busca disponíveis, o A-star (A*) é o mais utilizado em jogoscomputadorizados, sendo que os desenvolvedores de jogos fizeram suas próprias versõesdeste algoritmo, adaptando-o a cada projeto. O A* é um algoritmo que utiliza uma funçãoheurística que determina a qualidade de cada um dos estados possíveis (nodos), através deuma estimativa do custo da melhor rota até o destino, passando pelo nodo atual. O custodetermina a qualidade de um nodo, sendo que quanto menor o custo, melhor a sua qualidade.A função heurística possui o seguinte formato: f(n)= g(n) +h(n) Onde: f(n): valor da função associado a um nodo Q; g(n): função que calcula o custo da rota do nodo de origem até Q; h(n): função que prevê o custo da rota de Q até a solução. O desempenho do A* depende da função heurística selecionada. Uma função heurísticaruim pode reduzir drasticamente a velocidade do algoritmo, ou fazer com que este produzarotas incorretas. Para que o A* calcule sempre as melhores rotas, a função heurística deve seradmissível, ou seja, deve fazer estimativas menores do que o custo real do caminho. O A*, pelo seu funcionamento, é considerado um algoritmo completo e ótimo, ou seja,dada uma função heurística admissível, se o problema tiver uma solução, esta vai serencontrada, e a solução encontrada será sempre a de menor custo. A listagem empseudocódigo abaixo mostra o funcionamento do A*: bool AStarSearch() { priorityqueue OPEN list CLOSED NODE node node.application_stuff=(start conditions of application specific stuff) node.cost = 0; node.heuristic = GetNodeHeuristic( node ) node.f = node.cost + node.heuristic node.parent = null push node on OPEN // esse é o corpo da busca while OPEN is not empty { node = Pop the best node from OPEN 13
    • // exemplo: remove o nodo da open listif node is a goal node {construct path (by following the parent pointers)return success}// senão é necessário encontrar quais nodos podem sergerados a partir desteNodePushSuccessors( OPEN, CLOSED, node ); // ver codigo dafunção abaixopush node onto CLOSED list //como este nodo já foi examinado}// aqui a open list foi esvaziada e não foram encontradosGOAL states. A busca falhoureturn FALSE}// Cria os sucessores para o dado nodo e os adiciona para a openlist ou closed listvoid NodePushSuccessors( priorityqueue OPEN, list CLOSED,parent_node ){// Aqui são aplicadas regras válidas para o nodo sendoanalisado. No caso de um pathfinder, por exemplo, uma regra seria adireção do movimentofor each rule we can apply create the successor new_node {new_node.cost = (application specific cost of this node) +parent_node.costnew_node.heuristic = GetNodeHeuristic( new_node )new_node.f = new_node.cost + new_node.heuristicif the new_node is on CLOSED but the node on CLOSED has alower f {continue;}if the new_node is on OPEN but the node on OPEN has a lowerf {continue;}remove new_node from the OPEN list if it is on itremove new_node from the CLOSED list if it is on itnew_node.parent = parent_nodepush new_node on to the OPEN list} 14
    • } Considerando busca em jogos computadorizados, o A* é principalmente utilizado naaplicação de técnicas de pathfinding, que consiste na computação e execução de um caminhopartindo de um ponto de origem, dado pela posição do próprio elemento, para um destinoqualquer. De modo geral, os desenvolvedores de jogos já possuem um certo domínio sobre astécnicas de busca, direcionando seu foco para implementações em casos específicos, comopahtfinding associado com análise de terreno (terrain analysis), situação encontradafreqüentemente em jogos de estratégia, como por exemplo Age of Empires II: The Age ofKings (http://www.ensemblestudios.com/aoeii/index.shtml), um jogo onde o jogador devedesenvolver civilizações antigas. A análise de terreno identifica pontos em mapas que podemdificultar o movimento dos elementos de um ponto para outro, como por exemplo pontes outravessias entre montanhas. Uma boa análise de terreno pode produzir informaçõesimportantes para o sistema de pathfinding do jogo para resolver problemas complexos debusca. A análise de terreno fornece informações adicionais sobre o terreno para auxiliar naresolução de problemas de pathfinding mais complexos. 3.4 Máquinas de Aprendizado As técnicas de Máquinas de Aprendizado (Machine Learning) estão começando a termais espaço em jogos computadorizados, e vários enfoques estão sendo analisados pelosdesenvolvedores. Um jogo que implementou uma técnica de aprendizado interessante foiMagic & Mayhem (http://www.mythosgames.com/magicandmayhem.htm) criado pelaMythos Games, onde o jogador comanda um mago que deve destruir monstros, feiticeiros eescapar de armadilhas. O jogo periodicamente grava informações sobre as disputas com ojogador em um arquivo de dados. Antes de iniciar uma nova batalha, o subsistema de IA dojogo compara a técnica de ataque a ser utilizada com esta base de dados, para determinar ograu de efetividade deste tipo de ataque. Desta forma, o jogo se adapta ao tipo de jogador. Outros enfoques de Machine Learning, com maior embasamento científico, estão sendoexplorados. Redes Neurais 15
    • As redes neurais empregam uma interligação maciça de células computacionais simplesdenominadas “neurônios” ou “unidades de processamento”. As ligações entre os neurônios,também chamadas de sinapses, possuem um valor associado, chamado de peso sináptico, queé utilizado para armazenar o conhecimento adquirido. O algoritmo de aprendizagem de uma rede neural tem como função modificar os pesossinápticos, desta forma aperfeiçoando a rede neural. O processo de aprendizagem de uma redeneural é dito ser supervisionado se a saída desejada já é conhecida; já quando não háexemplos rotulados da função a ser aprendida pela rede, o processo de aprendizagem é ditonão-supervisionado. Um dos primeiros jogos computadorizados a utilizar redes neurais foi BattleCruiser:3000 AD (http://www.bc3000ad.com), um simulador espacial, onde os elementos do jogoeram controlados por uma rede neural. Um ponto interessante neste jogo é que foidesenvolvida uma linguagem, denominada Artificial Intelligence and Logistics (AILOG), paracom ela implementar o sistema de IA do jogo. A AILOG utiliza uma rede neural para, nojogo, efetuar tomadas de decisão e busca de melhores rotas. Em relação a aprendizagem darede neural, foram utilizadas variações do algoritmo de Backpropagation e algoritmos não-supervisionados. Existem scripts com redes neurais supervisionadas pré-treinadasprogramados para serem executados em momentos específicos do jogo, como por exemplo noinício de guerras, ou no planejamento de invasões. A AILOG também emprega algunsconceitos de lógica difusa (fuzzy logic) em momentos nos quais a utilização de uma redeneural não é suficiente. Algoritmos Genéticos Os algoritmos genéticos são modelos computacionais inspirados pela evolução humana,tipicamente representando o conhecimento através de atributos binários ou booleanos. Umaimplementação de um algoritmo genético começa com um conjunto (população) de atributos,ou “cromossomos”. Estas estruturas são então avaliadas e oportunidades de “reprodução” sãoalocadas, de forma que os atributos que representarem uma melhor solução para o problemaem questão possuirão mais chances de se “reproduzirem” do que os outros atributos, daí oconceito de evolução, que está associado com o método de aprendizagem utilizado nosalgoritmos genéticos. A qualidade de uma solução é tipicamente definida de acordo com oconjunto atual de atributos. O funcionamento de um algoritmo genético pode ser descrito daseguinte forma: 16
    • 1. Gera uma população randômica de Q cromossomos (soluções aceitáveis para o problema em questão); 2. Avalia a “fitness” (qualidade, ou grau de ajuste) de cada cromossomo na população; 3. Cria uma nova população, repetindo os seguintes passos até que a população esteja completa: 4. Seleciona dois cromossomos de uma população de acordo com a sua qualidade (quanto maior aqualidade do cromossomo, maior a chance deste ser escolhido); 5. Com uma probabilidade de cruzamento, cruza os cromossomos para formar novos descendentes. Se ocruzamento não for efetuado, os descendentes são uma cópia exata dos cromossomos originais; 6. Com uma probabilidade de mutação, executa a mutação em uma parcela dos novos indivíduos; 7. Insere os novos indivíduos em uma nova população; 8. Usa a nova população gerada para uma nova iteração do algoritmo; 9. Se a condição é satisfeita, termina o algoritmo e retorna a melhor solução baseada na população atual; 10. Volta para o passo 2. Um dos primeiros jogos comerciais a utilizar algoritmos genéticos foi Cloak Daggerand DNA (http://gamesdomain.co.uk/directd/pc/windows/puzzle/cddna.html), lançado em 1995pela Oidian Systems. A versão original deste jogo de estratégia vem com quatro “seqüênciasde DNA”, que são conjuntos de regras que ditam o comportamento dos oponentes do jogador.A medida que cada um desses conjuntos de regras participa das jogadas, o jogo armazenadados que informam como foi a performance do conjunto de regras em questão em cadadisputa com o jogador. Entre as disputas, o jogador pode fazer que as diferentes “seqüênciasde DNA” realizem competições entre si, permitindo a evolução destes conjuntos de regras. Existem, também, alguns projetos que exploraram combinações entre algoritmosgenéticos e redes neurais, como é o caso de NerualBot(http://www.botepidemic.com/neuralbot), um oponente especialmente criado para serutilizado no jogo Quake II (http://www.quakeworld.com). Este oponente utiliza uma redeneural para controlar suas ações e um algoritmo genético para “treinar” sua rede neural. Istofaz com que o oponente seja totalmente autônomo, sem nenhuma espécie de comportamentopré-programado. Um outro exemplo desta combinação de técnicas de machine learnings éCreatures (http://www.creaturelabs.com), um simulador de formas de vida em um ambienteinterativo, onde o jogador controla a evolução de criaturas. O aspecto interessante deste jogo,no que tange a utilização de técnicas de IA, é utilização de uma tecnologia denominadaCyberLife, que basicamente consiste de uma combinação de redes neurais heterogêneas e umconjunto de algoritmos genéticos que realizam um processo de seleção, fazendo com que ascriaturas evoluam. Isto faz com que a CyberLife seja, efetivamente, uma rede neural com 17
    • auto-aprendizado, de forma que as criaturas aprendem o que elas devem fazer, do que elasgostam e não gostam, ou até o que elas acham divertido. 3.5 Artificial Life Segundo os desenvolvedores de jogos computadorizados, as técnicas de representaçãode vida artificial (A-Life) fornecem formas flexíveis para a criação de comportamentosrealísticos nos elementos do jogo. As técnicas de A-Life têm suas origens no estudo dosorganismos vivos do mundo real. A A-Life busca simular o comportamento destes organismosatravés de uma variedade de métodos, tais como a implementação de regras, algoritmosgenéticos, entre outros. Ao invés de tentar implementar uma grande variedade decomportamentos complexos, a idéia é dividir estes comportamentos em partes menores,simulando comportamentos mais simples. Estas partes são então interligadas por uma forma de hierarquia de tomada de decisão,utilizada pelos elementos do jogo para determinar que ações devem ser tomadas parasatisfazer as necessidades destes elementos. Desta forma, combinações e seqüências decomportamentos mais simples geram comportamentos complexos de forma automática, sem anecessidade da implementação direta destes. A simplicidade deste enfoque foi utilizada na implementação de The Sims(http://www.thesims.com), criado pela Maxis onde o jogador controla elementos que simulampessoas vivendo vidas normais, de forma que estas “pessoas” possam seguir diferentescarreiras profissionais, fazer amigos ou até ter uma família, entre uma série de outraspossibilidades. Creatures, citado no item anterior, é um outro exemplo da aplicação detécnicas de A-Life. As técnicas de A-Life são utilizadas, na sua maioria, em simuladores, mas a tendência éque seu uso se expanda para outros diferentes gêneros de jogos, como já acontece com algunsenfoques de A-Life como as técnicas para coordenar agrupamentos e aglomerações, maisconhecidas como flocking algorithms. Utilizados para controlar o movimento de grupos deelementos, os flocking algorithms já foram utilizados em vários tipos de jogoscomputadorizados, desde jogos do tipo first person perspective, como Unreal onde as técnicasde flocking eram utilizadas para controlar o movimento conjunto de cardumes de peixes ougrupos de pássaros, até jogos de estratégia, como Age of Empires para controlar formações desoldados. 18
    • 3.6 Software Development Kits (SDK’s) Um enfoque que está sendo explorado atualmente é a utilização de SoftwareDevelopment Kits (SDK’s), ou simplesmente toolkits, específicos em uma ou mais técnicas deIA, que auxiliam na utilização destas técnicas, agilizando o processo de desenvolvimento daaplicação. Alguns SDK’s foram criados especificamente para serem utilizados em jogos,enquanto outros têm um escopo de utilização mais genérico. Como exemplos de SDK’sdisponíveis no mercado podemos citar: • Motivate (http://www.motion-factory.com): este SDK permite a criação de máquinas de estado para personagens animados, fazendo com que os movimentos de personagens sejam dinamicamente computados, de acordo com as mudanças no ambiente. Alguns jogos já utilizaram as tecnologias disponibilizadas neste SDK, como por exemplo Prince of Persia 3D (http://www.pop3d.com/main.html), um jogo de aventura onde o jogador deve resgatar uma princesa; • Spark! (http://www.louderthanabomb.com): este SDK é basicamente um editor de lógica difusa (fuzzy-logic), direcionado para desenvolvedores de sistemas de IA para jogos computadorizados. Dos SDK’s disponíveis, o Spark! é a solução de menor custo. O editor possui uma interface gráfica para a criação e modificação de sistemas de lógica difusa, sendo que estes sistemas podem ser depurados sem a necessidade de recompilação da aplicação. Para a integração com a aplicação, o Spark! disponibiliza uma API escrita em C++. O toolkit ainda está em versão preliminar; • DirectIA (http://www.animaths.com): criado pela Mathématiques Appliquées, este SDK, baseado em tecnologia de agentes, pode criar elementos com características humanas, incluindo estados fisiológicos, psicológicos e emocionais. Estes estados internos motivam os agentes, alimentando-os com desejos, necessidades e emoções. O SDK também permite a criação de agentes com capacidade de aprendizado, criando elementos que podem se beneficiar de suas experiências anteriores. Para a criação dos agentes, o SDK se baseia em modelagem biológica e cognitiva. Estes dois enfoques de modelagem definem o estado atual do agente em tempo real. O sistema de comportamento do DirectIA pode ser comparado com uma “máquina de estados infinitos” pois, análogo a 19
    • noção de estados discretos presentes em FSM’s, a noção de estados dinamicamente alterados geram o comportamento do agente de uma forma mais próxima da realidade e não-determinística. O SDK incluí alguns módulos, como por exemplo, módulos para controle de agentes reativos, percepção e motivações. O desenvolvedor que utilizar o SDK pode desenvolver seus próprios módulos, desta forma personalizando o SDK. O DirectIA também possui uma linguagem de script, semelhante a língua inglesa, para o desenvolvedor construir seus próprios modelos de IA, podendo através desta linguagem acessar vários métodos internos do SDK. Esta linguagem se baseia em regras de produção de uma forma diferente das regras de produção tradicionais de IA, no sentido de que as regras não definem diretamente o comportamento do agente, mas definem a influência de fatores internos ou externos na evolução do estado dinâmico interno do agente. Estas regras podem ser ativadas a cada instante de tempo, de forma a influenciar o comportamento em qualquer momento. As técnicas de IA descritas acima mostram o que está sendo amplamente explorado eutilizado, atualmente, em termos de IA aplicada a jogos computadorizados. Algumas destastécnicas podem ser utilizadas de forma combinada, gerando sistemas mais complexos. 20
    • Conclusão 21
    • BibliografiaSEWALD, Leonardo. Aplicação de Técnicas de IA em Jogos Computadorizados Interativos. Porto Alegre: Pontifícia Universidade Católica do Rio Grande do Sul, 2001. Disponível na WWW em: http://www.inf.pucrs.br/~sewald. 02/06/2003.SEWALD, Leonardo. Tecnologia de Agentes aplicada a Jogos Computadorizados Interativos. Porto Alegre: Pontifícia Universidade Católica do Rio Grande do Sul, 2001. Disponível na WWW em: http://www.inf.pucrs.br/~sewald. 02/06/2003.POZO, Aurora Trinidad Ramirez. Aprendizado de Máquina. Curitiba: Universidade Federal do Paraná. Disponível na WWW em: http://www.inf.ufpr.br/~aurora. 01/06/2003.Louder Than A Bomb. Sparky! Fuzzy Logic Editor. Disponível na WWW em: http://www.louderthanabomb.com/spark.htm. 04/06/2003.Epic Megagames. Unreal Tournament AI and Gameplay for Level Designers. Disponível na WWW em: http://unreal.epicgames.com/UT_AI.htm. 04/06/2003.Creatures Community. Disponível na WWW em: http://www.creaturescommunity.com. 05/06/2003. 22