La plateforme « Roll20 Mod Script Bac à sable » exécute une machine virtuelle côté serveur pour chaque campagne. Les scripts ne s'exécutent pas sur les ordinateurs des joueurs. Le « Bac à sable » empêche les scripts d'une campagne d'affecter une autre campagne et met fin à l'exécution d'un script qui, sans cela, tournerait indéfiniment.
Les versions v1.0 et v1.5 de Mod Script Bac à sable utilisent ce même modèle. La version 1.5 ajoute l'accès à la feuille « Beacon » (getComputed, setComputed, performAction et les méthodes associées aux personnages), ainsi que d'autres fonctions. Le choix de l'environnement de jeu utilisé par un jeu n'a aucun rapport avec le fait que le jeu sur table soit ou non « Portail ».
Fonctionnement
Si vous souhaitez en savoir plus sur les détails techniques du fonctionnement du Bac à sable, voici un schéma succinct :
Scripts créés par les utilisateurs ===> Serveur de scripts de mod ===> Bac à sable de campagne <===> Serveur de synchronisation en temps réel
Le serveur Mod Script surveille l'activité de votre campagne. Lorsqu'un joueur se connecte à la partie, un Bac à sable est lancé et les scripts de mod de cette partie sont chargés. Lorsque le jeu est vide, le Bac à sable s'arrête. La sauvegarde et le redémarrage du Bac à sable relancent les scripts, déclenchent à nouveau l'événement « ready » et annulent les temporisateurs « setTimeout » en attente. Le bac à sable envoie et reçoit des données via le serveur de synchronisation en temps réel ; c'est ainsi qu'il réagit aux événements et modifie le jeu.
Chaque script d'un jeu partage une portée globale. Une variable ou une fonction définie au début d'un script est accessible aux autres scripts, et deux scripts portant le même nom se remplaceront mutuellement. Enveloppez un script dans une IIFE lorsque ses noms doivent rester privés. L'état est également partagé entre les scripts et conservé d'une session à l'autre. Campaign().nodeVersion correspond à la version de Node.js. Il n'y a ni require, ni DOM, ni console.log — utilisez log(). Une erreur non interceptée peut interrompre le fonctionnement du Bac à sable pour tous les scripts du jeu ; voir « Scripts de mod : débogage ».
Restrictions par rapport au JavaScript standard
Bien que les scripts Roll20 soient écrits en JavaScript, il existe certaines restrictions dont vous devez tenir compte si vous avez l'habitude de programmer en JavaScript pour des sites web. Les scripts Roll20 sont exécutés dans un bac à sable distinct du site Roll20. Cela offre un calque supplémentaire de séparation et de sécurité pour notre système et vos joueurs. Ce bac à sable signifie que :
- Il n'est pas possible d'effectuer des requêtes HTTP (AJAX).
- Vous ne pouvez pas charger de scripts ou de bibliothèques externes (par exemple, jQuery). Underscore.js est déjà disponible en tant que variable globale
_. Consultez le site underscorejs.org. - L'environnement est JavaScript, mais il ne s'agit pas d'un environnement de navigateur ; il n'y a donc pas de DOM, d'éléments de page, de CSS,
de document,de fenêtre, etc.