This document describes how a Scene Preview Service can be created using minimal versions of the Content Server and Comms.
Today users that don't own a LAND or are not ready to push their content to production need to use a Heroku application container to be able to preview and share a scene with different stakeholders. This solution requires some extra configuration steps and, on the other hand, it will stop being free according to the latest Heroku news. To ease the life of the content creators, a new scene preview server will be created, leveraging the same steps than when uploading content to the Catalyst network and enabling an easy way to validate and experience the content before it is finally uploaded to the Genesis City.
The solution for the scenes preview will be done in stages
Create a BETA program where the technical feasibility of the project can be evaluated and test the experience from the content creators perspective.
WARNINGS:
Scope of the BETA:
This implementation will allow content creators to deploy a scene in a preview server and join the scene with a maximum number of concurrent users. The solution is composed of three areas, the CLI, the backend infrastructure and the Explorer experience which will be detailed below.
Some common language considerations to have in mind while reading the next sections:
yourname.dcl.eth).
      From the Content Creators point of view, the experience will be very simple, only run the same deploy command but adding as a target the URL of the new preview server, e.g.
dcl deploy --target-content https://worlds-content-server.decentraland.org
      In case the wallet has multiple NAMEs, the creator can specify under which NAME that
      deployment is to be made. In scene.json add a section like this:
    
{
  "worldConfiguration": {
    "dclName": "my-name.dcl.eth"
  }
}
    Of course, the NAME specified there needs to be owned by the wallet doing the deployment.
      The output of this command should contain a link that can be shared and used to jump in to the
      scene preview, e.g. https://play.decentraland.org/?reaml=yourname.dcl.eth
    
      Adding the Decentraland NAME value to the realm queryParameter will take you to the
      uploaded World, or joining Decentraland and typing
      /changerealm yourname.dcl.eth will have the same effect.
    
      The Explorer client in order to work needs to resolve scenes, users identity (avatar,
      wearables, emotes, etc) and communications between peers. Unlike production where all of them
      are obtained from the same
      Catalyst Node, here a
      Preview Content Server and a Comms Preview Server will be needed. The scenes assets and
      information that the client needs will be resolved from the Preview Content Server and the
      communications orchestration between peers joining a preview will be handled by the Comms
      Preview Server. On the other hand, users identity will continue to be retrieved from a DAO
      Catalyst node.
      For this to work, the client will receive several new parameters:
      preview content server from which to resolve the scene assets, scene identifier,
      and the comms preview server URL.
    
flowchart TD
    B["Explorer Client"]
    C(Preview Content Server) -- scene-id --> B
    D(Preview Comms Server)-->B
    E("Catalyst/Realm") -- avatars -->B
    
      In order to run, the Client needs to connect to a Realm. In this case, the Preview Content
      Server will act as Realm implementing the endpoint /about documented in
      ADR-110.
    
This way the Client will load:
configurations.scenesUrncontent.publicUrllambdas.publicUrlconfigurations.minimap (loaded from the
        scene.json)
      Example:
{
  "healthy": true,
  "configurations": {
    "networkId": 1,
    "globalScenesUrn": [],
    "scenesUrn": [
      "urn:decentraland:entity:bafkreifdgd7qccas3r2tywzgzo74mpr4i3vcq?baseUrl=https://worlds-content-server.decentraland.org/ipfs/"
    ],
    "cityLoaderContentServer": ""
  },
  "content": {
    "healthy": true,
    "publicUrl": "https://peer.decentraland.org/content"
  },
  "lambdas": {
    "healthy": true,
    "publicUrl": "https://peer.decentraland.org/lambdas"
  }
}
    Note: the about endpoint schema is defined at https://github.com/decentraland/protocol/blob/main/proto/decentraland/bff/http_endpoints.proto
      When the Client loads a scene from the Preview server, the experience should be slightly
      different as the mini map should not be loaded. The scene is going to be isolated from
      the Genesis City. Besides this, there should be a way to control the skybox settings so that
      creators can test their scenes with day light and night light. To accomplish this, a new
      worldConfiguration field should be added to the scene.json.
    
scene.json
{
  "worldConfiguration": {
    "skybox": 36000,
    "minimapVisible": false
  }
}
    
      skybox: This property indicates how many seconds have passed (in Decentraland
      time) since the start of the day, assuming the full cycle lasts 24 hours. Divide the seconds
      value by 60 to obtain minutes, and by 60 again to obtain the hours since the start of the day.
      For example, if the seconds value is 36000, it corresponds to 10 AM.
    
      minimapVisible: this boolean property will determine whether or not to show the
      Genesis City mini map when loading the scene.
    
These properties will only be processed by the Hosted Scene preview service and be ignored if they are present in any scene deployed to the Genesis City.

      The Explorer Client needs to support the commands /goto and
      /changerealm.
    
/goto <parcel> command, then the scene will reload to the
        corresponding parcel of a DAO Realm.
      /changerealm <realm> command, then the scene will reload to the
        0,0 parcel of the corresponding Realm.
      
      To load the navbar with the Explore, Backpack, Map and
      Settings one Realm will be chosen. So, when loading the map the users connected
      shown there will correspond to that Realm. So if the user want to jump in to a hot-scene, then
      the Explorer Client will reload that corresponding scene of the chosen Realm.
    
As a result:
After BETA testing, incorporating feedback and fine tunning the experience, the GA of the preview Server can be planned.
Based on the BETA testing:
With all the pieces in place, it should be simple to provide an easy way to run preview server that Content Creators can use to share scenes in a private environments.