Estou implementando um NPC para percorrer um espaço virtual, especificamente um gato. Eu tenho uma série de clipes curtos de animação (3-5 segundos). Meu primeiro instinto foi escolher uma animação aleatória quando a última terminou, mas percebi que ela não pareceria realista, pois mudaria de comportamento com muita frequência, mesmo que a próxima animação seja limitada a possibilidades fisicamente contingentes.
Minha solução pretendida é algo como uma árvore de comportamento ( http://www.gamasutra.com/blogs/ChrisSimpson/20140717/221339/Behavior_trees_for_AI_How_they_work.php ), em que cada animação tem uma lista ponderada das próximas animações. Ou seja, se o gato está andando, ele tem 80% de chance de continuar andando, 20% de sentar, 0% de dormir. Basicamente, usando um modelo markov para obter o próximo passo apropriado.
No entanto, não tenho idéia se essa é uma boa solução, nem sei como vou gerar o mapeamento da animação atual para a próxima animação potencial + probabilidade. 30 animações * 30 próximas animações = 900 ponderações. Isso é muito para calcular manualmente.
Às vezes, o gato reage se atingir um obstáculo, mas o problema do problema é escolher uma sequência realista de animações sem selecioná-las com antecedência. Na árvore, também haveria outras informações, como proximidade com uma pessoa, localização na sala, tempo desde a última vez que comi etc.