Sto implementando un NPC per girare attorno a uno spazio virtuale, in particolare un gatto. Ho una serie di brevi clip di animazione (3-5 secondi). Il mio primo istinto era solo quello di scegliere un'animazione casuale al termine dell'ultima, ma mi sono reso conto che non sarebbe sembrato realistico poiché avrebbe cambiato il comportamento troppo spesso, anche se la successiva animazione è limitata a possibilità fisicamente contingenti.
La mia soluzione prevista è qualcosa di simile ad un albero dei comportamenti ( link ), dove ciascuno l'animazione ha una lista ponderata delle prossime animazioni. Cioè se il gatto cammina, ha l'80% di possibilità di continuare a camminare, il 20% di sedersi, lo 0% di dormire. In pratica, si utilizza un modello markov per ottenere il passaggio successivo appropriato.
Tuttavia non ho idea se questa sia una buona soluzione, né so come sto andando a generare la mappatura dall'animazione corrente alla potenziale successiva animazione + probabilità. 30 animazioni * 30 animazioni successive = 900 ponderazioni. Questo è molto da calcolare manualmente.
A volte il gatto reagisce se colpisce un ostacolo, ma il peso del problema è scegliere una sequenza realistica di animazioni senza prenderle tutte in anticipo. Nell'albero ci sarebbero anche altri input, come la vicinanza a una persona, la posizione nella stanza, il tempo trascorso dall'ultima volta ecc.