> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/creator/content-creator-pt/scenes-sdk7/tipos-de-projetos/smart-wearables.md).

# Smart Wearables

Crie wearables com capacidades interativas

Os smart wearables são um tipo de global scene. Tal como [experiências portáteis](/creator/content-creator-pt/scenes-sdk7/tipos-de-projetos/portable-experiences.md), são mecânicas de jogo que os jogadores levam consigo à medida que se movem pelo metaverso. Por exemplo, enquanto corre numa global scene, um jogador poderia apanhar uma bola de neve do chão na Genesis Plaza, afastar-se para outra scene e atirar a bola de neve a outro jogador que também esteja a jogar o mesmo jogo.

Os smart wearables são experiências portáteis que são ativadas quando o jogador veste uma determinada peça de roupa. Os smart wearables podem conceder aos jogadores novas habilidades, como um jetpack que lhes permite voar, ou adicionar uma nova camada de conteúdo por cima do resto do mundo, como colocar moedas aleatoriamente para serem recolhidas por toda a Genesis City.

{% hint style="warning" %}
**📔 Nota**: Os Smart Wearables só podem ser criados usando SDK 7.

O **Creator Hub** não suporta atualmente a criação de projetos de Smart Wearables.
{% endhint %}

## Começar

### Usando a CLI

1. Abra uma linha de comando numa nova pasta e execute

`npx @dcl/sdk-commands init --project smart-wearable`

Este comando cria os ficheiros e a estrutura básicos para um novo smart wearable.

## Os ficheiros do template

A pasta de um projeto Smart Wearable recém-criado é muito semelhante à de uma [scene do Decentraland](/creator/content-creator-pt/scenes-sdk7/tipos-de-projetos/scene-files.md), mas irá notar as seguintes diferenças:

* `wearable.json` inclui todos os metadados da experiência portátil
* Existe um modelo 3D placeholder (glasses.glb) e uma miniatura (glasses.png) para uns óculos escuros. Deve substituí-los pelo wearable real que está a criar
* `scene.json` é muito mais curto, não inclui propriedades irrelevantes para um wearable, como parcels ou spawn points

## Sobre wearable.json

O ficheiro predefinido `wearable.json` tem este aspeto:

```json
{
	"data": {
		"replaces": [],
		"hides": [],
		"tags": ["special", "new", "eyebrows"],
		"representations": [
			{
				"bodyShapes": [
					"urn:decentraland:off-chain:base-avatars:BaseMale",
					"urn:decentraland:off-chain:base-avatars:BaseFemale"
				],
				"mainFile": "glasses.glb",
				"contents": ["glasses.glb"],
				"overrideHides": [],
				"overrideReplaces": []
			}
		],
		"category": "eyewear"
	},
	"name": "Exemplo de Smart Wearable",
	"description": "Coloque os óculos para ver um novo mundo",
	"rarity": "mythic"
}
```

Os seguintes campos são obrigatórios em `wearable.json`:

* `id`: ID único do smart wearable.
* `name`: O nome do wearable que os utilizadores verão no Marketplace
* `description`: A descrição do wearable que os utilizadores verão no Marketplace. Certifique-se de indicar o que o smart wearable pode fazer, pois os utilizadores do Marketplace não terão forma de pré-visualizar a sua funcionalidade antes de o comprar.
* `rarity`: A oferta de raridade do token. Os valores possíveis são:
  * único (1 cópia)
  * mítico (10 cópias)
  * exótico (50 cópias)
  * lendário (100 cópias)
  * épico (1000 cópias)
  * incomum (10.000 cópias)
  * comum (100.000 cópias)

