Solução de Problemas

Correções para problemas comuns

Problemas ao executar a pré-visualização

Problema: Não é possível executar nenhuma pré-visualização da cena, a mensagem de erro menciona Permissões negadas ou EACCES

Seu sistema operacional não permite que você edite permissões na pasta onde deseja executar o projeto. Ao executar a cena, algumas dependências precisam ser instaladas, mas isso está proibido. Você precisa configurar as permissões da pasta para permitir que sua conta de usuário do Windows/Mac/Linux edite arquivos nela.

Recursos úteis:

Problema: Não é possível executar a pré-visualização de uma cena específica, o erro diz Erro: Erro ao construir o projeto

Se você está executando uma cena que foi compartilhada com você, certifique-se de que essa cena não foi compartilhada contendo um node_modules ou bin pasta, ou um package-lock.json arquivo. Esses arquivos contêm dependências que usam versões específicas do seu SO e máquina; eles devem ser gerados ao executar a cena pela primeira vez. Exclua essas pastas e arquivo manualmente, então execute npm run start novamente.

Problema: Executando npm run start executa, nenhuma mensagem de erro, mas nenhuma janela do navegador abre e nenhum URL é exibido na saída para abrir a pré-visualização

Certifique-se de que sua versão do Node esteja atualizada. Deve ser 16 ou superior.

Problema: Executando npm run start abre uma aba do navegador, mas a tela de carregamento nunca termina, ou eu vejo uma faixa de erro vermelha que diz "erro crítico".

  • Certifique-se de ter a versão mais recente do Decentraland SDK instalada em seu projeto. Execute:

    npm i @dcl/sdk"latest

Problema: A cena executa, no console eu vejo Dependências cíclicas avisos.

Eles se referem a arquivos na sua cena que se referenciam mutuamente. Isso não é necessariamente um problema, mas não é um padrão recomendável para escrever software, pois pode levar a condições de corrida difíceis de depurar e outros problemas. É provável que sua cena funcione bem apesar desses avisos.

Idealmente, o carregamento do código na sua cena deve seguir uma ordem sequencial clara. Código que tem dependências cíclicas pode sofrer de um problema do tipo "o ovo ou a galinha", onde o compilador não sabe qual iniciar primeiro. Frequentemente isso é resolvido sem problemas, mas é uma boa prática evitar.

Para corrigir essas dependências, muitas vezes é necessário recorrer a chamar funções ou construtores de objetos passando referências para entidades/objetos já instanciados nos argumentos da função; em vez de codificar referências a essas entidades/objetos na função, que podem ou não já estar instanciados.

Problemas ao publicar

Problema: Você não tem permissões para publicar nesses parcels

  • Certifique-se de que o scene.json arquivo da sua cena liste corretamente as coordenadas onde você deseja publicar.

  • Certifique-se de que o Metamask esteja configurado corretamente para usar a carteira certa para assinar a transação. Isso pode ser a carteira que possui os tokens de LAND, ou pode ter permissões de operador concedidas pelo proprietário.

Problema: Executando npm run deploy falha

  • Verifique os pontos de spawn da sua cena, todas as três coordenadas x,y,z de um ponto de spawn devem ser ou um número ou um intervalo. Ou todas três são números ou todas três são intervalos. Não é suportado ter intervalos para alguns e números para outros.

    Por exemplo isto não é suportado:

    "position": {"x": [1,4], "y": 0, "z": [1,4]}

    Isto é suportado:

    "position": {"x": [1,4], "y": [0,0], "z": [1,4]}

  • O servidor catalyst padrão ao qual você está atribuído para publicar pode estar fora do ar ou com problemas. Você pode forçar o npm run deploy comando a publicar em um servidor catalyst específico em vez disso. Para publicar em um servidor específico no Decentraland Editor:

    1. Abra sua cena e clique Publish

    2. Selecione a opção Publish to a different server na parte inferior.

    3. No dropdown, selecione Custom Server

    4. Digite o endereço do servidor, por exemplo peer-testing.decentraland.org

    5. Clique Publicar em servidor personalizado

    6. Aprove a transação como em uma publicação normal.

    Para fazer isso via CLI:

    npm run deploy -- --target-content <server-name>

    Por exemplo:

    npm run deploy -- --target-content peer-ec1.decentraland.org

    Veja catalyst-monitorarrow-up-right para uma verificação de status de todos os servidores na rede catalyst. Você também pode copiar os endereços de cada um, a partir do topo de cada cartão.

  • Verifique o package.jsonda sua cena. Um problema comum é que existe um bundleDependencies e também uma bundledDependencies (com um d extra) seção. Isso às vezes pode resultar de executar diferentes versões do Node no mesmo projeto em momentos distintos, ou de compartilhar o projeto entre pessoas que o executaram com versões diferentes do Node instaladas. Exclua bundleDependencies, que está relacionado a versões antigas do Node.

