Arquivo para maio \11\UTC 2011

Semana produtiva de trabalho

Galera essa semana foi muito produtiva para mim, consegui eliminar um pouco do que estava sobrecarregado na hora de trabalhar com IA, os laços que eram feitos resultou em um gargalo dentro do nosso jogo, isso porque o pathfinding da IA usa muitos laços pra ser depois finalizado e quanto mais personagens eram adicionados, mais o gargalo aumentava.

Enquanto estava só um ou dois personagens usando esse cálculo estava tranquilo, quando coloquei mais que isso já senti o peso de se fazer um jogo pra celular 😀

Bom, vamos a solução, uma das soluções que pensei foi a de se usar threads, mas não deu certo porque apesar de o jogo continuar o processo sem precisar esperar o final da thread ele ficava pesado porque o ficava disputando o processo com o processador.

Na segunda tentativa coloquei o processo de IA em fila, mas não deu certo também, apesar de ficar melhor porque era executado um processo por vez, quando um era finalizado um o outro da fila entrava. O problema é que quando a fila era grande os personagens começavam a ficar parados esperando a vez na fila para serem calculados. =S

Finalmente me veio a luz, aproveitar o próprio loop do jogo para calcular esses processos, no celular temos um limite de 30 fps, isso que dizer que eu tinha 30 loops para usar e tornei os processos cumulativos, assim ao invés de criar um laço para fazer os cálculos eu executo um cálculo por vez dentro de cada quadro do fps, como eu sempre retorno uma lista de posições pra onde o personagem deve ir esse processo deu certo, sem falar que a maioria dos laços que eu fazia procurando uma informação transformei em índices, assim estamos conseguindo fazer um jogo com os gráficos que gostaríamos e lógica de programação que ele merece.