# NPC e conversazioni

Una delle caratteristiche più interessanti del Coderblock World è che, all’interno delle tue scene o land virtuali, puoi inserire degli **NPC** (*Non Playable Characters*) e creare dei flussi di conversazione che si attiveranno ogni volta che un utente interagirà con loro!

Conversazioni di questo tipo rappresentano un passo significativo verso un'esperienza di gioco più immersiva e dinamica: i dialoghi interattivi e realistici - potenziati dall'intelligenza artificiale - contribuiscono infatti a creare un ambiente più vivo e coinvolgente, rendendo l'esperienza utente unica.

<figure><img src="https://2251493269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7Xx9MXfrv3u3rqwjPomO%2Fuploads%2FlGaotsAP3Lr9lomaP6EZ%2Fottimizzazione%20flussi.jpg?alt=media&#x26;token=a6ddcab5-f09d-4d02-842b-34e5630eebf4" alt=""><figcaption><p>NPC e conversazioni - esempio</p></figcaption></figure>

### Inserire un NPC in scena

Puoi inserire sia uno dei nostri Cody che uno dei Digital Humans come NPC nella tua scena. \
Cerca **NPC** nella barra di ricerca del Builder e scegli il tuo preferito!

<div><figure><img src="https://2251493269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7Xx9MXfrv3u3rqwjPomO%2Fuploads%2FiIvXev4y27bvKU0EZH5R%2FScreenshot%202024-07-01%20alle%2012.00.23.png?alt=media&#x26;token=18f31377-01d7-4042-9a3c-fc79f85970fd" alt="" width="250"><figcaption></figcaption></figure> <figure><img src="https://2251493269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7Xx9MXfrv3u3rqwjPomO%2Fuploads%2F2AI7RsCQjuxRxaUwTtkS%2FScreenshot%202024-07-01%20alle%2012.00.49.png?alt=media&#x26;token=cfd2d441-0892-492e-aff3-ba552c5e15f2" alt="" width="258"><figcaption></figcaption></figure></div>

