O Tabletop Simulator não tem uma solução elegante para um baralho de cartas que não está em uma forma predefinida. Este guia mostra como fazer seu próprio baralho de cartas usando modelos personalizados, um pacote de ativos e alguns scripts para que você possa criar cartas na forma que desejar!
Aviso Legal
Este guia requer um conhecimento ligeiramente avançado do Tabletop Simulator, Unity, criação de pacotes de ativos e alguma habilidade de modelagem 3D leve. Não é minha intenção explicar como fazer essas coisas. Também requer um pouco de script LUA, mas há um exemplo fornecido do workshop que contém a versão comentada dos scripts, portanto, modificá-lo para suas necessidades deve ser fácil. A intenção deste guia é mostrar como usar essas coisas para criar um conjunto personalizado de objetos para imitar o comportamento de um conjunto de cartas e um baralho.
Introdução
Você já se pegou fazendo um jogo com cartas de formatos estranhos, e quando você vai fazê-las você obtém uma borda retangular em torno das bordas? Impróprio. Talvez você tenha importado alguns modelos personalizados apenas para descobrir que não pode empilhá-los ordenadamente, embaralhá-los e distribuí-los para seus jogadores. Este guia pretende ser o remédio para isso. Nele estaremos criando um pacote de ativos que possui os seguintes recursos:
- Parece ser uma pilha de um modelo personalizado
- Quando o modelo personalizado correspondente é colocado dentro dele ou removido, a pilha parecerá ganhar ou perder uma cópia desse modelo
- Aceite apenas o modelo personalizado correspondente
- Aceite apenas uma quantidade máxima do modelo personalizado correspondente
- Todos os recursos de uma bolsa (embaralhar, pesquisar, negociar etc.)
Essencialmente, estamos fazendo uma bolsa que parece um baralho normal de cartas TTS.
Etapa 1: o modelo personalizado
Crie um modelo 3D do seu cartão no Blender. Faça como quiser. Eu geralmente crio um cartão personalizado importando uma imagem do cartão como um plano, criando um novo vert e, em seguida, extrudando-o para desenhar o contorno. Então eu preencho para criar um plano, e então extruso esse plano para dar-lhe alguma espessura. Existem outras maneiras de fazer isso também. Então você desembrulha o modelo com UV e o texturiza. Novamente, há mais de uma maneira de esfolar um gato aqui. Você pode criar uma textura por cartão ou criar um único atlas de textura para todas as faces do cartão e fazer várias versões do modelo e mover a posição UV da face no atlas. Acho que ambos são bastante válidos, mas prefiro fazer uma textura diferente para cada cartão e usar apenas um modelo. NÃO SE ESQUEÇA DE TRIANGULAR AS CARAS.
Feito isso, exporte seu modelo como um .obj
Etapa 2: importando seus cartões
Importe o modelo em TTS. Clique em Objetos e depois em Componentes > Personalizado > Modelo. Selecione seu obj em Model/Mesh, e sua primeira textura em Diffuse/Image, e seu obj novamente em Collider se desejar. Presumivelmente, você quer que eles sejam cartas de baralho, então altere o Material para Cardboard na guia Material. Em seguida, importe o modelo.
Se você estiver usando o mesmo método de texturização que eu, onde você tem um único modelo e uma textura única para cada face de cartão, clique com o botão direito do mouse no modelo e escolha Clone. Faça quantos clones do modelo você planeja ter em seu deck. Para o projeto de exemplo, estou usando apenas cinco.
Clique com o botão direito em cada modelo e escolha Personalizado. Substitua o arquivo Diffuse/Image pelas várias texturas de face de cartão que você criou para que você tenha todos os seus cartões representados.
Salve seu projeto e volte para o Blender.
Etapa 3: Criando o Modelo de Deck
Quando estiver de volta ao Blender, abra o modelo do seu cartão e vá para o Object Mode. Olhe para o seu cartão a partir do eixo X ou Y. Em seguida, clique com o botão direito sobre ele e selecione Objetos Duplicados (Shift+D). Imediatamente clique com o botão direito para manter a duplicata na posição original.
Em seguida, use a ferramenta mover para levantá-lo no eixo Z para que fique no topo do modelo original. Eu gosto de deixar um espaço muito pequeno entre eles para torná-los mais parecidos com uma pilha de cartões no produto final.
Repita isso para cada carta em seu deck para que você tenha essa quantidade de grupos de cartas em sua coleção.
Desta vez, exporte o modelo como um .fbx para manter os grupos de malha separados. Neste ponto, prefiro criar uma variante da textura do cartão que deixe o lado da face em branco, mas isso depende inteiramente de você.
Passo 4: Configurando o Deck no Unity
Abra o projeto TTS Modding no Unity. Crie uma pasta para seu modelo de deck e textura na pasta Assets. Coloque seu .fbx e textura dentro dessa pasta.
Clique no seu modelo e, em seguida, clique em Extract Materials na guia Materials no Inspector.
Abra o material que apareceu e arraste sua textura para a caixa ao lado de Albedo, clique na seleção Color e defina a cor para branco puro.
Eu gosto de dar algum tipo de efeito ao baralho quando ele está vazio para que ainda seja visível para o jogador, mas claramente não tem cartas nele. Crie um novo Material chamado Empty. Escolha Fade ou Transparent para o Rendering Mode, aplique a textura ao Albedo Map como antes e clique na seleção Color. Desta vez, defina-o para vermelho e solte o Alpha nele para que você possa ver através do Material.
Arraste o .fbx para sua Hierarquia. Ele já deve ter seu material aplicado, mas se não tiver por algum motivo então você terá que aplicá-lo. Expanda o objeto. Selecione todos os grupos de malha que são revelados quando você expande o objeto pai e, em seguida, arraste o material para o Inspetor onde diz Elemento 0 em Renderizador de malha.
Clique no objeto pai do seu modelo e, em seguida, clique em Adicionar componente. Adicione um Box Collider ao objeto. Clique no botão Edit Collider e use as alças no colisor para puxá-lo para perto e apertado do objeto. Eu acho isso mais fácil de fazer na vista isométrica (você pode habilitar isso clicando na vista sob a bússola, provavelmente será "Persp").
Neste ponto, arraste o objeto de sua Hierarquia para sua Pasta que você criou para seu modelo, textura e materiais para criar um Prefab dele. Clique no botão Open Prefab no Inspector para editar o Prefab exclusivamente.
Navegue até Window > Animation > Animation para abrir a janela Animation. Certifique-se de que o objeto pai do seu modelo esteja selecionado. Clique no botão Criar na janela Animação e escolha um local para salvar suas Animações (prefiro adicionar uma pasta Animações à pasta em que estou trabalhando para todo o resto, para que os arquivos de animação não atrapalhem o arquivo principal). pasta). Dê um nome à sua primeira animação e salve-a. (Outra preferência minha é nomeá-lo de acordo com a quantidade de cartas que são exibidas começando com um baralho completo. Neste caso, chamei-o de “5”)
Clique no botão Add Property na janela Animation e selecione a primeira malha > Mesh Renderer > Enabled.
Faça isso para cada Mesh em seu modelo para que fique assim.
Pressione Ctrl + A para selecionar tudo e depois Ctrl + C para copiar todas as Propriedades e Quadros-chave. Clique na lista suspensa que tem o nome da sua animação e clique em Criar novo clipe. Salve a nova animação (Com meu esquema de nomenclatura, a nova animação é chamada de “4”).
Pressione Ctrl + V para colar as propriedades e quadros-chave da animação anterior. Clique na caixa de seleção ao lado do Renderizador de Malha para a carta mais alta do baralho.
Mova o cursor na linha do tempo para o conjunto de quadros-chave no final e, em seguida, desative a caixa de seleção ao lado do Mash Renderer para o cartão mais alto novamente.
Selecione tudo e copie novamente, e crie uma nova animação (desta vez chamei de “3”). Cole nas Propriedades e Quadros-chave e repita o mesmo processo de antes, mas desta vez desative o renderizador de malha no próximo cartão abaixo também.
Continue fazendo isso até terminar de fazer a animação para quando houver apenas um único cartão. Copie suas propriedades e keyframes novamente e crie uma nova animação (eu chamo a minha de “0”). Cole em suas propriedades e quadros-chave, mas desta vez mantenha o último cartão ativado. Clique em Add Property novamente e selecione a Mesh para o cartão final > Mesh Renderer > Material Reference.
Se necessário, clique na seta para expandir a nova propriedade e ver a miniatura do material. Arraste e solte seu material vazio no primeiro e no último quadro-chave da animação.
Pressione Ctrl+S para salvar seu Prefab e Animações.
Etapa 5: adicionar componentes e criar o pacote de ativos
Certifique-se de que o objeto pai do modelo esteja selecionado e clique em Adicionar componente > Animação. Arraste o arquivo de animação que você criou para um deck completo para o campo Animação do componente. Em Animações, altere o Tamanho para a quantidade de animações que você possui (no meu caso 6) e arraste cada uma de suas animações para os Elementos que aparecem começando do baralho completo até o vazio.
Clique em Add Component novamente e desta vez adicione TTS Asset Bundle Effects. Expanda Efeitos de Loop neste Componente e altere o Tamanho para ser a quantidade de animações que você tem.
Em cada Elemento defina um nome para o Efeito Looping (eu apenas o nomeei após a animação), expanda a seção Animator, arraste o objeto Pai do modelo para o Componente Animador e digite o nome exato da animação para esse estado em Nome do Estado. Eu prefiro fazer isso do baralho completo até o vazio.
Pressione Ctrl + S para salvar seu prefab novamente. Clique no prefab no gerenciador de arquivos para que ele seja aberto no inspetor.
Na parte inferior da janela de visualização no inspetor, deve dizer AssetBundle com um menu suspenso. Clique nele e escolha Novo. Digite um nome exclusivo na caixa de texto que aparece.
Clique com o botão direito do mouse no gerenciador de arquivos e escolha Build AssetBundles. Espere isso terminar.
Etapa 6: Configurando as coisas no TTS
Neste ponto, você está pronto para importar para o TTS. Volte e selecione Objetos > Componentes > Personalizado > AssetBundle. Navegue até onde o Asset Bundle foi salvo para o campo Principal. Eles são salvos no projeto Unity em uma pasta chamada “AssetBundles”.
Selecione seu Asset Bundle, defina seu Type para Bag e altere seu Material para Cardboard.
Neste ponto, você pode clicar com o botão direito do mouse em seu Asset Bundle importado e percorrer os efeitos de loop para garantir que suas animações estejam aparecendo corretamente
Às vezes, o material em seu Asset Bundle pode parecer um pouco escuro, talvez seja necessário ajustar seu material no Unity ou alterar a tonalidade da cor no TTS em seus cartões para corresponder a ele. Você decide.
Etapa 7: script
Agora você tem uma sacola com algumas animações, mas precisamos criar um script de todos os recursos. O exemplo do item Workshop tem uma versão comentada do script dentro dele, então por favor veja como configurar o seu, mas vou cobrir as funções aqui brevemente.
O script começa com “function onUpdate()”, isso faz com que o jogo execute uma verificação a cada quadro. Abaixo disso temos o bloco de código que dita qual efeito de loop deve ser reproduzido para cada quantidade de objetos dentro do pacote de ativos.
A linha “if self.getQuantity() == 0 then” está informando se há 0 itens no pacote de ativos, então faça a seguinte linha.
A linha a seguir “self.AssetBundle.playLoopingEffect(5)” indica para reproduzir o 6º efeito de loop se a quantidade acima for encontrada no conteúdo do pacote de ativos.
A próxima linha “elseif self.getQuantity() == 1 then” afirma que, se houver 1 item no pacote de ativos, execute a ação na linha a seguir.
A linha a seguir “self.AssetBundle.playLoopingEffect(4)” indica para reproduzir o 5º efeito de loop se a quantidade acima for encontrada no conteúdo do pacote de ativos.
Isso continua até que você alcance um baralho completo. Isso reproduziria LoopingEffect(0), ou o primeiro Looping Effect.
Se você configurar seus Looping Effects no Unity para que um deck completo use o primeiro Looping Effect, então sempre será LoopingEffect(0) em seu script, e o número conta conforme a quantidade de cartas é diminuída.
A segunda parte do script executa uma verificação sempre que um jogador tenta adicionar algo ao pacote de recursos.
A primeira linha “ if (obj.getVar(“objectType”) == “ExCard” “ verifica se o cartão tem um identificador único em seu script. “ExCard” pode ser o que você quiser, mas esse identificador exato precisa ser definido em cada um dos seus cartões.
A próxima linha “and self.getQuantity() < 5)” verifica se o pacote de ativos tem menos do que o número máximo de cartões nele. Altere o número 5 para qualquer quantidade máxima de cartas que você tenha em seu baralho.
A linha a seguir “then return true end” aceitará o item no Asset Bundle se ambas as condições forem atendidas.
A linha final “return false” rejeitará quaisquer itens que não atendam a ambas as condições definidas.
Em seguida, abra o editor de scripts em um de seus cartões e adicione a seguinte linha:
“objectType = “ExCard” “. ExCard é o identificador exclusivo que o Asset Bundle procura quando alguém tenta adicionar um objeto a ele. Isso pode ser o que você quiser, desde que corresponda ao que foi chamado no script do Asset Bundle. Esta linha precisa ser aplicada a todas as cartas do seu deck.
Neste ponto, você deve ser capaz de salvar seu jogo, salvar os scripts e tudo deve funcionar! Vá em frente e salve seu objeto e importe-o para o seu jogo!
Isso é tudo o que estamos compartilhando hoje para isso tabletop Simulator guia. Este guia foi originalmente criado e escrito por Cabeça de Hobbit. Caso não consigamos atualizar este guia, você pode encontrar a atualização mais recente seguindo este link.