Il Roll20 Mod Script sandbox esegue una macchina virtuale lato server per ogni campagna. Gli script non vengono eseguiti sui computer degli utenti. Il sandbox impedisce che gli script di una campagna influenzino quelli di un’altra campagna e blocca gli script che altrimenti continuerebbero a essere eseguiti all’infinito.
Le versioni v1.0 e v1.5 di Mod Script Sandbox utilizzano lo stesso modello. La versione 1.5 introduce l'accesso alla scheda Beacon (getComputed, setComputed, performAction e i relativi metodi dei caratteri), oltre ad altre funzioni. Il fatto che un gioco utilizzi una determinata sandbox è una questione distinta dal fatto che il tavolo di gioco sia Jumpgate.
Come funziona
Se desiderate conoscere i dettagli tecnici relativi al funzionamento della sandbox, ecco un breve schema:
Script scritti dagli utenti ===> Server degli script di mod ===> Campaign sandbox <===> Server di sincronizzazione in tempo reale
Il Mod Script Server monitora l'attività relativa alla Sua campagna. Quando un utente entra nel gioco, viene avviata una sandbox e vengono caricati gli script di mod di quel gioco. Quando il gioco è vuoto, la sandbox si arresta. Salvando e riavviando la sandbox, gli script vengono eseguiti nuovamente, l'evento " ready " viene attivato nuovamente e i timer setTimeout in sospeso vengono annullati. La sandbox invia e riceve dati tramite il server di sincronizzazione in tempo reale; è in questo modo che reagisce agli eventi e modifica il gioco.
Ogni script di un gioco condivide un unico ambito globale. Una variabile o una funzione definita all'inizio di uno script è visibile agli altri script, e due script che utilizzano lo stesso nome si sovrascriveranno a vicenda. Si raccomanda di racchiudere uno script in un IIFE quando si desidera che i nomi al suo interno rimangano privati. Lo stato viene inoltre condiviso tra i vari script e mantenuto tra una sessione e l’altra. Campaign().nodeVersion indica la versione di Node.js. Non è previsto alcun require, nessun DOM e nessun console.log: si utilizzi log(). Un errore non intercettato può causare l'arresto della sandbox per ogni script del gioco; si veda la sezione " Script delle mod: debug".
Restrizioni rispetto al normale Javascript
Sebbene gli script di Roll20 siano scritti in JavaScript, esistono alcune limitazioni di cui è bene essere a conoscenza se si è abituati a programmare in JavaScript per i siti web. Gli script Roll20 vengono eseguiti in un ambiente sandbox separato dal sito Roll20. Ciò garantisce un ulteriore livello di separazione e sicurezza per il nostro sistema e per i vostri giocatori. Questo sandbox implica che:
- Non è possibile effettuare richieste HTTP (AJAX).
- Non è possibile caricare script o librerie esterne (ad esempio jQuery). Underscore.js è già disponibile come variabile globale
_. Si veda il sito underscorejs.org. - L'ambiente è JavaScript, ma non si tratta di un ambiente all'interno di un browser, pertanto non sono presenti DOM, elementi della pagina, CSS,
documento,finestra, ecc.