Como adicionar suporte a novos pets/muuns visuais no cliente de MU
Guia completo para adicionar novos pets e muuns visuais ao cliente de MU Online, do modelo .bmd e texturas até o registro do item e a sincronia com o servidor.
Pets e muuns visuais são um dos ganchos de personalização mais fortes de um servidor de MU Online: um bichinho novo que acompanha o personagem, com efeito próprio, vira desejo de item de cash shop ou recompensa de evento. Mas "adicionar um pet" não é uma tarefa só de cliente — é um trabalho de duas
Pets e muuns visuais são um dos ganchos de personalização mais fortes de um servidor de MU Online: um bichinho novo que acompanha o personagem, com efeito próprio, vira desejo de item de cash shop ou recompensa de evento. Mas "adicionar um pet" não é uma tarefa só de cliente — é um trabalho de duas pontas que precisa casar o visual (modelo, textura, animação no cliente) com a existência e a validação do item (no servidor). Este guia avançado percorre o fluxo inteiro: entender o pipeline de modelos .bmd, preparar textura e animação, registrar o modelo no cliente, garantir que o item exista no servidor e testar a sincronia. É trabalho técnico, então vá com calma e faça backup a cada etapa.
Pré-requisitos
- Servidor e cliente funcionando de forma pareada. Se ainda não tem essa base, monte primeiro seguindo o guia de como criar servidor de MU Online.
- Ferramenta de importação/exportação de .bmd compatível com a sua season (plugins de 3ds Max, Blender ou ferramentas standalone de conversão BMD).
- Conversor de texturas MU (.ozj/.ozt/.ozb).
- Editor de imagem (GIMP/Photoshop) para as texturas.
- Editor da tabela de itens do seu emulador (ItemList/Item.bmd ou equivalente) e acesso ao banco/config do servidor.
- Backup da pasta
Data/do cliente e das configs de item do servidor.
.bmd novo direto no cliente de produção — valide em uma cópia isolada primeiro.As duas metades: cliente e servidor
Antes de tocar em qualquer arquivo, tenha essa divisão clara na cabeça:
| Metade | O que faz | Onde vive |
|---|---|---|
| Cliente | Desenha o pet: modelo 3D, textura, animação, efeito | Pasta Data/ do cliente (arquivos .bmd, .ozt) |
| Servidor | Reconhece o item, valida posse, aplica bônus/efeito | Tabela de itens + config do emulador |
Se você fizer só a metade do cliente, o pet pode até aparecer para você, mas o servidor não sabe que aquele item existe — ele não persiste no banco, não pode ser dropado/comprado corretamente e outros jogadores podem não ver nada. Se você fizer só a metade do servidor, o item existe mas aparece "invisível" ou como um modelo genérico. Pet completo = as duas metades casadas.
Como o cliente renderiza um pet/muun
O MU Online carrega modelos 3D no formato .bmd, que empacota malha, esqueleto, animações e referências de textura. Cada modelo tem um índice numérico que o motor usa para saber qual arquivo carregar quando um item ou criatura precisa ser desenhado.
O fluxo simplificado (conceito real, detalhes variam por season/cliente):
- O item equipado/ativo informa um tipo/índice ao motor;
- O motor mapeia esse índice para um arquivo
.bmd(ex.: emData/Item/ouData/Monster/); - O
.bmdreferencia texturas por nome, que o motor busca na mesma pasta; - O motor toca a animação apropriada (idle, andar) do esqueleto embutido no
.bmd.
Estratégia recomendada: partir de um modelo existente
Modelar um pet do zero, exportar com esqueleto e animações corretos e não crashar o cliente é difícil. A abordagem de menor risco é derivar de um muun/pet que já funciona:
- Você garante que esqueleto e animações são válidos (herdados do original);
- Você troca apenas o que dá identidade nova: a textura e, opcionalmente, a malha;
- O risco de crash cai drasticamente.
Só vá para um modelo totalmente novo se tiver experiência com o pipeline .bmd da sua season.
Passo 1 — Preparar o modelo
Opção A: recolorir/retexturizar um pet existente (recomendado)
- Localize o
.bmde as texturas do pet base (ex.: um muun existente emData/...); - Faça backup de tudo;
- Converta a textura
.ozt/.ozjpara.png/.jpg; - No editor, recolora ou repinte a textura mantendo o tamanho e o layout do mapa UV;
- Reconverta para o formato original;
- Se você quer um item SEPARADO (não substituir o original), copie o
.bmde a textura com nomes/índices novos e ajuste as referências internas de textura no.bmdpara o novo nome.
Opção B: importar um modelo novo
- Importe uma base
.bmdda sua season na ferramenta 3D (para herdar o esqueleto); - Substitua/ajuste a malha mantendo o rig (bones) compatível;
- Ajuste o mapa UV para sua textura;
- Exporte de volta para
.bmdcom o mesmo padrão de animações; - Teste o modelo isolado antes de registrar.
Passo 2 — Preparar e posicionar a textura
- Crie a textura no tamanho esperado pelo mapa UV (potências de 2 são o mais seguro: 128x128, 256x256 — varia por season/cliente);
- Use
.oztse precisar de transparência (recortes, penas, tecido);.ozjpara texturas sólidas; - Nomeie a textura exatamente como o
.bmda referencia; - Coloque a textura na mesma pasta que o motor espera para aquele modelo;
- Confira no editor que não há canal alpha "sujo" que deixaria partes invisíveis.
Passo 3 — Registrar o modelo no cliente
O cliente precisa associar o índice do item ao seu .bmd. Como isso é feito varia:
- Cliente com tabela externa: edite o arquivo de mapeamento (ex.: uma tabela de itens/muuns em texto ou binário) adicionando a linha do novo índice apontando para seu
.bmde textura; - Cliente com mapeamento no executável: você precisa do source do cliente ou de uma ferramenta da distribuição para inserir o novo índice.
Passos gerais no caso de tabela externa (exemplo, varia por season/cliente):
- Abra a tabela de itens/modelos do cliente;
- Localize o intervalo de índices de pets/muuns;
- Adicione uma entrada nova com um índice livre (não reutilize um índice ocupado, ou você substitui outro item);
- Aponte a entrada para o nome do seu
.bmde da textura; - Salve e recarregue o cliente.
Passo 4 — Criar o item no servidor
Agora a metade do servidor. O item do pet precisa existir na tabela de itens do emulador, com o mesmo índice/section que o cliente espera.
- Abra o editor de itens do seu emulador (ItemList, Item.txt, ou tabela no banco — varia por emulador);
- Adicione o item do pet no mesmo section/index que você usou no cliente;
- Defina propriedades: nome, se é um muun/pet, duração (se for temporário), bônus associados;
- Se o pet dá efeito de status (ex.: bônus de ataque/defesa), configure isso na parte de efeitos de item/muun do servidor;
- Salve e recarregue as configs do servidor.
Passo 5 — Testar a sincronia
- Gere o item para uma conta de teste (via comando de GM ou drop controlado);
- Equipe/ative o pet e verifique:
- O modelo aparece corretamente (não invisível, não caixa, não T-pose);
- A textura está certa (sem partes brancas/pretas indevidas);
- A animação de idle e de andar tocam;
- O efeito/bônus do servidor é aplicado;
- Entre com uma segunda conta e confirme que o segundo jogador também vê o pet do primeiro;
- Faça logout/login e verifique que o item persiste no banco.
O teste com segunda conta é decisivo: é ele que prova que a metade do servidor está funcionando, e não só o seu cliente customizado.
Erros comuns e soluções
| Erro | Causa provável | Solução |
|---|---|---|
| Pet aparece invisível | Textura não encontrada ou nome errado | Conferir nome/pasta da textura referenciada no .bmd |
| Pet aparece como caixa/branco | .bmd carregado sem textura válida | Verificar conversão da textura e o mapa UV |
| Cliente crasha ao invocar o pet | Modelo mal exportado / bones incompatíveis | Reexportar a partir de uma base válida da season |
| Pet em T-pose ou congelado | Animações ausentes/incompatíveis | Herdar o conjunto de animações do modelo base |
| Só você vê o pet | Item não existe/registrado no servidor | Adicionar o item na tabela do servidor com índice coerente |
| Pet some após logout | Item não persistido no banco | Confirmar que o item é válido e reconhecido pelo servidor |
| Substituiu outro pet sem querer | Índice reutilizado | Usar um índice livre e manter planilha de índices custom |
| Textura com partes transparentes erradas | Canal alpha incorreto no .ozt | Revisar o alpha e reexportar; usar .ozj se não precisar de alpha |
Distribuir o pet para os jogadores
Como o visual vive no cliente, todos os jogadores precisam receber os novos arquivos, senão só quem tem o cliente atualizado vê o pet.
# Empacotar os arquivos novos do pet (PowerShell + 7-Zip)
& "C:\Program Files\7-Zip\7z.exe" a -t7z -mx=9 patch-pet.7z Data\
# Hash de integridade para publicar
Get-FileHash patch-pet.7z -Algorithm SHA256 | Select-Object Hash
Adicione os arquivos do modelo e da textura à lista do launcher/updater para que a atualização chegue a todos automaticamente. Só libere o item no cash shop ou em eventos depois que o patch de cliente já estiver distribuído — senão os jogadores compram um pet que ninguém consegue ver.
Checklist de lançamento
- Backup da pasta
Data/do cliente e das configs de item do servidor - Modelo derivado de uma base válida da season (esqueleto/animações herdados)
- Textura criada no tamanho do mapa UV e no formato certo (
.ozt/.ozj) - Textura nomeada exatamente como o
.bmda referencia, na pasta correta - Índice novo escolhido de um intervalo livre (sem colidir com pets existentes)
- Modelo registrado no cliente (tabela externa ou source)
- Item criado no servidor no section/index coerente com o cliente
- Efeito/bônus do pet configurado no servidor
- Testado: modelo, textura, animação e efeito com uma conta
- Validado com uma segunda conta (outro jogador vê o pet)
- Item persistindo após logout/login
- Patch de cliente distribuído via launcher ANTES de liberar o item
- Planilha de índices customizados atualizada
Perguntas frequentes
Adicionar um pet visual é só mexer no cliente?
Não. O visual (modelo, textura, animação) vive no cliente, mas o item precisa existir e ser reconhecido pelo servidor também. Se só o cliente conhece o pet, ele aparece para quem tem o cliente customizado, mas o servidor não valida o item e outros jogadores podem não ver nada.
Qual formato os modelos de pet usam?
O MU Online usa arquivos .bmd para modelos e animações 3D, com texturas em .ozj/.ozt/.ozb. O muun/pet segue o mesmo padrão dos demais modelos do jogo. Os índices e nomes exatos variam por season/cliente.
Posso reaproveitar o modelo de um pet existente?
Sim, e é o caminho mais seguro. Recolorir a textura de um muun já existente ou trocar apenas o material dá um pet novo visualmente sem precisar modelar do zero, e reduz muito o risco de crash por modelo mal exportado.
Por que meu pet aparece invisível ou como uma caixa?
Geralmente o modelo .bmd foi carregado mas a textura não foi encontrada, ou o índice do modelo não bate com o registrado. Confira se a textura está na pasta certa, com o nome exato, e se o índice do .bmd corresponde ao que o cliente espera.
Preciso do source do cliente para adicionar um pet?
Depende da season. Em alguns clientes há tabelas/arquivos externos que mapeiam itens a modelos, e dá para adicionar sem recompilar. Em outros, o mapeamento está no executável e você precisa do source ou de ferramentas específicas da distribuição.