> 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 cena global. Como [portable experiences](/creator/content-creator-pt/scenes-sdk7/tipos-de-projetos/portable-experiences.md), são gameplay que os jogadores levam consigo à medida que se movem pelo metaverso. Por exemplo, enquanto executa uma cena global, um jogador poderia apanhar uma bola de neve do chão em Genesis Plaza, afastar-se para outra cena 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 uma jetpack que lhes permite voar, ou adicionar uma nova camada de conteúdo sobre o resto do mundo, como colocar aleatoriamente moedas para serem recolhidas por toda a Genesis City.

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

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

## Primeiros passos

### Usando a CLI

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

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

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

## Os ficheiros no template

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

* `wearable.json` inclui todos os metadados da experiência portátil
* Há um modelo 3D de placeholder (glasses.glb) e uma miniatura (glasses.png) para um par de ó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 `wearable.json` ficheiro predefinido é assim:

```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`: Identificador único do smart wearable.
* `name`: O nome do wearable que os utilizadores verão no Marketplace
* `descrição`: A descrição do wearable que os utilizadores verão no Marketplace. Certifique-se de indicar o que o smart wearable pode fazer, uma vez que os utilizadores do Marketplace não terão forma de pré-visualizar a sua funcionalidade antes de o comprar.
* `rarity`: A raridade do token. Os valores possíveis são:
  * unique (1 cópia)
  * mythic (10 cópias)
  * exotic (50 cópias)
  * legendary (100 cópias)
  * epic (1000 cópias)
  * uncommon (10.000 cópias)
  * common (100.000 cópias)

{% hint style="warning" %}
**📔 Nota**: Se bifurcou o 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 seguintes campos também podem ser incluídos opcionalmente. Estas definições também podem ser configuradas a partir da UI do Builder, depois de carregar o smart wearable.

* `data`: Inclui o seguinte
  * `replaces`: Lista de categorias de outros wearables que devem ser desequipados ao equipar este wearable, para além do padrão desta categoria. Ex.: Ao vestir uma capa de upper\_body, também ocultar feet.
  * `hides`: Lista de categorias de outros wearables que devem ser ocultadas (mas não desequipadas) ao equipar este wearable, para além do padrão desta categoria.
  * `tags`: Tags 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 para os body shapes masculino e feminino.
    * `mainFile`: O ficheiro principal com o modelo 3D do wearable.
    * `contents`: A lista completa de ficheiros usados 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.
    * `overrideReplaces`: Quaisquer exceções ao comportamento predefinido de *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 recomendado da imagem é 256x256.
* `model`: O modelo 3D a usar para o wearable. Este ficheiro deve estar na raiz da sua pasta.
* `bodyShape`: O tipo de corpo de 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 ser deixado em branco.

## A miniatura

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

Escolha uma imagem que defina as expectativas dos jogadores e represente adequadamente a sua criação.

## O Preview

Executar um preview de uma experiência portátil é igual a executar o de uma cena; basta clicar **Preview** no Creator Hub, ou executar `npm run start` na linha de comandos. Se o `wearable.json` ficheiro estiver corretamente configurado e o projeto for reconhecido como um smart wearable, vai notar que tudo o que é visível à sua volta são os parcels vazios predefinidos. Neste modo de preview, não está restringido a um conjunto específico de parcels; pode adicionar modelos 3D ou áudios em qualquer lugar do mundo.

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

## Sugestões

* 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:
  * Veja [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 proximidades.
  * Tenha em atenção que o carregamento do smart wearable, das cenas circundantes e de outros jogadores pode ocorrer em ordens diferentes, dependendo da situação. Se o jogador entrar no Decentraland com o smart wearable já colocado, é provável que a cena global do seu wearable carregue antes dos outros jogadores. Por outro lado, se o jogador carregar primeiro numa cena e depois vestir o wearable, é provável que os outros jogadores já estejam carregados quando a cena do wearable começar a ser executada.
  * Para experiências multijogador, espere 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 terão sido 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 cenas circundantes:
  * Não pode enviar diretamente quaisquer instruções para cenas próximas ou outras experiências portáteis; o `messageBus` está atualmente em sandbox para cada experiência portátil/cena.
  * Pode usar um servidor intermédio para enviar informações entre a experiência portátil e uma cena.
  * Se fizer um raycast, pode detetar colisões com os colliders de entities das cenas circundantes. Isto pode indicar 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 cenas escritas com SDK7.
* Terminar uma experiência portátil: execute o `kill()` método para autoencerrar uma experiência portátil.

## Publicar

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` ficheiro na pasta do seu projeto.

{% hint style="warning" %}
**📔 Nota**: O resultado de `npm run pack` indicará o tamanho do projeto exportado e descompactado; tem de ser inferior a 3MB. 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` compactado para o Builder, verifique se todas as informações estão corretas.

> Nota: Se o seu wearable contiver diferentes representações de modelo, precisa de contornar a situação:
>
> 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 wearables quando este wearable estiver equipado.
6. Crie uma nova coleção com este wearable e, talvez, com outros wearables.
7. Clique no ícone dos 3 pontos junto a “Mint Items” e selecione “See in world”. Isto abrirá um separador com o explorer no 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 à volta da 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 predefinição nas experiências portáteis e requerem a adição de uma flag de permissão.

Veja [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 3MB. Isto inclui o modelo 3D, a miniatura, o código, as bibliotecas, os ficheiros de som, os modelos 3D adicionais, as imagens da UI, etc. Este limite aplica-se à pasta descompactada. O Builder não permitirá que carregue wearables maiores do que isto. 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 ao descompactar o `smart-wearable.zip` ficheiro gerado e verificar o tamanho da pasta.

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

Os smart wearables só funcionam quando os jogadores os têm colocados. Por esse motivo, os jogadores só podem ter um número limitado de smart wearables ativados e, dependendo da parte do corpo que ocupam, alguns serão incompatíveis com outros. Por exemplo, não pode usar 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 que estejam a ser usados, então o smart wearable pode continuar 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
