Sofia IA

Inteligência artificial para jogos

As engines de física e a integração com as camadas superiores

com 2 comentários

Um dos problemas relatados por todos os autores é a integração da IA com o código fonte. Aparentemente não é possível abstrair uma engine de IA o suficiente para que ela seja muito reaproveitável. Alguns algoritmos auxiliares até podem ser usados, como algoritmos de path finding ou steering behaviors, mas o objetivo de uma engine é ser mais do que um simples apanhado de tecnologias.

Portanto, decidi pesquisar como as engines de física resolvem essa questão. Boa parte delas tem conceitos próprios muito fortes, e portanto, já tem uma boa abstração por si só. Entretanto, resolvi pesquisar como resolvem os pontos onde há conflito de classes com engines gráficas, por exemplo.

O que percebi, é que não resolvem. Nas engines físicas, classes para gerenciamento do mundo, vetores e primitivas como caixas e esferas são redeclaradas. Essas classes acabam sendo duplicadas com a engine gráfica, e não é incomum um objeto que simplesmente possua 2 bounding boxes, um para a engine de IA, outro para o desenho gráfico. Dois vetores, um para movimentação dos veículos físicos, outro para movimentação da câmera no mundo gráfico.

O problema é que num framework de IA isso seria triplicado. Haveriam 3 classes de vetores, todas realizando virtualmente as mesmas funções. O primeiro objetivo do meu trabalho, e certamente um dos mais importantes, é como simplificar esse problema no código cola.

O segundo problema detectado refere-se a abstração do mundo. Notei que as engines de física também tem classes chamadas “World”, onde há a duplicação de informações como escala, que também está presente no mundo gráfico.

O problema da IA é que ela ainda é mais abstrata, pois determinadas técnicas de física, escolhidas pelo usuário do Engine, podem impactar na tomada de decisão.

Foram pesquisadas as engines ODE (com e sem a camada de abstração OPAL) e Tokamak. Também procurei material que mostrasse exemplos de uso da famosa e proprietária Havok, mas sem sucesso.

Os próximos passos serão o estudo de engines de IA, como feito na dissertação do Börje. Vou pesquisar se já existem engines de IA adicionais ou se alguma tem se destacado recentemente.

Depois disso, vou organizar o Batalha Estelar, de modo que eu possa usa-lo como o primeiro protótipo. Ele é bastante adequado por vários motivos:

  1. Não foi projetado com IA em mente;
  2. Tem uma lógica simples, apenas 2 naves batalham e elas tem poucas opções;
  3. Tem uma física simples.
  4. Foi também desenvolvido por mim;
  5. Sua lógica é 2D, ideal para as primeiras experiências.

Após a reorganização do código, também disponibilizarei os fontes para download.

Written by vinigodoy

06 dUTC Janeiro dUTC 2008 às 23:18:06

2 Respostas

Subscribe to comments with RSS.

  1. Ja faz um bom tempo esse post, mas a havok liberou uma versao para uso pessoal um tempo atras, vem com toda API + documentacao.

    bcsanches

    28 dUTC Julho dUTC 2008 em 16:25:07

  2. Eu vi, foi algum tempo depois de eu ter postado.

    Pelo que percebi, a Havoc tem um modelo próprio de representar o mundo, o que te impõe duplicação de diversas informações em seu próprio modelo.

    Uma das desvantagens da engine de IA é que ela depende tanto da integração com a física, como da lógica do jogo.

    Assim, garantir pouco impacto e pouca duplicação de código é um desafio realmente difícil.

    vinigodoy

    28 dUTC Julho dUTC 2008 em 16:43:02


Deixe um comentário