# Visão Geral

O runtime de cenas do Decentraland é o ambiente de execução isolado onde uma [cena](https://github.com/decentraland/docs/blob/main/content/entity-types/scenes.md) executa seu script principal.

Cada cena é executada dentro do seu próprio runtime isolado. Dentro dele, tem acesso a certos [objetos globais](https://github.com/decentraland/docs/blob/main/contributor/globals.md) e pode importar [módulos](https://github.com/decentraland/docs/blob/main/contributor/modules.md) da biblioteca do runtime.

{% @mermaid/diagram content="flowchart TB
subgraph WorldExplorer\["World Explorer"]
subgraph Runtime1\["Runtime 1"]
Scene1\["Scene"]
end

```
    subgraph Runtime2["Runtime 2"]
        Scene2["Scene"]
    end
    
    subgraph Runtime3["Runtime 3"]
        Scene3["Scene"]
    end
    
    Scene1 --> Library["Runtime Module Library"]
    Scene2 --> Library
    Scene3 --> Library
end" %}
```

Ao importar módulos da biblioteca do runtime, as cenas têm acesso a uma ampla gama de funcionalidades, incluindo:

* Criar entidades e controlar seu comportamento
* Interagir com o jogador
* Comunicar-se com outros jogadores
* Inspecionar o estado do mundo
* Conectar-se a serviços externos
* Realizar pagamentos web3

Na prática, as cenas empacotam o [Decentraland SDK](https://github.com/decentraland/docs/blob/main/contributor/creator/sdk7/getting-started/sdk-101.md) com seu código, o que encapsula a interface estilo RPC da biblioteca do runtime e fornece uma API mais agradável e confortável.

{% hint style="info" %}
Observe que o SDK é *não* parte do protocolo Decentraland, apenas as interfaces de nível mais baixo são. As cenas podem decidir se empacotam o SDK ou usam bibliotecas alternativas.
{% endhint %}

### Objetos Globais

Dentro do ambiente isolado, [cenas](https://github.com/decentraland/docs/blob/main/content/entity-types/scenes.md) assume-se que certos objetos e funções estejam globalmente disponíveis. Alguns são objetos padrão do ES2020 (como `Date` ou `Math`), e outros são injetados pelo runtime para implementar funcionalidades como requerer módulos, registrar mensagens e agendar callbacks.

Veja [globals](https://github.com/decentraland/docs/blob/main/contributor/globals.md) para mais detalhes.

### Módulos

O [`require`](https://github.com/decentraland/docs/blob/main/contributor/globals.md#module) função global pode importar módulos fornecidos pela [biblioteca do runtime](https://github.com/decentraland/docs/blob/main/contributor/execution.md). Esses módulos permitem importar seletivamente utilitários como os sistemas ECS ou Communications.

Consulte a seção de módulos do runtime para uma lista abrangente.

### Execução

O runtime exige que as cenas implementem um conjunto específico de métodos e garante que eles serão chamados de acordo com certas regras.

Veja [execution](https://github.com/decentraland/docs/blob/main/contributor/execution.md) para saber mais sobre isso.

### Permissões

Funcionalidades sensíveis, como fazer requisições HTTP para serviços de terceiros, são restritas pelo runtime a menos que certas permissões sejam solicitadas pelo [cena](https://github.com/decentraland/docs/blob/main/content/entity-types/scenes.md), e concedidas pelo jogador.

Veja [permissions](https://github.com/decentraland/docs/blob/main/contributor/permissions.md) para saber mais.