Também certifique-se de manter sua versão do Node atualizada, pelo menos na versão 16.

Problema: Executando npm run deploy ou npm run build relata erros de tipo

Sua cena pode ter erros de tipo reportados pelo TypeScript, por exemplo afirmando que uma determinada variável pode ser do tipo any ou que undefined ou null não são permitidos. Ao executar npm run deployele também executa npm run build, que é um pouco mais rigoroso com essas verificações do que npm run start.

Ao contrário do JavaScript, o TypeScript impõe tipagem estrita de todas as variáveis. Mesmo que sua cena seja escrita de forma que, por exemplo, um certo valor nunca será undefined, o TypeScript precisa saber o que aconteceria nesse cenário, ou você precisa esclarecer explicitamente que o valor pode ser, por exemplo, uma string.

Como alternativa, você pode executar npm run deploy --skip-build para pular a execução de npm run build, e evitar que essas verificações sejam executadas.

Problema: Eu publiquei minha cena mas não vejo as alterações quando entro no Decentraland

  • Tenha em mente que pode levar alguns minutos para que o conteúdo novo seja propagado por todos os servidores na rede catalyst; aguarde um pouco.

  • Veja Verificar o Sucesso da Publicaçãoarrow-up-right para instruções sobre como você pode garantir que o conteúdo foi corretamente propagado para todos os servidores.

Problema: Depois de publicar, alguns modelos 3D estão faltando

  • Certifique-se de que os modelos 3D estejam todos dentro dos limites da cena, inclusive suas caixas de delimitação. Se qualquer parte dos seus modelos se estender além desses limites ao executar uma pré-visualização, essas partes que se estendem serão cortadas e não renderizadas, tanto na pré-visualização quanto na cena publicada.

Problema: Depois de publicar, meus modelos 3D parecem diferentes

  • Se as texturas parecerem diferentes, lembre-se de que as texturas em modelos 3D são limitadas a um tamanho máximo de 512x512 pixels. Essa conversão é realizada para garantir que o Decentraland funcione sem problemas para todos.

  • Se os modelos parecerem diferentes, pode haver um problema na conversão dos modelos para asset bundles. Leia mais sobre compressão de asset bundles aquiarrow-up-right.

    Para validar isso, tente executar a cena com o parâmetro de URL &DISABLE_ASSET_BUNDLES. Se os modelos parecerem corretos com essa flag, o problema deve estar relacionado a um bug na conversão do modelo.

    Observe que a geração de versões comprimidas em asset-bundles dos seus modelos é um processo que leva tempo dos servidores (cerca de uma hora). Você pode verificar se os modelos estão sendo carregados como asset bundles comprimidos ou não escrevendo o seguinte comando na janela de chat /detectabs. Modelos comprimidos são tingidos de verde, não comprimidos são tingidos de vermelho.

Problema: Minha cena tem FPS ruim em produção, embora rode suavemente na pré-visualização.

O desempenho da sua cena pode ser afetado por cenas vizinhas que seguem práticas ruins, já que elas também executam em paralelo. Você pode validar se este é o caso abrindo as configurações e definindo a linha de visão para o mínimo, de modo que apenas 1 parcel ao redor da sua cena atual seja carregado.

Você pode reduzir ainda mais a linha de visão executando sua cena com o parâmetro &LOS=0, para não carregar nenhuma cena ao redor.

Se você acabou de publicar sua cena, a carga ao carregar a cena também pode ser reduzida uma vez que os servidores convertam os modelos 3D da cena para asset bundles comprimidos. Você pode verificar se os modelos estão sendo carregados como asset bundles comprimidos ou não escrevendo o seguinte comando na janela de chat /detectabs. Modelos comprimidos são tingidos de verde, não comprimidos são tingidos de vermelho.

Reportar um bug

Se você encontrar um problema que não seja com sua cena, mas sim com o SDK do Decentraland em geral, por favor veja Reportar um bugarrow-up-right.

Atualizado