{% hint style="warning" %}
**📔 Nota**: Se fez fork do seu projeto a partir de um existente e ele inclui um `id`, certifique-se de que o valor é único antes de publicar o seu wearable. Use [uuidgenerator.net](https://www.uuidgenerator.net/) para gerar um novo UUID aleatório
{% endhint %}

Os campos seguintes também podem ser incluídos opcionalmente. Estas definições também podem ser configuradas a partir da UI do Builder, assim que carregar o smart wearable.

* `data`: Inclui o seguinte
  * `substitui`: Lista de categorias de outros wearables que devem ser desativados ao equipar este wearable, para além do padrão desta categoria. Ex.: ao vestir uma capa para a parte superior do corpo, ocultar também os feet.
  * `hides`: Lista de categorias de outros wearables que devem ser ocultadas (mas não desativadas) ao equipar este wearable, para além do padrão desta categoria.
  * `tags`: Etiquetas usadas para tornar o wearable pesquisável no Marketplace.
  * `representations`:
    * `bodyShapes`: A lista de representações de avatar que podem usar este wearable. Todos os smart wearables devem estar disponíveis tanto para body shapes masculinas como femininas.
    * `mainFile`: O ficheiro principal com o modelo 3D do wearable.
    * `contents`: A lista completa de ficheiros usada para renderizar o modelo 3D do wearable. Por exemplo, o modelo 3D pode incluir texturas como ficheiros separados.
    * `overrideHides`: Quaisquer exceções ao comportamento predefinido de ocultar desta categoria de wearable. *ocultar* desta categoria de wearable.
    * `overrideReplaces`: Quaisquer exceções ao comportamento predefinido de ocultar desta categoria de wearable. *substituir* desta categoria de wearable.
  * `category`: Que categoria de wearable usar. Os valores possíveis são:
    * 'eyebrows'
    * 'eyes'
    * 'facial\_hair'
    * 'hair'
    * 'mouth'
    * 'upper\_body'
    * 'lower\_body'
    * 'feet'
    * 'earring'
    * 'eyewear'
    * 'hat'
    * 'helmet'
    * 'mask'
    * 'tiara'
    * 'top\_head'
    * 'skin'
    * 'hands\_wear'
* `menuBarIcon`: Imagem a usar no menu “experiences”, para representar esta experiência portátil. Esta imagem deve estar na raiz da sua pasta. O tamanho de imagem recomendado é 256x256.
* `model`: O modelo 3D a usar para o wearable. Este ficheiro deve estar na raiz da sua pasta.
* `bodyShape`: O tipo de corpo do avatar com o qual este wearable é compatível. Valores possíveis:
  * male
  * female
  * both
* `collectionAddress`: O endereço Ethereum da coleção de wearables publicada. Este endereço é atribuído aquando da publicação e pode ficar em branco.

## A miniatura

Deve incluir uma imagem chamada `thumbnail.png` na raiz da sua pasta. Esta imagem será mostrada tanto na backpack como no Marketplace, para representar o seu wearable em 2D. O tamanho de imagem recomendado e obrigatório é 256x256.

Escolha uma imagem que defina as expectativas do jogador e represente corretamente a sua criação.

## A pré-visualização

Executar uma pré-visualização de uma experiência portátil é exatamente como executar a de uma scene: clique **Play** no Creator Hub, ou execute `npm run start` na linha de comando. Se o `wearable.json` ficheiro estiver configurado corretamente e o projeto for reconhecido como um smart wearable, vai notar que todos os elementos visíveis à sua volta são os parcels vazios predefinidos. Neste modo de pré-visualização, não está limitado a qualquer conjunto de parcels, pode adicionar modelos 3D ou sons em qualquer parte do mundo.

Para testar como o smart wearable se comporta no contexto de uma scene, também pode executar uma pré-visualização do seu wearable ao mesmo tempo que executa uma pré-visualização de uma ou várias scenes usando um [Workspace](/creator/content-creator-pt/scenes-sdk7/tipos-de-projetos/workspaces.md). Por exemplo, pode executar o seu smart wearable juntamente com a [Genesis Plaza](https://github.com/decentraland-scenes/Genesis-Plaza) scene para testar como se comporta numa scene movimentada, enquanto num elevador, etc.

## Dicas

* Ao posicionar uma entity, tenha em conta que as posições são globais, relativas às coordenadas 0,0 da Genesis Plaza.
* Para reagir a jogadores próximos:
  * Consulta [Obter todos os jogadores](/creator/content-creator-pt/scenes-sdk7/interatividade/user-data.md#fetch-all-players) para saber como obter dados de outros jogadores nas imediações.
  * Tenha em atenção que o carregamento do smart wearable, das scenes circundantes e de outros jogadores pode ocorrer por ordens diferentes dependendo da situação. Se o jogador entrar no Decentraland já com o smart wearable vestido, é provável que a scene global do seu wearable carregue antes dos outros jogadores. Por outro lado, se o jogador carregar primeiro numa scene e depois vestir o wearable, é provável que os outros jogadores já estejam carregados quando a scene do wearable começar a correr.
  * Para experiências multijogador, aguarde até o jogador estar ligado a uma ilha dentro do seu realm. Obtenha os dados do realm e verifique o campo ‘room’. Se o campo ‘room’ for null, o jogador ainda não está ligado a uma ilha e os outros jogadores ainda não serão carregados. Pode verificar isto periodicamente a cada 1 segundo até o campo ‘room’ estar presente, e só então inicializar a sua lógica.
* Para interagir com scenes circundantes:
  * Não pode enviar diretamente quaisquer instruções para scenes próximas ou outras experiências portáteis, o `messageBus` está atualmente isolado para cada experiência portátil/scene.
  * Pode usar um servidor intermédio para enviar informação entre a experiência portátil e uma scene.
  * Se fizer um raycast, pode detetar impactos contra os colliders de entities das scenes circundantes. Isto pode dizer-lhe a localização exata do impacto, a direção normal e até o nome da entity e o nome da mesh do modelo 3D. Isto só funciona ao atingir entities em scenes escritas com SDK7.
* Terminar uma experiência portátil: execute o `kill()` método para terminar automaticamente uma experiência portátil.

## Publish

Para publicar o seu smart wearable:

1. Certifique-se de que a informação em `wearable.json` está correta. Se usou outro projeto como ponto de partida, certifique-se de que o `id` é um identificador único, não usado por outros wearables.
2. Execute `npm run pack` na pasta do seu projeto. Isto gera um `smart-wearable.zip` na pasta do seu projeto.

{% hint style="warning" %}
**📔 Nota**: A saída de `npm run pack` indicará o tamanho do projeto exportado sem compressão, que deve ser inferior a 3 MB. Se for maior do que isso, não será aceite pelo Builder.
{% endhint %}

3. Abra o Builder, abra o separador Collections, clique em + para carregar um novo wearable.
4. Arraste o seu `smart-wearable.zip` comprimido para o Builder, verifique se toda a informação está correta.

> Nota: se o seu wearable contiver diferentes representações de modelo, tem de fazer uma solução alternativa:
>
> 1. No seu projeto, crie uma nova pasta para cada representação(`male` e `female`), e coloque o modelo 3D de cada representação na respetiva pasta.
> 2. Atualize o seu `wearable.json` ficheiro para incluir as novas representações.
> 3. ```lang-json
>    "representations": [{
>      "bodyShapes": ["urn:decentraland:off-chain:base-avatars:BaseMale"],
>      "mainFile": "male/glasses.glb",
>      "contents": ["male/glasses.glb"],
>      "overrideHides": [],
>      "overrideReplaces": []
>    },
>    {
>      "bodyShapes": ["urn:decentraland:off-chain:base-avatars:BaseFemale"],
>      "mainFile": "female/glasses.glb",
>      "contents": ["female/glasses.glb"],
>      "overrideHides": [],
>      "overrideReplaces": []
>    }],
>    ```
> 4. Execute `npm run pack` para gerar um novo ficheiro smart-wearable.zip.
> 5. Arraste o novo ficheiro smart-wearable.zip para o Builder.

5. Abra o editor de wearables e certifique-se de que as categorias “hide” e “remove” estão corretamente definidas para desativar outras categorias de wearable quando este wearable estiver vestido.
6. Crie uma nova coleção com este wearable e talvez outros.
7. Clique no ícone dos 3 pontos ao lado de “Mint Items” e selecione “See in world”. Isto abrirá um separador com o Explorer em Sepolia, onde pode experimentar todos os wearables da sua coleção no Decentraland e ver como se comportam num cenário mais real, por exemplo a correr pela Genesis Plaza.
8. Neste ponto, o seu wearable está pronto para ser publicado.

## Ações restritas

Para evitar abusos, certas funcionalidades não são permitidas por defeito em experiências portáteis, e exigem a adição de uma flag de permissão.

Consulta [Permissões necessárias](/creator/content-creator-pt/scenes-sdk7/tipos-de-projetos/scene-metadata.md#required-permissions) para mais detalhes.

## Limitações

> IMPORTANTE: Todo o smart wearable tem de caber em 3 MB. Isto inclui o modelo 3D, a miniatura, o código, as bibliotecas, ficheiros de som, modelos 3D adicionais, imagens da UI, etc. Este limite aplica-se à pasta sem compressão. O Builder não permitirá carregar wearables maiores do que isso. Para verificar o tamanho da sua experiência portátil, execute `npm run pack`, o tamanho do projeto é especificado no texto de saída do comando. Também pode verificar isto descomprimindo o ficheiro `smart-wearable.zip` gerado e verificando o tamanho da pasta.

Os smart wearables apenas executam a experiência portátil para o jogador que está a usar o wearable. Os outros jogadores não veem os efeitos. Por exemplo, se a experiência portátil renderizar um pet que segue o jogador, os outros jogadores à volta não verão esse pet. No entanto, os outros jogadores verão avatars a executar animações que correm como parte da scene do wearable, mesmo [animações personalizadas de avatar](/creator/content-creator-pt/scenes-sdk7/interatividade/avatares/avatar-animations.md#custom-animations) carregadas como parte dos ficheiros do smart wearable.

Os smart wearables só funcionam quando os jogadores os têm vestidos. Por este motivo, os jogadores só podem ter um número limitado de smart wearables ativos e, dependendo da parte do corpo que ocupam, alguns serão incompatíveis com outros. Por exemplo, não pode ter dois chapéus ao mesmo tempo, ou um capacete e cabelo ao mesmo tempo.

Se um wearable estiver “hidden” mas não “removed” por outros wearables a serem usados, então o smart wearable ainda pode estar ativo, mesmo que o wearable correspondente não esteja visível.

## Exemplos

[Exemplo de smart wearable](https://github.com/decentraland/smart-wearable-sample))


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.decentraland.org/creator/content-creator-pt/scenes-sdk7/tipos-de-projetos/smart-wearables.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
