Migre do Dice View v2 para a v3

Atualize imports, assets e opções de animação para o renderer exclusivamente físico.

Este artigo descreve a prévia V3 alpha, que usa apenas física e ainda não está publicada no npm. V2 ↗ Licenças ↗

A v3 preserva DiceResultViewer, display(), displayTimeline(), adaptadores, requests e temas da v2. A principal mudança é a apresentação: toda rolagem passa pelo motor físico próprio, sem Babylon.js ou Havok. Esta página se refere ao alpha 3.0.0-alpha.0 da revisão oficial ae00d9f, ainda não publicado no npm.

Antes de migrar, confira o arquivo de licença desta revisão V3 e a ressalva sobre o alpha. A V2 publicada antes da 3.0.0 permanece MIT; o arquivo da V3 descreve condições diferentes.

1. Atualize a dependência

npm install "git+https://github.com/erpg-app/Dice3DViwer.git#ae00d9f6cb9865378e59d49687c4588751532c5c"

O commit contém dist/ e pode ser instalado diretamente. Quando houver um lançamento v3 no npm, substitua a referência Git pela versão publicada após validar a migração. Babylon.js e Havok podem ser removidos se eram usados só pelo Dice View.

2. Atualize os assets públicos

Copie node_modules/@erpg/dice3dview/dist/assets/dice-box/ novamente para public/assets/dice-box/. Você pode remover a pasta havok/: a v3 não lê WASM. Os manifests e modelos .babylon dos temas v2 seguem aceitos; os temas simbólicos incluídos na v3 trazem ainda glyph-orientation.json para orientar glifos.

3. Simplifique a configuração

// v2
new DiceResultViewer({ container: '#dice-stage', mode: 'kinematic' })

// v3: física é o único modo e já é o padrão
new DiceResultViewer({ container: '#dice-stage' })

O import @erpg/dice3dview/external continua válido, mas na v3 aponta para o mesmo módulo que @erpg/dice3dview. Use o import raiz para novas integrações. O subpath @erpg/dice3dview/adapters continua disponível sem carregar o renderer.

Configuração v2 Comportamento na v3
mode: 'kinematic' Aceita por compatibilidade, avisa uma vez no console e executa física. Remova da UI e do código novo.
duration Aceita e ignorada. Ajuste throwForce, gravity e settleTimeout para mudar o movimento.
physicsWasmUrl Aceita e ignorada; não há WASM.
shadowResolution Aceita e ignorada; a v3 usa sombras de contato.
wallBounceChance Alias antigo de aggressiveThrowChance.
timeline.effects.compound.showBadge e penetrate.showBadge Aceitos e ignorados; os dados pulsam na cor do efeito.

DisplayMode agora é apenas 'physics'. O literal antigo 'kinematic' ainda é aceito em ViewerOptions, DisplayRequest e DisplayTimelineRequest, mas não restaura a animação cinemática. Os tipos dos adaptadores usam DisplayMode e já exigem 'physics' se você fornecer mode. Revise seus controles para não oferecer uma opção que não existe.

4. Confira as mudanças visuais

As faces resolvidas e os totais continuam vindo da aplicação. Na v2 física, o renderer guiava a orientação para a face pedida; na v3, simula livremente e aplica ao desenho uma simetria do poliedro que preserva a trajetória e mostra o resultado recebido. Com a mesma seed, dados e tamanho de palco, a animação é reproduzível.

Explosões e rerolagens da timeline passam a usar movimento físico; dados já parados continuam imóveis. Dados descartados perdem saturação, mas permanecem opacos. Para verificar uma integração, teste pelo menos uma rolagem comum, uma com discarded, uma explosão ou reroll, a troca de tema e o descarte da instância com dispose().

Depois da migração, consulte a API v3 para as novas opções skin, particles, glow e applyLook(). Para projetos que permanecem na v2, use a API v2.

Fonte técnica: guia de migração da biblioteca.