Una volta selezionato l'NPC, posizionalo dove preferisci all'interno della tua scena. Potrà accogliere gli utenti all'ingresso di un edificio, farsi trovare accanto a una scrivania o al tavolo di una stanza riunioni, o magari nei pressi del luogo in cui hai impostato l'inizio di una [Quest](#gestione-delle-quest-tramite-conversazione-con-npc): qualunque posto può essere adatto per un NPC nella tua scena!

### Impostare il flusso di conversazione

Una volta posizionato l'NPC, cliccaci sopra e clicca poi su '***Crea Conversation***'.

<figure><img src="https://2251493269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7Xx9MXfrv3u3rqwjPomO%2Fuploads%2FdCzoRiDtDEATRP4jPxGt%2FScreenshot%202024-07-01%20alle%2012.08.59.png?alt=media&#x26;token=d38869d1-15c3-43f0-bc07-39e3adf374b7" alt="" width="138"><figcaption></figcaption></figure>

I flussi di conversazione sono gestiti tramite dei ***Narrative Event.***\
Ogni *Narrative Event* rappresenta un 'nodo' nel flusso di conversazione, e le scelte dell'utente determineranno l'effettivo susseguirsi di nodi e di conseguenza la conversazione con l'NPC mostrata.

In ogni *Narrative*, si possono aggiungere uno o più '*Items*', che si possono considerare come '*sotto nodi'*. Puoi scegliere tra due tipologie di Items:

* **ItemText**: è un item 'informativo', 'conversazionale'. Un semplice testo che potrai decidere di inserire all'interno della conversazione e che non prevede una scelta, ma permette al flusso di conversazione di continuare fino alla fine di quel particolare Narrative Event, o fino alla presenza di un ItemChoice. Se non vi sono ItemChoice e il Narrative Event finisce (ovvero non ci sono altri ItemText), la conversazione con l'NPC terminerà.&#x20;
* **ItemChoice**: permette all'utente di effettuare una scelta per mezzo delle '*Answer*', tramite le quali il flusso di conversazione si sposta su un'altro Narrative Event. Clicca su '***Add Answer***' per inserire le scelte che può effettuare l'utente (con il testo che verrà mostrato nei pulsanti di scelta) e le relative Narratives su cui il flusso di conversazione atterrerà a seconda della scelta.

<div><figure><img src="https://2251493269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7Xx9MXfrv3u3rqwjPomO%2Fuploads%2FaEKc0Dx6D9YRjVPeUMnB%2FScreenshot%202024-07-01%20alle%2013.20.44.png?alt=media&#x26;token=930b2c8b-fe50-4b7f-ae03-e3fdef71fb5e" alt="" width="315"><figcaption></figcaption></figure> <figure><img src="https://2251493269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7Xx9MXfrv3u3rqwjPomO%2Fuploads%2F4Oxqm8kkstsjrUbHirWJ%2FScreenshot%202024-07-01%20alle%2013.20.53.png?alt=media&#x26;token=583566cd-8dc5-443b-b9f3-dbe29eead0d7" alt="" width="308"><figcaption></figcaption></figure> <figure><img src="https://2251493269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7Xx9MXfrv3u3rqwjPomO%2Fuploads%2FrdhQwZD4vhSDv5kZZh7U%2FScreenshot%202024-07-01%20alle%2013.21.20.png?alt=media&#x26;token=c569b4ec-6591-4f78-a33d-18f5357876a6" alt="" width="316"><figcaption></figcaption></figure></div>

Per entrambe le tipologie di Items, puoi inserire in '*Dialogue Text*' ciò che dirà l'NPC quando il flusso di conversazione giungerà in quel particolare Item.

Per aggiungere un item al Narrative Event basta cliccare su '*Add ItemText*' o '*Add ItemChoice*', e questo si posizionerà dopo l'ultimo Item precedentemente creato (o come primo nel caso non hai ancora aggiunto nessun Item).

<figure><img src="https://2251493269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7Xx9MXfrv3u3rqwjPomO%2Fuploads%2FBeG2iP5XB42yeLB5emzo%2FScreenshot%202024-07-01%20alle%2012.54.13.png?alt=media&#x26;token=5176fceb-c5b4-41d4-8ecf-517407d9df35" alt="" width="287"><figcaption></figcaption></figure>

Per ogni Item puoi anche definire delle *Conditions* e degli *Effects* che ti permettono di gestire meglio la conversazione, determinando le condizioni affinché quel 'sotto nodo' venga mostrato all'utente durante la conversazione, o gli effetti che questo attiverà.\
La principale funzione di queste due impostazioni è quella di gestire le Quest, come spiegato [QUI](#gestione-delle-quest-tramite-conversazione-con-npc).

<figure><img src="https://2251493269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7Xx9MXfrv3u3rqwjPomO%2Fuploads%2FqzRUlTnUdYRaX7wK6593%2FScreenshot%202024-07-01%20alle%2013.38.56.png?alt=media&#x26;token=505e5372-62c3-453e-ba67-47f8881ec97d" alt="" width="305"><figcaption></figcaption></figure>

Una volta creata la conversazione, potrai modificarla ogni volta che vorrai cliccando sull'NPC e poi su '***Aggiorna Conversation***'.\
Ricordati sempre di cliccare su '***Salva***' nel singolo Item di una Narrative quando lo modifichi, ma anche sul '*Salva*' della conversazione generale, in alto.

<figure><img src="https://2251493269-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7Xx9MXfrv3u3rqwjPomO%2Fuploads%2FmENqjHNZeVOV8MMdVz4H%2FScreenshot%202024-07-01%20alle%2012.11.40.png?alt=media&#x26;token=77ece3cc-89df-4455-bae1-1518267e1736" alt="" width="165"><figcaption><p>NPC conversations - Save</p></figcaption></figure>

Infine, clicca in alto a destra sul pulsante verde '***Save Scene**'* per attivare le tue modifiche.

### Gestione delle Quest - *Condition* ed *Effect*

I nostri NPC non sono solo simpatici personaggi, in grado di fornire informazioni e dare compagnia agli utenti, ma possono anche svolgere un ruolo davvero cruciale all'interno del tuo ambiente virtuale.

**L'attivazione e gestione delle** [**Quest**](https://docs-it.coderblock.com/coderblock-studio/builder-tool/quest-cosa-sono-e-come-crearle) **è, infatti, interamente demandata agli NPC** e alle loro conversazioni!

La parte del flusso di conversazione relativa alla gestione delle quest merita un approfondimento a parte. Stiamo parlando delle sezioni relative a *Condition* ed *Effect*, che trovi nel dettaglio [QUI](https://docs-it.coderblock.com/coderblock-studio/quest-cosa-sono-e-come-crearle#gestione-quest-tramite-npc-condition-ed-effect).
