Smart Wearables
Crie Wearables com capacidades interativas
Smart wearables são um tipo de scene global. Como portable experiences, são gameplay que os players levam consigo à medida que se movem pelo metaverse. Por exemplo, ao executar uma scene global, um player poderia pegar uma bola de neve do chão em Genesis Plaza, caminhar até outra scene e atirar a bola de neve em outro player que também esteja jogando o mesmo game.
Smart wearables são experiências portáteis que são ativadas quando o player veste uma determinada peça de roupa. Smart wearables podem conceder aos players novas abilities, como um jetpack que permite voar, ou adicionar uma nova camada de content por cima do resto do world, como posicionar aleatoriamente moedas para serem coletadas por todo o Genesis City.
📔 Nota: Smart Wearables só podem ser criados usando SDK 7.
O Creator Hub não oferece suporte atualmente à criação de projetos de Smart Wearables.
Getting started
Usando a CLI
Abra uma command line em uma nova folder e execute
npx @dcl/sdk-commands init --project smart-wearable
Este comando cria os arquivos básicos e a structure para um novo smart wearable.
Os arquivos no template
A folder de um projeto novinho em folha de Smart Wearable é muito semelhante à de uma Decentraland scene, mas você notará as seguintes diferenças:
wearable.jsoninclui todos os metadata da portable experienceHá um modelo 3D placeholder (glasses.glb) e uma thumbnail (glasses.png) para um par de óculos escuros. Você deve substituí-los pelo wearable real que está criando
scene.jsoné bem menor; não inclui properties irrelevantes para um wearable, como parcels ou spawn points
Sobre wearable.json
O wearable.json file padrão parece com isto:
Os seguintes fields são obrigatórios em wearable.json:
id: ID exclusivo do smart wearable.name: O nome do wearable que os users verão no marketplacedescription: A descrição do wearable que os users verão no marketplace. Certifique-se de indicar o que o smart wearable pode fazer, pois os users do marketplace não terão como fazer preview da sua funcionalidade antes de comprá-lo.rarity: A oferta de 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)
📔 Nota: Se você fez fork do seu project a partir de um existente, certifique-se de que o id value seja único antes de publicar seu wearable. Use uuidgenerator.net para gerar um novo UUID aleatório
Os seguintes fields também podem ser incluídos opcionalmente. Essas settings também podem ser configuradas na UI do Builder, depois que você fizer upload do smart wearable.
dados: Inclui o seguintesubstitui: Lista de categorias de outros wearables que devem ser removidos ao vestir este wearable, além do padrão desta category. Ex.: ao vestir uma capa de upper body, esconda também os feet.hides: Lista de categorias de outros wearables que devem ser ocultadas (mas não removidas) ao vestir este wearable, além do padrão desta category.tags: Tags usadas para tornar o wearable pesquisável no marketplace.representations:bodyShapes: A lista de representations de avatar que podem usar este wearable. Todos os smart wearables devem estar disponíveis para os body shapes masculino e feminino.mainFile: O file principal com o modelo 3D do wearable.contents: A lista completa de files usados para render o modelo 3D do wearable. Por exemplo, o modelo 3D pode incluir textures como files separados.overrideHides: Quaisquer exceções ao comportamento padrão de hide desta category de wearable.overrideReplaces: Quaisquer exceções ao comportamento padrão de replace desta category de wearable.
category: Qual category 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: Image a ser usada no menu de “experiences”, para representar esta portable experience. Esta image deve estar no nível raiz da sua folder. O tamanho recomendado da image é 256x256.model: O modelo 3D a ser usado para o wearable. Este file deve estar no nível raiz da sua folder.bodyShape: O body type 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 após a publicação; ele pode ser deixado em branco.
A thumbnail
Você deve incluir uma image chamada thumbnail.png no nível raiz da sua folder. Esta image será mostrada tanto na backpack quanto no marketplace, para representar seu wearable em 2D. O tamanho recomendado e obrigatório da image é 256x256.
Escolha uma image que defina as expectativas dos players e represente corretamente sua criação.
O Preview
Executar o preview de uma portable experience é igual a executar o de uma scene; basta clicar em Run Scene na aba Decentraland, ou executar npm run start na command line. Se o wearable.json file estiver configurado corretamente e o project for reconhecido como um smart wearable, você notará que tudo o que está visível ao seu redor são os parcels vazios padrão. Neste modo de preview, você não fica restrito a um conjunto fixo de parcels; você pode adicionar modelos 3D ou sounds em qualquer lugar do world.
Para testar como o smart wearable se comporta no contexto de uma scene, você também pode executar um preview do seu wearable ao mesmo tempo em que executa o preview de uma ou várias scenes usando um Workspace. Por exemplo, você pode executar seu smart wearable junto com a Genesis Plaza scene para testar como ele se comporta em uma scene movimentada, enquanto em um elevador, etc.
Dicas
Ao posicionar uma entity, observe que as positions são globais, relativas às coordinates 0,0 da Genesis Plaza.
Para reagir a players próximos:
Consulte Obter todos os players para saber como obter data de outros players ao redor.
Tenha em mente que o loading do smart wearable, das scenes ao redor e de outros players pode ocorrer em ordens diferentes dependendo da situação. Se o player entrar no Decentraland já com o smart wearable vestido, é provável que a sua global scene seja carregada antes dos outros players. Por outro lado, se o player carregar primeiro em uma scene e depois vestir o wearable, é provável que os outros players já tenham carregado até o momento em que a scene do wearable comece a executar.
Para experiências multiplayer, espere até que o player esteja conectado a uma ilha dentro do seu realm. Busque os dados do realm e verifique o field ‘room’. Se o field ‘room’ for null, o player ainda não está conectado a uma ilha e os outros players ainda não serão carregados. Você pode verificar isso periodicamente a cada 1 segundo até que o field ‘room’ esteja presente, e só então inicializar sua lógica.
Para interagir com scenes ao redor:
Você não pode enviar instruções diretamente para scenes próximas ou outras portable experiences; o
messageBusestá atualmente isolado em sandbox para cada portable experience/scene.Você pode usar um server intermediário para enviar information entre a portable experience e uma scene.
Se você fizer um raycast, poderá detectar hits contra os colliders de entities das scenes ao redor. Isso pode informar o ponto exato do hit, a normal direction e até o nome da entity e o nome do mesh do modelo 3D. Isso só funciona ao atingir entities em scenes escritas com SDK7.
Kill uma portable experience: execute o
kill()method para encerrar uma portable experience por auto-terminação.
Publish
Para publicar seu smart wearable:
Certifique-se de que as information em
wearable.jsonestejam corretas. Se você usou outro project como ponto de partida, certifique-se de que oidseja um identificador exclusivo, não usado por outros wearables.Execute
npm run packna folder do seu project. Isso gera umsmart-wearable.zipfile na folder do seu project.
📔 Nota: O output de npm run pack indicará o size do project exportado e descomprimido; ele deve ficar abaixo de 3MB. Se for maior do que isso, não será aceito pelo builder.
Abra o Builder, abra a aba Collections, clique em + para fazer upload de um novo wearable.
Arraste seu
smart-wearable.zipfile compactado para o Builder e verifique se todas as information estão corretas.
Nota: Se o seu wearable contiver diferentes representations de modelo, você precisará fazer uma solução alternativa:
No seu project, crie uma nova folder para cada representation(
maleefemale), e coloque o modelo 3D de cada representation na folder correspondente.Atualize o seu
wearable.jsonfile para incluir as novas representations.Execute
npm run packpara gerar um novo arquivo smart-wearable.zip.Arraste o novo arquivo smart-wearable.zip para o Builder.
Abra o editor de wearables e certifique-se de que as categories “hide” e “remove” estejam definidas corretamente para desativar outras categorias de wearable quando este wearable estiver ativado.
Crie uma nova collection com este wearable e talvez outros.
Clique no ícone de 3 pontos ao lado de “Mint Items” e selecione “See in world”. Isso abrirá uma aba com o explorer na Sepolia, onde você pode experimentar todos os wearables da sua collection no Decentraland e ver como eles se comportam em um cenário mais real, por exemplo correndo pela Genesis Plaza.
Neste ponto, seu wearable está pronto para ser publicado.
Ações restritas
Para evitar abuso, certos recursos não são permitidos em portable experiences por padrão e exigem a adição de um permission flag.
Consulte Permissões necessárias para mais detalhes.
Limitações
IMPORTANTE: O smart wearable inteiro precisa caber dentro de 3MB. Isso inclui o modelo 3D, thumbnail, code, libraries, sound files, modelos 3D adicionais, images de UI, etc. Esse limite vale para a folder descompactada. O builder não permitirá que você faça upload de wearables maiores do que isso. Para verificar o size da sua portable experience, execute
npm run pack, o size do project é especificado no output text do comando. Você também pode verificar isso descompactando osmart-wearable.zipfile gerado e conferindo o size da folder.
Smart wearables executam a portable experience apenas para o player que está usando o wearable. Os outros players não veem os efeitos. Por exemplo, se a portable experience renderizar um pet que segue o player, os outros players por perto não verão esse pet. No entanto, os outros players verão os avatars executarem animations que rodam como parte da scene do wearable, mesmo custom avatar animations enviadas como parte dos files do smart wearable.
Smart wearables só funcionam quando os players os estão usando. Por esse motivo, os players só podem ter um número limitado de smart wearables ativados e, dependendo da parte do body que ocupam, alguns serão incompatíveis com outros. Por exemplo, você não pode usar dois hats ao mesmo tempo, nem um helmet e hair ao mesmo tempo.
Se um wearable estiver “hidden”, mas não “removed” por outros wearables que estejam sendo usados, então o smart wearable ainda pode estar ativado, mesmo que o wearable correspondente não esteja visível.
Exemplos
Atualizado