Estoy implementando un NPC para caminar por un espacio virtual, específicamente un gato. Tengo una serie de cortos clips de animación (3-5 segundos). Mi primer instinto fue elegir una animación aleatoria cuando terminó la última, pero me di cuenta de que no se vería realista, ya que cambiaría el comportamiento con demasiada frecuencia, incluso si la siguiente animación se limita a posibilidades físicamente contingentes.
Mi solución prevista es algo así como un árbol de comportamiento ( http://www.gamasutra.com/blogs/ChrisSimpson/20140717/221339/Behavior_trees_for_AI_How_they_work.php ), donde cada animación tiene una lista ponderada de las siguientes animaciones. Es decir, si el gato está caminando, tiene un 80% de posibilidades de seguir caminando, 20% de estar sentado, 0% de dormir. Básicamente, utilizando un modelo de Markov para obtener el siguiente paso apropiado.
Sin embargo, no tengo idea si esta es una buena solución, ni sé cómo voy a generar el mapeo de la animación actual a la próxima animación potencial + probabilidad. 30 animaciones * 30 animaciones siguientes = 900 ponderaciones. Eso es mucho para calcular manualmente.
El gato a veces reaccionará si golpea un obstáculo, pero la peor parte del problema es elegir una secuencia realista de animaciones sin elegirlas todas por adelantado. En el árbol también habría otras entradas, como proximidad a una persona, ubicación en la habitación, tiempo desde la última vez que comió, etc.