Scripts de modificação: Modelo Sandbox

O Roll20 Mod Script Sandbox executa uma máquina virtual do lado do servidor para cada campanha. Os scripts não são executados nos computadores dos jogadores. O ambiente isolado impede que os scripts de uma campanha afetem outra campanha e interrompe um script que, de outra forma, continuaria a ser executado indefinidamente.

O Mod Script Sandbox v1.0 e v1.5 utilizam este mesmo modelo. A versão 1.5 adiciona o acesso à folha do Beacon (getComputed, setComputed, performAction e métodos de caracteres relacionados), bem como outras funções. O facto de um jogo utilizar uma determinada «sandbox» não está relacionado com o facto de o jogo de mesa ser o «Jumpgate».

Como funciona

Se estiver curioso quanto aos detalhes técnicos do funcionamento da sandbox, eis um breve diagrama:

Scripts escritos pelos utilizadores ===> Servidor de scripts de modificação ===> Campaign Sandbox <===> Servidor de sincronização em tempo real

O Mod Script Server monitoriza a atividade na sua campanha. Quando alguém está no jogo, é iniciada uma sandbox e são carregados os scripts de modificação desse jogo. Quando o jogo estiver vazio, a área de testes pára. Ao guardar e reiniciar a sandbox, os scripts são executados novamente, o evento «ready» é disparado novamente e os temporizadores «setTimeout» pendentes são cancelados. A sandbox envia e recebe dados através do servidor de sincronização em tempo real, sendo essa a forma como responde aos eventos e altera o jogo.

Todos os scripts de um jogo partilham um único âmbito global. Uma variável ou função definida no início de um script é visível para os restantes, e dois scripts que utilizem o mesmo nome irão substituir-se mutuamente. Envolva um script numa IIFE quando os seus nomes devam permanecer privados. O estado é também partilhado entre os scripts e é mantido entre sessões. Campaign().nodeVersion corresponde à versão do Node.js. Não há require, nem DOM, nem console.log — utilize log(). Um erro não detetado pode interromper a sandbox para todos os scripts do jogo; consulte «Scripts de modificação: Depuração».

Restrições do Javascript normal

Embora os scripts do Roll20 sejam escritos em JavaScript, existem algumas restrições que deve ter em conta se estiver habituado a programar em JavaScript para sítios Web. Os scripts do Roll20 são executados numa área restrita separada do site Roll20. Isso proporciona uma camada adicional de separação e segurança para o nosso sistema e para os seus jogadores. Esta área restrita significa que:

  • Não é possível realizar solicitações HTTP (AJAX).
  • Não é possível carregar scripts ou bibliotecas externas (por exemplo, o jQuery). O Underscore.js já está disponível como a variável global _. Consulte o site underscorejs.org.
  • O ambiente é o JavaScript, mas não se trata de um ambiente num navegador, pelo que não existe DOM, elementos da página, CSS, documento, janela, etc.
Este artigo foi útil?
40 de 56 acharam isto útil