SDK Release 6.0.0

Latest releases:

Repository link

Legacy releases


  • External links
  • Font support (for now only San Francisco and its variations)
  • Support for videos from files
  • Picture frame support for any NFT from Open Sea
  • Picture frame support for GIF NFTs
  • Open picture frame UI
  • New reflection texture on metallic materials
  • Preview keeps loading even when browser window is inactive
  • Hide/Show DCL UI by pressing the U key
  • Several scene-loading optimizations


  • Support for audio streaming
  • Support for video streaming
  • Support for external texture URLs with upper and lower case

  • Bug Fixes:
    • Fixed issue with flickering of textures while loading, which sometimes made objects transparent or partially transparent
    • An OnPointerDown component is no longer passed on to an entity’s parents
    • Invisible entities no longer show on-hover click feedback.
    • On-hover click feedback no longer shown when entities are too far to click




  • On-hover feedback for clickable entities Button events
  • The rays of button events don’t go through other entity’s colliders.
  • Mouse sensitivity improved, making it easier to point at small objects
  • Bug Fixes:

  • Camera rotation includes all axis again
  • Player less likely to fall off moving platforms


  • Optimized queuing of raycasting messages. See Raycasting for details.
  • Fine tuned messaging budget per frame to handle more actions in the scene
  • Bug fixes:

    • Players now take their time to fall, instead of falling instantly
    • Various animations fixes, including support for animations that are non-skeletal or that have rotations, colliders, or transitions with non-linear curves.
    • Fixed uv mapping of textures created via code
    • Triangle count in the Panel now properly reflects true triangles being used.
    • Issue fixed with large animations that were timing out and not loaded into the scene
    • Issue fixed where cursor gets stuck for a few seconds when leaving the preview window and then returning.


  • Material colors now support Color4 to include alpha values easily
  • Bug fixes:

  • The UITextInput now retunrs the provided text in the “value” field
  • The player no longer loses control of the pointer when standing on a rotating platform
  • The player no longer instantly teleports to the ground when falling off a cliff
  • Transparent materials using AlphaTest mode now work as expected


  • More detailed feedback when entities are out of scene bounds, marking mesh bounding boxes
  • Various bug fixes:

  • Original material for entities out of scene bounds is restored on hot reload
  • Alpha clipping is fixed on 3D models that use partially transparent textures
  • Players can jump from slanted ground
  • Scene spawning points defined on scene.json work on preview
  • Repeated 3D models with animations now all play
  • P2P communication fixed between local isntances of a scene running in preview
  • Large scene loading time performance improvements


  • Raycasting
  • Global BUTTON_DOWN and BUTTON_UP events
  • Support for PRIMARY and SECONDARY button events (E and F keys, on a keyboard)
  • If player is standing on an entity, they now move together with that entity
  • Entities that extend outside scene boundaries are now marked as red
  • Fixed bugs

    • Several bugs with entity lifecycle when adding and removing from engine
    • Several bugs with billboard mode


  • Support for Billboard component
  • Bug fixes related to scene loading & lifecycle


  • Support for OnPointerDown and OnPointerUp events
  • Camera height adjusted slightly, so avatars see each other eye-to-eye
  • Support for hot-reload and export functionalities with the latest CLI version
  • Bug fixes and performance improvements


  • NFT picture frames support
  • All shapes, including primitives, have collisions by default
  • GLTFShapes can have collisions dissabled
  • Several optimizations


  • Entities that have visible = false can’t be clicked
  • Several optimizations
  • Bug fixes - Fix parsing of materials on GLTFs (normal maps, emissive maps, roughness maps, etc)


  • Bug fixes - Fix parsing of materials on GLTFs (emissive, specular, etc)


  • Important optimizations, specially for scenes with multiple transforms updated on every frame
  • Updated Unity engine to latest version: 2019.1.8.f1
  • Reduced fog levels and other art adjustments to materials
  • Bug fixes: - Fix Z-fighting between surfaces that are close to each other - Entities that share a same shape component can be removed independently without affecting the other - Fix alignment of children of UIContainerStack components - Audio can now be looped - Audio sounds no longer start on the first frame if not explicitly played - Fixed exaggerated doppler effect, that was most notable when running - AnimationClip.Stop() now returns the model to the first frame of the animation


  • Unlock cursor by pressing Esc only once (used to require pressing Esc twice)
  • Enter key focuses or leaves from chat
  • Change empty floor texture
  • Bug fixes: - Fix UI positioning - setParent(null) now sets an entity to be a child of the scene object - Removed entity now can be re-added to engine


  • Bug fixes: - Very large scenes disappear when walking too far from origin


  • Serverless multiplayer: Send messages over content server, publish - subscribe
  • Bug fixes: - Emissive and transparent materials for primitives fixed - Alignment of TextShape components - Audio fixed work as positional - UI positioning when set to invisible


  • Bug fixes: - Emissive materials fixed for primitives - Camera.position & Camera.rotation fixed


  • UI screen space limited to not use the top 10% of the screen
  • Decentraland UI components always rendered on top layer, above screen-specific UIs
  • Bug fixes


  • Unity set as the default engine
  • Various bug fixes


  • Unity engine integration - Shadows - Various optimizations
  • Components for player UIs, see UI for details.

