Update #250223

Questo post sarà più un devlog con un tono informale.

Nell’ultima settimana mi sono dedicato a generalizzare il sistema di interazioni tra i personaggi e l’ambiente circostante. Utilizzando il sistema di abilità (un sistema di base simile al GAS di Unreal) ho implementato un paio di abilità generiche che permettono di avviare delle animazioni, chiedere al sistema di IK del personaggio di raggiungere e mantenere determinati punti, cercare oggetti nelle vicinanze ecc…

Con questo nuovo sistema posso disaccoppiare le azioni dai personaggi e gestirle direttamente sull’oggetto dell’azione. Ad esempio, l’uso del computer è descritto sull’oggetto “computer” che a sua volta descrive che tipo di azione deve essere intrapresa:

  1. Porta le mani sul pc
  2. Abilita l’animazione “Typing”

O ad esempio, l’uso di una sedia è descritto in questo modo:

  1. Porta il sedere sulla sedia
  2. Abilita l’animazione seduta

Il tutto passa interamente per il sistema di abilità e quindi ogni personaggio eseguirà le azioni descritte a modo suo. Un esempio banale: un personaggio basso potrebbe saltare sulla sedia invece di sedersi e un personaggio “melma” con i tentacoli potrebbe portare un tentacolo sulla tastiera ma non potrebbe sedersi sulla sedia (perchè è una melma … )

Un esempio pratico

Le azioni implementate nello screenshot qui sotto sono 2:

  1. Siediti sulla sedia
  2. Utilizza il pc

Gli npc sono in grado di farlo in autonomia: la loro intelligenza artificiale gli dice di cercare un computer nei paraggi quando devono fare determinati compiti nel quartier generale (è un pò più complesso di così ma rende l’idea, magari più avanti faccio un post e spiego come è strutturato il loro albero comportamentale) e quando ne trovano uno si siedono prima alla sedia e poi iniziano ad usare la tastiera.

Npc che non sa sedersi bene

Devo solo insegnarli a stare dritti sulla sedia perchè a quanto pare si siedono esattamente come me. 🙂


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *