Questões de vida (artificial), apenas
Andei nos últimos dias estudando e desenvolvendo uma inteligência artificial para o meu jogo, até agora está em uma fase bastante inicial, mas já envolve bastante conceitos e definitivamente não é fácil de implementar. Achei que seria interessante falar de alguns dos principais tópicos sobre Inteligência Artificial para games, para dar uma introdução para quem quer ter personagens ou sistemas mais naturais e reais nos seus jogos e quem quer saber como toda essa coisa funciona.
State Machines
O uso de State Machines é uma das técnicas mais utilizadas na IA para games. As Finite State Machines seguem a lógica que um dado sistema tem um determinado número de estados, do qual ele pode estar em algum deles e mudar para outro conforme certas ocasiões.
Um exemplo de Finite State Machine é termos um inimigo que não está vendo o herói. Ele está no estado Normal. Neste estado, ele pode fazer coisas como andar de um lugar para outro ou ficar parado. Se o herói entra no campo de visão do inimigo, este muda de estado para Seguindo Herói. Neste estado, o inimigo passa a executar outras ações, como seguir o herói ou atacar se estiver bastante próximo. Se o herói se afasar o bastante, o inimigo volta para o estado Normal. Caso o herói ataque o inimigo, este pode entra num estado Machucado. Neste estado, o inimigo poderia fugir do herói, recuperar a vida e retornar ao estado Normal ou Seguindo Herói, dependendo da distância atual. Caso no estado Seguindo Herói, o inimigo ataque o herói, ele pode então entrar num estado Euforia, onde o inimigo estaria de baixa guarda por alguns segundos, dando chance para o herói contra-atacar.
Uma evolução do sistema de Finite State Machines é o Fuzzy State Machines, onde o dado sistema pode não apenas estar em um estado ou em outro, mas sim estar parcialmente em certos estados. Aplicado no exemplo anterior, poderiamos ter o inimigo com uma porcentagem variável no estado Seguindo Herói, onde quanto mais próximo o herói chega, mais rápido o inimigo o segue, e conforme se afasta, o inimigo reduz sua velocidade e vai voltando ao ponto de repouso dele.
Fuzzy Logic
O conceito da Fuzzy logic é que algo que originalmente deveria ser considerado apenas como “Verdadeiro ou Falso”, “Ligado ou Desligado”, “Longe ou Perto”, possa ter valores intermediários, como “Meio verdadeiro”, “27% ligado”, “consideravelmente perto”. A idéia disso é ter pré-determinados estados, determinar as condições para que cada um seja verdadeiro, e então fazer com que o sistema, dada a situação do momento, calcule qual dos estados é o mais relevante.
Flocking
Flocking é um sistema de comportamento. A idéia do flocking é ter uma movimentação de um grupo, este constituído de seres independentes. Com isso, pode-se criar multidões de pessoas, cardumes de peixes, grupos de pássaros, entre outros. Cada indivíduo consegue se adequar ao grupo seguindo 4 regras: evitar colisão com os vizinhos, alinhar-se em relação aos vizinhos, mover-se de acordo com o posicionamento dos vizinhos e desviar de obstáculos.
Um exemplo clássico do flocking é o grupo de pássaros. Pode-se ter, inicialmente, vários pássaros voando em diferentes velocidades e direções, mas conforme se aproximam de outros pássaros, vão se agrupando aos poucos, e logo todos os pássaros estão agrupados.
Pathfinding – A*
O algoritmo A* ( pronunciado “A Star”) é um algoritmo bastante utilizado para calcular o melhor caminho entre um ponto inicial e um ponto de chegada. Para funcionar, o algoritmo necessita que o terreno esteja divido de alguma forma, o que torna o algortimo difícil de implementar, porque existem muitas formas de divisão de terrenos, e cada uma se adapta melhor a certas exigências, e para cada divisão o algoritmo vai ser mais ou menos eficiente em certos fatores.
O que esse algortimo faz é pegar a posição inicial, e para cada divisão adjacente, verificar se o personagem pode se mover até lá ou não. Fazendo isso recursivamente, o algoritmo vai encontrar certos caminhos possíveis, e então vai escolher o que for mais rápido para chegar até o destino.
Neural Nets
As redes neurais são um dos sistemas de inteligência artificial mais complexos, mas ao mesmo tempo mais interessantes. As redes neurais funcionam através de neurônios artificiais criados com base nos neurônios reais. Esses neurônios interligam-se em camadas, criando a rede. Através de valores que são passados como entrada, e determinados pesos para cada valor, é produzida uma saída. Através desse processo de informações, é possível treinar um sistema, e fazer com que ele aprenda através das suas ações e resultados.
As possibilidades do que se pode fazer com uma rede neural são infinitas: inimigos que reconheçam padrões de luta do jogador e aprendam a “contra-lutar”, NPCs que mudem sua personalidade conforme suas interações com o jogador, equipamentos que se adaptem ao jogador e às batalhas…
Com esses conceitos apresentados, acredito que algumas pessoas já tenham começado a entender como funcionam alguns sistemas inteligentes, e até talvez já saibam quais sistemas usar e não usar para determinadas ocasiões que queiram criar em seus jogos. Não vou postar nenhum link sobre os assuntos, mas pesquisando se acha bastante coisa. Até mais!
em Agosto 8, 2008 em 8:13 am
ohaaaa demoro pra nois isso aew mheo ….
podia rolar seria da hora …
flw aew ….i bahhhhhh começo beim fuder !!!!