6.0.1 - Beta

  • Fix a bug with entity positions out of bounds
  • Rename the AnimationClip object to AnimationState for more clarity
  • Rename the BUTTON_A_DOWN and BUTTON_A_UP events to BUTTON_DOWN and BUTTON_UP

6.0 - Beta

This release includes the following new features

  • Each parcel now measures 16 x 16 meters. This was decided via a vote by the community. New scenes created with the CLI are 16 x 16, old scenes remain as 10 x 10, but we recommend migrating to a 16 x 16 format. Scene limitations per each parcel haven’t changed since 5.0.

  • Improved audio engine: Multiple audio samples can be played at once. Also, each audio sample has a specific location. See Sounds for details.

const trevor = new Entity()

//Create audio clip
const audioClip = new AudioClip("sounds/Vexento.mp3")
audioClip.loop = true

//Create audio source
const audioSource = new AudioSource(audioClip)

  • Custom events are now possible, using functions to emit and listen for them.

This version includes several bug fixes and optimizations. It also includes the following changes:

  • 3D model animations are now handled by an Animator component, instead of by the GLTFModel component.

    let shark = new Entity()
    // Create Animator component
    const animator = new Animator()
    // Create animation clips
    let clipSwim = new AnimationState("swim")
    let clipBite = new AnimationState("bite")
    // Activate swim animation
  • Textures are now handled by a specialized Texture component, that can be referenced by a Material component.

    let wheel1 = new Entity()
    // Create texture
    const spiralTexture = new Texture("materials/hypno-wheel.png")
    // Create material
    let spiralMaterial = new Material()
    spiralMaterial.albedoTexture = spiralTexture
    // Add material to wheels
  • Billboard mode is now done via a separate specialized component, instead of by setting a property in shape components.

    let box = new Entity()
    box.addComponent(new BoxShape())
      new Transform({
        position: new Vector3(5, 1, 5),
    box.addComponent(new Billboard())
  • Basic commands for handling components are renamed for more clarity. For example get is now getComponent, add is now addComponent and set is now addComponentOrReplace.

See the migration guide for clear examples of how to migrate your code.

Read the [release announcement( blogpost for more details about these new features!

Note: All 3D models are now rotated 180 degrees along the Y axis to follow standards that are consistent with most other platforms. Any 3D models in your scene will now be rendered facing backwards. You may have to reposition or rotate your entities to compensate for this new rotation. Also, we now check that 3D models are within scene bounds by looking at the bounding boxes, not at each individual vertex. This is a lot more efficient, but some 3D models may have empty bounding boxes that stretch far beyond the vertexes. If that’s the case, you’ll have to clean up the 3D model so that the bounding boxes more closely match the vertexes of the model.