El «Roll20 Mod Script Sandbox» ejecuta una máquina virtual del lado del servidor para cada campaña. Los scripts no se ejecutan en los ordenadores de los jugadores. El entorno aislado evita que los scripts de una campaña afecten a otra y detiene cualquier script que, de otro modo, se ejecutaría indefinidamente.
Las versiones v1.0 y v1.5 de Mod Script Sandbox utilizan este mismo modelo. La versión 1.5 incorpora el acceso a la hoja de Beacon (getComputed, setComputed, performAction y los métodos de caracteres relacionados), así como otras funciones. El hecho de que un juego utilice un «sandbox» no tiene nada que ver con que el juego de mesa sea «Jumpgate».
Cómo funciona
Si tiene curiosidad por conocer los detalles técnicos del funcionamiento del entorno de pruebas, aquí tiene un breve diagrama:
Scripts creados por los usuarios ===> Servidor de scripts de mods ===> Campaign Sandbox <===> Servidor de sincronización en tiempo real
El servidor de scripts Mod supervisa la actividad de su campaña. Cuando alguien se conecta a la partida, se inicia un entorno de pruebas y se cargan los scripts de mod de dicha partida. Cuando el juego está vacío, el «sandbox» se detiene. Al guardar y reiniciar el entorno de pruebas, se vuelven a ejecutar los scripts, se vuelve a activar la señal «ready» y se cancelan los temporizadores «setTimeout» pendientes. El «sandbox» envía y recibe datos a través del servidor de sincronización en tiempo real; así es como responde a los eventos y modifica el juego.
Todos los scripts de un juego comparten un único ámbito global. Una variable o una función definida al principio de un script es visible para los demás, y dos scripts que utilicen el mismo nombre se sobrescribirán mutuamente. Envuelva un script en una IIFE cuando sea necesario que sus nombres permanezcan privados. El estado también se comparte entre los scripts y se conserva de una sesión a otra. Campaign().nodeVersion es la versión de Node.js. No hay ningún requisito, ni DOM, ni console.log: utilice log(). Un error no detectado puede detener el entorno de pruebas de todos los scripts del juego; consulte «Scripts de mods: depuración».
Restricciones de Javascript normal
Aunque los scripts de Roll20 están escritos en JavaScript, existen algunas restricciones que debe tener en cuenta si está acostumbrado a programar en JavaScript para páginas web. Los scripts de Roll20 se ejecutan en un entorno aislado independiente del sitio web de Roll20. Esto proporciona una capa adicional de separación y seguridad para nuestro sistema y sus jugadores. Este entorno de pruebas significa que:
- No puede realizar solicitudes HTTP (AJAX).
- No puede cargar scripts ni bibliotecas externas (por ejemplo, jQuery). Underscore.js ya está disponible como variable global
_. Consulte underscorejs.org. - El entorno es JavaScript, pero no se trata de un entorno de navegador, por lo que no hay DOM, elementos de página, CSS,
documento,ventana, etc.