Inteligência Artificial nos Games

by

 

Hi Folks!!!

 

Ao pessoal que conhece meu outro blog, o Nerdices e Afins, eu não mudei de blog. Este é um projeto com dois colegas da universidade para divulgar pesquisas acadêmicas envolvendo games. Portanto vou manter os dois blogs funcionando, tanto esse como o Nerdices.

Sobre o tema do post de hoje, eu pretendo, como o próprio nome já diz, discorrer sobre I.A. em Games, mas não todos os aspectos, para descobrir quais, leiam o resto do post.

Então, nessa volta ao Console Acadêmico pretendo abordar resumidamente o tópico de I.A. nos games. Todos nós concordamos que um bom game precisa de um bom desafio, quanto mais desafiador for, melhor para o ego quando terminamos. Mas até onde deve-se investir para conseguir adversários mais difíceis de se derrotar?

 

O fato é que, quanto mais “realista” em termos gráficos os games são, mais realismo esperamos do comportamento dos personagens. Daí a necessidade de junto com  o aumento no poder gráfico, o aumento da inteligência artificial contida nos personagens. Veja o gráfico abaixo.

 

Esse gráfico representa bem o que pensamos diante de um jogo extremamente realista.

 

A Inteligência Artificial em games está longe de ser algo novo. Algoritmos detectores de colisões são utilizados a muito tempo, e é um dos exemplos mais básicos do uso de I.A.

Um algoritmo detector de colisões é utilizado para fazer com que NPCs se movam pelo cenário sem que estes colidam uns com os outros ou com os objetos estáticos do cenário, como prédios, e etc. Esse tipo de uso fica bem evidente quando você joga games como Prototype, e tantos outros games em que o ambiente que os NPCs interagem é bem desenvolvido.

Esse tipo de estratégia é bastante utilizada porque exigiria muito dos programadores e das plataformas se cada NPC fosse animado em particular. Então é melhor construir um algoritmo que faça com que apenas eles caminhem e mudem de direção a vontade sem trombar com ninguém. Isso deixa o jogo mais leve e diminui trabalho dos programadores que passam a se dedicar a outros personagens ou aspectos do jogo.

 

O que vamos falar hoje é sobre quando algoritmos de I.A. são implementados em personagens como os “Chefões Finais” e/ou os Chefes de Fase.

 

Antes de tudo é bom falar que existem basicamente 2 tipos de estratégias utilizadas para dotar esse tipo de personagens de I.A. São elas:

 

A Aprendizagem Online

 

Quando falamos de I.A. também falamos de aprendizado de máquina, portanto falamos de algoritmos de aprendizagem. Lógico que, se tratando de I.A, existem técnicas, como Árvores de Decisão, que não realizam nenhum tipo de aprendizagem, mas não é sobre isso que estamos falando.

O aprendizado Online, resumidamente, ocorre quando o jogo se adapta ao jogador dinamicamente enquanto ele está jogando. A máquina aprende como você joga enquanto você joga e desenvolve estratégias para vencer você.

Esse tipo de algoritmo não é tão utilizado, pelo menos em sua plenitude, apesar de ser o que torna as coisas mais realistas. Ele deixa o game bem mais pesado. Pois ele se responsabiliza para tomar as decisões baseado no que você faz. Isso se tratando de NPCs, não do jogo em si. Pois seria possível também que, em tese, TODO o jogo fosse adaptável, se tratando de cenário e tudo mais.

Para ser utilizado em sua plenitude, os NPCs do game, pelo menos os chefes de fase, teriam que aprender com o tipo de estratégia utilizado para vencê-lo. E toda vez que você mudasse essa estratégia o NPC daria um modo de neutralizá-la. Mas isso feito sempre. De modo que seria um duelo de “intelectos” sem estratégia prévia para derrotar a máquina.

 

Aprendizado Offline

 

O aprendizado Offline é feito quando o jogo ainda está sendo produzido. É um aprendizado Online utilizado durante a produção do jogo.

Quando o jogo ainda está sendo produzido, o “intelecto dos NPCs” (lembrando que estamos falando de Chefes de fase), está virgem, possuindo apenas diretrizes básicas de como se comportar contra um jogador. Daí jogadores (que podem ser o pessoal da produção do game e/ou terceiros), são colocados para jogar contra esses NPCs durante bastante tempo, talvez dias, meses, etc, com o algoritmo de aprendizado online ativado.

O NPC aprende até certo ponto e depois o algoritmo de aprendizado é desativado.

Deste modo o NPC é programado a partir de experiências contra jogadores reais. Tornando a reação dele mais realista. No entanto ainda previsível.

 

Vantagens e Desvantagens

 

Creio que para muita gente, a primeira opção é mais interessante. Mas ela tem um pequeno detalhe, o jogo pode ficar impossível de vencer.

Li um artigo que relatava uma experiência de um grupo de estudantes que testou até onde a máquina ia utilizando Algoritmos Genéticos, no método de aprendizagem online.

O jogo possuia 4 cavaleiros medievais. 1 controlado pelo jogador e 3 pela “máquina”. O jogador evidentemente tinha que derrotar a máquina. Os cavaleiros controlados pela máquina estavam programados para se defender e encontrar um meio de atacar o cavaleiro controlado pelo jogador.

Um dos estudantes foi colocado para jogar por várias horas. Os NPCs se adaptaram de um modo que não importa o que o jogador fizesse ele não conseguia ganhar. Os NPCs foram se adaptando gradativamente até chegar a este ponto. O índice de sucesso do jogador foi caindo até chegar a zero.

No entanto existem meios de se anular esse tipo de resultado. Por exemplo, incluindo desvantagens nos NPCs. No caso aqui citado os cavaleiros eram totalmente iguais e não tinham desvantagens, o índice de sucesso do jogador só voltou quando mudou de jogador ou com o jogo reiniciado. Colocando desvantagens nos NPCs não passamos por isso, porque não importa o que ele faça, ele sempre vai ser fraco diante de determinado fator.

 

A desvantagem do método de aprendizagem offline é que ainda é permitido que seja feita uma estratégia prévia em que o NPC não vai ter a mínima chance contra o jogador. Ou seja, deixando-o previsível.

 

Qual a solução?

 

Na verdade não existe uma solução única. Pois vai depender de quão poderosa é a plataforma em que o game vai rodar. Algoritmos de aprendizagem online tornam os NPCs mais desafiadores mas deixa o jogo bem mais pesado. Os de aprendizagem offline tornam a experiência um pouco mais realista mas ainda assim previsível e são mais leves.

Como quase tudo em computação, cada um vai ser mais adequado a determinado uso do que outro. Quando se tem uma plataforma poderosa utiliza-se um. Quando não se dispõe de tanto utiliza-se o outro.

 

Existe também um método híbrido de aprendizagem. Em que o NPC se adapta até certo ponto, depois não aprende mais, a não ser que seja reiniciado o game. Deste modo, aumenta o nível de replay do game. A diferença dele para o aprendizado offline é que os NPCs se adaptam ao dono do jogo e não a jogadores “genéricos” contratados durante a produção do game. Este método de aprendizagem tem um peso um pouco menor que o aprendizado online, não é portanto indicado para todo tipo de plataforma.

 

Então é isso aí pessoal, agora é com vocês. Já identificaram isso em algum game? Comentem sobre suas experiências e visitem o meu outro blog, o Nerdices e Afins.

Tags: ,

Uma resposta to “Inteligência Artificial nos Games”

  1. Vinicius Duarte (@kakaduart) Says:

    muito bom, vai pro meu trabalho da facu🙂

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s


%d blogueiros gostam disto: