Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -433,9 +433,6 @@
* [Examples](creator/tutorials/examples.md)
* [Emote Video Tutorials](creator/tutorials/video-emotes.md)
* [SDK & Editor Video Tutorials](creator/tutorials/video.md)
* [worlds](creator/worlds/README.md)
* [About](creator/worlds/about.md)
* [Cast](creator/worlds/cast.md)
* [scene-editor](creator/scene-editor/README.md)
* [Building Your Scene](creator/scene-editor/build/README.md)
* [Components](creator/scene-editor/build/components.md)
Expand Down
2 changes: 1 addition & 1 deletion creator/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ To make your scene interactive:
You don't need to own any tokens to start building your scene with the Scene Editor. To publish your scene, you can chose from the following options:

- **LAND in Genesis City**: This is the main open world in Decentraland, which is split up in 16x16 meter parcels. Buy one or several adjacent parcels in the [Marketplace](https://decentraland.org/marketplace/lands), and deploy your scene there.
- **Decentraland Worlds**: [Worlds](worlds/about.md) are your own spaces in the metaverse. All you need is to own a [Decentraland name](https://decentraland.org/marketplace/names/claim), and you can publish a scene as big as you want!
- **Decentraland Worlds**: [Worlds](sdk7/publishing/publishing-options.md#decentraland-worlds) are your own spaces in the metaverse. All you need is to own a [Decentraland name](https://decentraland.org/marketplace/names/claim), and you can publish a scene as big as you want!

See [Kinds of project](sdk7/projects/kinds-of-project.md) to better understand the different options.

Expand Down
9 changes: 2 additions & 7 deletions creator/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -178,9 +178,9 @@
* [Game Objects](sdk7/programming-patterns/game-objects.md)
* [Mutable Data](sdk7/programming-patterns/mutable-data.md)
* [API Reference](sdk7/releases/)
* [Alpha Testing Guidelines](sdk7/releases/alpha-testing-guidelines.md)
* [Testing and Feedback](sdk7/releases/alpha-testing-guidelines.md)
* [Releases](sdk7/releases/releases.md)
* [V7 Alpha](sdk7/releases/v7-alpha.md)
* [API Reference](sdk7/releases/v7-alpha.md)
* [Version Support Agreement](sdk7/releases/version-support-agreement.md)
* [Other](sdk7/other/)
* [Scene Analytics](sdk7/other/scene-analytics.md)
Expand All @@ -196,11 +196,6 @@
* [Animations](3d-modeling/animations.md)
* [Create a Rig](3d-modeling/create-a-rig.md)

## Worlds

* [Overview](worlds/about.md)
* [Cast](worlds/cast.md)

## Marketplace

* [Estates Marketplace Integrations](marketplace/estates-marketplace-integrations.md)
Expand Down
43 changes: 26 additions & 17 deletions creator/scene-editor/build/components.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ Select an item by clicking on it on the canvas or on the entity tree. You'll the

Most non-interactive items have the following components:

* **Transform**: Sets the position, rotation, and scale of the item. If the item is a child of another item on the [Entity Tree](../get-started/scene-editor-essentials.md#the-entity-tree), these value are relative to those of the parent's.
* **GLTF**: What 3D model to load. It includes the local path to the file for this 3D model. It also includes some properties for configuring [colliders](../../sdk7/3d-essentials/colliders.md#colliders-on-3d-models) on the model.
- **Transform**: Sets the position, rotation, and scale of the item. If the item is a child of another item on the [Entity Tree](../get-started/scene-editor-essentials.md#the-entity-tree), these value are relative to those of the parent's.
- **GLTF**: What 3D model to load. It includes the local path to the file for this 3D model. It also includes some properties for configuring [colliders](../../sdk7/3d-essentials/colliders.md#colliders-on-3d-models) on the model.

The items in your scene are all **Entities**. Everything in a scene is an Entity, they are the basic building blocks of scenes. Items are Entities that have at least a position and a visible shape.

Expand All @@ -35,26 +35,35 @@ This creates an empty Entity with just a **Transform** Component. The new entity

The following Components can be added to any Entity via the Scene Editor UI:

* **Mesh Renderer**: Gives the Entity a visible shape based on a primitive shape (cube, plane, cylinder, cone, or sphere).
* **Mesh Collider**: Gives the Entity an invisible collider geometry. This can block the player from walking through the item, and/or can make it clickable. See [collider](../../sdk7/3d-essentials/colliders.md).
* **Material**: Defines the color, texture, and other properties of an Entity that has a **Mesh Renderer** Component. See [materials](../../sdk7/3d-essentials/materials.md).
- **Mesh Renderer**: Gives the Entity a visible shape based on a primitive shape (cube, plane, cylinder, or sphere).
- **Mesh Collider**: Gives the Entity an invisible collider geometry. This can block the player from walking through the item, and/or can make it clickable. See [collider](../../sdk7/3d-essentials/colliders.md).
- **Material**: Defines the color, texture, and other properties of an Entity that has a **Mesh Renderer** Component. See [materials](../../sdk7/3d-essentials/materials.md).

{% hint style="warning" %\} **📔 Note**: The item Must have a **Mesh Renderer** Component. It doesn't affect items with a **GLTF** visible shape. \{% endhint %\}
{% hint style="warning" %\} **📔 Note**: The item Must have a **Mesh Renderer** Component. It doesn't affect items with a **GLTF** visible shape. \{% endhint %\}

* **Visibility**: Defines if an Entity is invisible.
* **Light Source**: Adds a light to the Entity.
- **Visibility**: Defines if an Entity is invisible.
- **Light Source**: Adds a light to the Entity.

* **Swap Material**: Swaps the material of an Entity that has a **GLTF** component. If the 3D model has multiple meshes, you can swap the material of each mesh individually.
- **Swap Material**: Swaps the material of an Entity that has a **GLTF** component. If the 3D model has multiple meshes, you can swap the material of each mesh individually.

* **Audio Source**: Plays a sound from a sound file at the location of the Entity. See [Sounds](../../sdk7/3d-essentials/sounds.md).
* **Text Shape**: Displays text in the 3D space. See [Text](../../sdk7/3d-essentials/text.md).
* **Pointer Events**: Marks an Entity as clickable, displaying a hover-hint.
- **Audio Source**: Plays a sound from a sound file at the location of the Entity. See [Sounds](../../sdk7/3d-essentials/sounds.md).
- **Text Shape**: Displays text in the 3D space. See [Text](../../sdk7/3d-essentials/text.md).
- **Pointer Events**: Marks an Entity as clickable, displaying a hover-hint.

{% hint style="warning" %}
**📔 Note**: The **Pointer Events** Component only provides feedback. To perform actions when an Entity is interacted with, see [Make any item smart](../interactivity/make-any-item-smart.md)
{% endhint %}

* **Multiplayer**: Shares any changes that happen to the Entity so that all players in the scene see it too. It can be configured to only share changes on certain components. See [Serverless Multiplayer](../../sdk7/networking/serverless-multiplayer.md#mark-an-entity-as-synced) for more details.
- **Multiplayer**: Shares any changes that happen to the Entity so that all players in the scene see it too. It can be configured to only share changes on certain components. See [Serverless Multiplayer](../../sdk7/networking/serverless-multiplayer.md#mark-an-entity-as-synced) for more details.
- **Animator**: Controls the playback of animations on an Entity with a **GLTF** 3D model. See [3D model animations](../../sdk7/3d-essentials/3d-model-animations.md).
- **Tween**: Makes the Entity gradually move, rotate, or scale over a period of time. See [Move entities](../../sdk7/3d-essentials/move-entities.md).
- **Billboard**: Makes the Entity always rotate to face the player. See [Face the user](../../sdk7/3d-essentials/entity-positioning.md#face-the-user).
- **Avatar Attach**: Attaches the Entity to the player's avatar, so it follows them around. See [Attach an entity to an avatar](../../sdk7/3d-essentials/entity-positioning.md#attach-an-entity-to-an-avatar).
- **Video Player**: Plays a video inside the scene, that can be displayed on the Entity via its **Material**. See [Video playing](../../sdk7/media/video-playing.md).
- **NFT Shape**: Displays the image of an NFT inside a frame. See [Display an NFT](nfts.md).
- **Particle System**: Emits particles from the Entity's location, for effects like smoke, fire or sparkles. See [Particle systems](../../sdk7/3d-essentials/particle-system.md).
- **Virtual Camera**: Defines a custom camera angle that the scene can switch the player's view to. See [Camera](../../sdk7/3d-essentials/camera.md).
- **Script**: Attaches a custom code module to the Entity, with parameters you can configure from the UI. See [Script component](../code/script-component.md).

{% hint style="warning" %}
**📔 Note**: Other components exist on the SDK that are currently only usable via code. You can also create your own [Custom components](../../sdk7/architecture/custom-components.md) via code, these won't have a UI representation, but can be added and edited via code.
Expand All @@ -68,10 +77,10 @@ Also note that an Entity can only hold **one** of each Component. It's not possi

[Smart items](../interactivity/smart-items.md) can also include special components that Control the Entity's interactivity. These are typically:

* **Actions**: Lists all the possible actions the item can carry out.
* **Triggers**: Determines when the actions from the Actions component are carried out.
* **States**: Keeps track of the item's current state. The state can be used for conditional logic, to only trigger certain actions if the item is on certain state.
* **Counter**: Keeps track of a counter. The counter can be used for conditional logic, to only trigger certain actions if the counter's value is equal/greater/lower than a given value.
- **Actions**: Lists all the possible actions the item can carry out.
- **Triggers**: Determines when the actions from the Actions component are carried out.
- **States**: Keeps track of the item's current state. The state can be used for conditional logic, to only trigger certain actions if the item is on certain state.
- **Counter**: Keeps track of a counter. The counter can be used for conditional logic, to only trigger certain actions if the counter's value is equal/greater/lower than a given value.

See [Smart items advanced](../interactivity/smart-items-advanced.md) for more details.

Expand Down
46 changes: 23 additions & 23 deletions creator/scene-editor/build/import-items.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ To import a 3D model, an image, a sound file, or a video into your scene from yo

![](../../images/editor/import-confirmation.png)

You can now find your asset in the **Local Assets** tab, under the **scene** folder. 3D models appear under the _scene/3D Model_ folder, images under _scene/Image_
You can now find your asset in the **Local Assets** tab, under the **scene** folder. Assets are sorted into folders by type: 3D models appear under the _Assets/scene/Models_ folder, images under _Assets/scene/Images_, sound files under _Assets/scene/Audio_, and videos under _Assets/scene/Video_.

* For 3D models, drag the `.glb` or `.gltf` files onto the canvas to add them as items on your scene.
* Other kinds of assets like images and sound files can be dragged onto the fields of an item. For example you can drag an `.mp3` file onto the _Path_ field of an _Audio Source_ component.
- For 3D models, drag the `.glb` or `.gltf` files onto the canvas to add them as items on your scene.
- Other kinds of assets like images and sound files can be dragged onto the fields of an item. For example you can drag an `.mp3` file onto the _Path_ field of an _Audio Source_ component.

{% hint style="info" %}
**💡 Tip**: You can also paste files directly into the project folder. After doing this, press the **Refresh** button next to the **Import Assets** button to see the new files.
Expand All @@ -37,30 +37,30 @@ You can now find your asset in the **Local Assets** tab, under the **scene** fol

The following Audio formats are supported:

* _.mp3_
* _.wav_
* _.ogg_
- _.mp3_
- _.wav_
- _.ogg_

#### Image

The following image formats are supported:

* _.png_
* _.jpg_
* _.jpeg_
- _.png_
- _.jpg_
- _.jpeg_

#### Video

The following video formats are supported:

* _.mp4_
- _.mp4_

#### 3D Models

The following 3D model formats are supported:

* _.glTF_
* _.glb_
- _.glTF_
- _.glb_

Both can include external texture image files, or external binary (_.bin_) files.

Expand All @@ -76,24 +76,24 @@ Instead of building your own 3D models, you can also download them from several

To get you started, below is a list of libraries that have free or relatively inexpensive content:

* [IWB Catalog](https://dcl-iwb.co/)
* [SketchFab](https://sketchfab.com/)
* [Clara.io](https://clara.io/)
* [Archive3D](https://archive3d.net/)
* [SketchUp 3D Warehouse](https://3dwarehouse.sketchup.com/)
* [Thingiverse](https://www.thingiverse.com/) (3D models made primarily for 3D printing, but adaptable to Virtual Worlds)
* [ShareCG](https://www.sharecg.com/)
- [IWB Catalog](https://dcl-iwb.co/)
- [SketchFab](https://sketchfab.com/)
- [Clara.io](https://clara.io/)
- [Archive3D](https://archive3d.net/)
- [SketchUp 3D Warehouse](https://3dwarehouse.sketchup.com/)
- [Thingiverse](https://www.thingiverse.com/) (3D models made primarily for 3D printing, but adaptable to Virtual Worlds)
- [ShareCG](https://www.sharecg.com/)

{% hint style="warning" %}
**📔 Note**: Pay attention to the license restrictions that the content you download has.
{% endhint %}

You can also use Generative AI tools to generate your own 3D models. Check out:

* [Meshy](https://www.meshy.ai/)
* [Luma AI](https://lumalabs.ai/genie)
* [TRipo3D](https://www.tripo3d.ai/app)
* [Rodin](https://hyper3d.ai/rodin)
- [Meshy](https://www.meshy.ai/)
- [Luma AI](https://lumalabs.ai/genie)
- [TRipo3D](https://www.tripo3d.ai/app)
- [Rodin](https://hyper3d.ai/rodin)

Note that in several of these sites, you can choose what format to download the model in. Always choose _.glTF_ or _.glb_ format if available. If not available, you must convert them to _.glTF_ or _.glb_ before you can use them in a scene. For that, we recommend importing them into Blender and exporting them with one of the available _.glTF_ export add-ons.

Expand Down
4 changes: 2 additions & 2 deletions creator/scene-editor/build/nfts.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Use the NFT smart item, that you can find in the **Smart Items** asset pack, or

The main fields to configure determine what NFT to display:

* **Network**: The blockchain network that your NFT is in. It uses Ethereum mainnet by default, but you can also pick Polygon (matic), Solana, etc.
* **Network**: The blockchain network that your NFT is in. It uses Ethereum mainnet by default, but you can also pick Polygon (matic), or one of several test networks.
* **NFT Collection Contract**: The contract address of the collection that this NFT belongs to (ie: Cryptokitties, SuperRare, Decentraland Halloween Wearables 2019, etc)
* **Token ID**: The unique id of this specific NFT

Expand All @@ -30,7 +30,7 @@ Similarly, you can also obtain these from the OpenSea URL of the token. For exam

_https://opensea.io/assets/0x31385d3520bced94f77aae104b406994d8f2168c/2614_

Yon can infer that the contract is _0x31385d3520bced94f77aae104b406994d8f2168c_ (referring to CryptoPunks) and the ID is _2614_.
Yon can infer that the contract is _0x31385d3520bced94f77aae104b406994d8f2168c_ and the ID is _2614_.

Other optional fields that can be configured in the NFT smart item are:

Expand Down
13 changes: 10 additions & 3 deletions creator/scene-editor/build/spawn-areas.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
description: Using Spawn Areas to set the Spawning position & Spawn Camera position visually.
---

Expand All @@ -7,6 +8,12 @@ The creator can set the **Spawn Position** and **Spawn Camera Target** in the Cr

This gives the creator a visual way of setting the Spawn Area and the direction the avatar will be facing when spawned as done with other objects in the scene.

Spawn Areas define where players appear when they access your scene directly, either by typing in the coordinates or teleporting. Your scene might have objects that can block players from moving if they happen to spawn right over them, like trees or stairs, or your scene might have an elevated terrain. It would be a bad experience for players if they spawned over something that doesn't let them move. That's why you have the option to set one or several spawn positions in ad-hoc locations.

{% hint style="warning" %}
**📔 Note**: All spawn points must be within the parcels that make up the scene. You can't spawn a player outside the space of these parcels.
{% endhint %}

<img src="../../../.gitbook/assets/spawn-entity-scene-editor.png" width="200" />

The Spawn Area is composed of two different entities that work together:
Expand All @@ -29,9 +36,9 @@ When a Spawn Area is selected, the creator is able to see and set the following

<img src="../../../.gitbook/assets/default-spawn-point-component.png" width="600" />

* **Position**: Avatar's Spawn Position.
* **Spawn Camera Target**: The direction the camera (and the avatar) will be facing once spawned into the scene. When modifying the Spawn Camera Target.
* **Randomized Area**: Adds randomness to the Spawn Area in meters, enabling and disabling it with the **Don't randomize** toggle. When enabled, an area is rendered in the Scene Editor, showing the area in which the Player can randonmly be spawned in.
* **Position**: Avatar's Spawn Position. These are coordinates inside the scene, relative to the scene's origin, similar to what you'd use in a Transform component.
* **Spawn Camera Target**: The direction the camera (and the avatar) will be facing once spawned into the scene. Use this to have better control over the player's first impression when they jump into your scene.
* **Randomized Area**: Adds randomness to the Spawn Area in meters, enabling and disabling it with the **Don't randomize** toggle. When enabled, an area is rendered in the Scene Editor, showing the area in which the Player can randomly be spawned in. The random offset applies on both the X and Z axis, and prevents all players from appearing overlapping each other when they spawn, which looks especially bad in crowded scenes.

<img src="../../../.gitbook/assets/spawn-point-randomized.png" width="600" />

Expand Down
7 changes: 4 additions & 3 deletions creator/scene-editor/code/reference-items.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ function main() {
// Write the name as a string
const door2 = engine.getEntityOrNullByName('Door 2')

// Ensure both doors exsist in the scene
(if door1 && door2){
// Ensure both doors exist in the scene
if (door1 && door2) {
//
}

Expand Down Expand Up @@ -133,13 +133,14 @@ Once you have a reference to a particular item, you can fetch all of the items t

```ts
import { engine, Entity, Transform, Name, getEntitiesWithParent } from '@dcl/sdk/ecs'
import { EntityNames } from '../assets/scene/entity-names'

function main() {
// get parent entity
const parent = engine.getEntityByName<EntityNames>(EntityNames.ParentEntity)

// fetch full list of children
const children = getEntitiesWithParent(engine, myEntity)
const children = getEntitiesWithParent(engine, parent)
for (const child of children) {
// process each child entity
}
Expand Down
Loading