Tabletop Simulator no tiene una solución elegante para una baraja de cartas que no tiene una forma predeterminada. ¡Esta guía muestra cómo hacer su propio mazo de cartas usando modelos personalizados, un paquete de activos y algunas secuencias de comandos para que pueda hacer cartas en la forma que desee!
Observación
Esta guía requiere un conocimiento ligeramente avanzado de Tabletop Simulator, Unity, la creación de paquetes de activos y alguna habilidad ligera de modelado 3D. No es mi intención explicar cómo hacer esas cosas. También requiere un poco de secuencias de comandos LUA, pero hay un ejemplo provisto del taller que contiene la versión comentada de las secuencias de comandos, por lo que es de esperar que modificarlo para sus necesidades sea fácil. La intención de esta guía es mostrar cómo usar esas cosas para crear un conjunto personalizado de objetos para imitar el comportamiento de un conjunto de cartas y una baraja.
Introducción
¿Alguna vez te has encontrado haciendo un juego con cartas de formas extrañas, y cuando vas a hacerlas, obtienes un borde rectangular alrededor de los bordes? Impropio. Tal vez importó algunos modelos personalizados solo para descubrir que no puede apilarlos ordenadamente, barajarlos y repartirlos a sus jugadores. Esta guía pretende ser el remedio para eso. En él crearemos un paquete de activos que tiene las siguientes características:
- Parece ser una pila de un modelo personalizado
- Cuando el modelo personalizado coincidente se coloca dentro de él o se elimina, la pila aparecerá para ganar o perder una copia de ese modelo.
- Solo acepte el modelo personalizado coincidente
- Solo acepte una cantidad máxima del modelo personalizado coincidente
- Todas las características de una bolsa (barajar, buscar, repartir, etc.)
Esencialmente, estamos haciendo una bolsa que parece una baraja normal de cartas TTS.
Paso 1: el modelo personalizado
Cree un modelo 3D de su tarjeta en Blender. Hazlo como quieras. Generalmente creo una tarjeta personalizada importando una imagen de la tarjeta como un plano, creando un nuevo vert y luego extruyéndolo para dibujar el contorno. Luego lo lleno para crear un plano, y luego extruyo ese plano para darle un poco de grosor. Hay otras formas de hacerlo también. Luego, desenvuelve el modelo con UV y lo texturiza. Una vez más, aquí hay más de una forma de despellejar a un gato. Puede crear una textura por tarjeta o puede hacer un solo atlas de textura para todas las caras de la tarjeta y hacer múltiples versiones del modelo y mover la posición UV de la cara en el atlas. Creo que cualquiera de los dos es bastante válido, pero prefiero hacer una textura diferente para cada tarjeta y usar solo un modelo. NO OLVIDES TRIANGULAR LAS CARAS.
Una vez hecho esto, exporte su modelo como .obj
Paso 2: Importación de sus tarjetas
Importe el modelo en TTS. Haga clic en Objetos y luego en Componentes > Personalizado > Modelo. Selecciona tu obj en Model/Mesh, y tu primera textura en Diffuse/Image, y tu obj nuevamente en Collider si lo deseas. Presumiblemente, desea que estos sean naipes, así que cambie el Material a Cartón en la pestaña Material. Luego importe el modelo.
Si está utilizando el mismo método de texturizado que yo, donde tiene un solo modelo y una textura única para cada cara de la tarjeta, haga clic con el botón derecho en el modelo y elija Clonar. Haz tantos clones del modelo como planees tener en tu mazo. Para el proyecto de ejemplo, solo estoy usando cinco.
Haga clic con el botón derecho en cada modelo y elija Personalizado. Reemplace el archivo Difuso/Imagen con las diversas texturas de carátulas que creó para que tenga todas sus cartas representadas.
Guarde su proyecto y luego regrese a Blender.
Paso 3: Creación del modelo de plataforma
Una vez que esté de vuelta en Blender, abra el modelo de su tarjeta y vaya al Modo Objeto. Mire su tarjeta desde el eje X o Y. Luego haga clic derecho sobre él y seleccione Objetos duplicados (Shift+D). Inmediatamente haga clic derecho para mantener el duplicado en la posición original.
Luego use la herramienta de movimiento para levantarlo en el eje Z para que quede encima del modelo original. Me gusta dejar un espacio muy pequeño entre ellos para que se vean más como una pila de cartas en el producto terminado.
Repita esto para cada carta en su mazo para que tenga esa cantidad de grupos de cartas en su Colección.
Esta vez, exporte el modelo como .fbx para mantener los grupos de malla separados. En este punto, prefiero crear una variante de la textura de la tarjeta que deja el anverso en blanco, pero eso depende totalmente de ti.
Paso 4: configurar el mazo en Unity
Abra el proyecto TTS Modding en Unity. Cree una carpeta para su modelo de plataforma y textura en la carpeta Activos. Coloque su .fbx y textura dentro de esa carpeta.
Haga clic en su modelo y luego haga clic en Extraer materiales en la pestaña Materiales en el Inspector.
Abra el material que apareció y arrastre su textura al cuadro junto a Albedo, luego haga clic en la selección de Color y configure el color en blanco puro.
Me gusta darle al mazo algún tipo de efecto cuando está vacío para que aún sea visible para el jugador, pero claramente no tiene cartas. Cree un nuevo Material llamado Vacío. Elija Fundido o Transparente para el Modo de representación, aplique la textura al Mapa de Albedo como antes y luego haga clic en la selección de Color. Esta vez configúrelo en rojo y suelte el Alfa para que pueda ver a través del Material.
Arrastra el .fbx a tu Jerarquía. Ya debería tener su material aplicado, pero si no lo tiene por algún motivo entonces tendrás que aplicarlo. Expande el objeto. Seleccione todos los grupos de malla que se revelan cuando expande el objeto principal y luego arrastre el material al Inspector donde dice Elemento 0 en Renderizador de malla.
Haga clic en el objeto principal de su modelo y luego haga clic en Agregar componente. Agrega un Box Collider al objeto. Haga clic en el botón etiquetado como Editar colisionador y use las manijas del colisionador para acercarlo al objeto. Encuentro esto más fácil de hacer en la vista isométrica (puede habilitar esto haciendo clic en la vista debajo de la brújula, probablemente será "Persp").
En este punto, arrastre el objeto de su Jerarquía a su Carpeta que creó para su modelo, textura y materiales para crear un Prefab de él. Haga clic en el botón Abrir Prefab en el Inspector para que esté editando el Prefab exclusivamente.
Vaya a Ventana > Animación > Animación para que aparezca la ventana Animación. Asegúrese de que el objeto principal de su modelo esté seleccionado. Haga clic en el botón Crear en la ventana Animación y luego elija una ubicación para guardar sus Animaciones (prefiero agregar una carpeta de Animaciones a la carpeta en la que estoy trabajando para todo lo demás, de modo que los archivos de animación no saturen la pantalla principal). carpeta). Asigne un nombre a su primera animación y guárdela. (Otra preferencia mía es nombrarlo según la cantidad de cartas que se muestran comenzando con un mazo completo. En este caso lo nombré "5")
Haga clic en el botón Agregar propiedad en la ventana Animación y seleccione la primera malla > Renderizador de malla > Habilitado.
Haga esto para cada Malla en su modelo para que se vea así.
Presione Ctrl + A para seleccionar todo y luego Ctrl + C para copiar todas las propiedades y fotogramas clave. Haga clic en el menú desplegable que tiene el nombre de su animación y haga clic en Crear nuevo clip. Guarde la nueva animación (con mi esquema de nombres, la nueva animación se llama "4").
Presione Ctrl + V para pegar las propiedades y los fotogramas clave de la animación anterior. Haga clic en la casilla de verificación junto a Mesh Renderer para la carta superior en el mazo.
Mueva el cursor en la línea de tiempo al conjunto de fotogramas clave al final y luego desactive la casilla de verificación junto al Mash Renderer para la tarjeta superior nuevamente.
Seleccione todo y copie nuevamente, y cree una nueva animación (esta vez la llamé "3"). Pegue las propiedades y los fotogramas clave y repita el mismo proceso que antes, pero esta vez también deshabilite el renderizador de malla en la siguiente tarjeta.
Continúe haciendo esto hasta que termine de hacer la animación para cuando solo haya una tarjeta. Copie sus propiedades y fotogramas clave nuevamente y cree una nueva animación (llamo a la mía "0"). Pegue sus propiedades y fotogramas clave, pero esta vez mantenga habilitada la última tarjeta. Vuelva a hacer clic en Agregar propiedad y seleccione la malla para la tarjeta final > Representador de malla > Referencia de material.
Si es necesario, haga clic en la flecha para expandir la nueva propiedad y poder ver la miniatura del material. Arrastre y suelte su material vacío en el primer y último fotograma clave de la animación.
Presione Ctrl+S para guardar su Prefab y Animaciones.
Paso 5: agregar componentes y crear el paquete de activos
Asegúrese de que el objeto principal del modelo esté seleccionado y haga clic en Agregar componente > Animación. Arrastre el archivo de animación que creó para una plataforma completa al campo Animación del componente. En Animaciones, cambie el Tamaño a la cantidad de animaciones que tiene (en mi caso, 6) y luego arrastre cada una de sus animaciones a los Elementos que aparecen desde el mazo completo hasta el vacío.
Haga clic en Agregar componente nuevamente y esta vez agregue TTS Asset Bundle Effects. Expanda los efectos de bucle en este componente y cambie el tamaño para que sea la cantidad de animaciones que tiene.
En cada elemento, defina un nombre para el efecto de bucle (solo lo nombro después de la animación), expanda la sección Animador, arrastre el objeto principal del modelo al componente Animador y escriba el nombre exacto de la animación para ese estado en Nombre del Estado. Prefiero hacer esto desde el mazo lleno hasta el vacío.
Presione Ctrl + S para guardar su prefabricado nuevamente. Haga clic en el prefabricado en el administrador de archivos para que se abra en el inspector.
En la parte inferior de la ventana de vista previa en el inspector debería decir AssetBundle con un menú desplegable. Haga clic en eso y elija Nuevo. Escriba un nombre único en el cuadro de texto que aparece.
Haga clic derecho en el administrador de archivos y elija Build AssetBundles. Espera a que esto termine.
Paso 6: Configurar las cosas en TTS
En este punto, está listo para importar a TTS. Vuelva y seleccione Objetos > Componentes > Personalizado > Paquete de activos. Navegue hasta donde se guardó el Paquete de activos para el campo Principal. Estos se guardan en el proyecto de Unity en una carpeta llamada "AssetBundles".
Seleccione su Paquete de activos, establezca su Tipo en Bolsa y cambie su Material a Cartón.
En este punto, puede hacer clic con el botón derecho en su paquete de activos importado y hojear los efectos de bucle para asegurarse de que sus animaciones se muestren correctamente.
A veces, el material de su paquete de activos puede parecer un poco oscuro, es posible que deba ajustar su material en Unity o cambiar el tinte de color en TTS en sus tarjetas para que coincida. Tú decides.
Paso 7: Creación de secuencias de comandos
Ahora tiene una bolsa con algunas animaciones, pero necesitamos programar todas las funciones. El elemento Workshop de ejemplo tiene una versión comentada del script dentro de él, así que consulte cómo configurar el suyo, pero cubriré las funciones aquí brevemente.
El script comienza con "función onUpdate ()", esto hace que el juego ejecute una verificación de cada cuadro. Debajo de eso, tenemos el bloque de código que dicta qué efecto de bucle debe reproducirse para cada cantidad de objetos dentro del paquete de activos.
La línea "if self.getQuantity() == 0 then" indica si hay 0 artículos en el paquete de activos, luego haga la siguiente línea.
La siguiente línea "self.AssetBundle.playLoopingEffect(5)" indica que se debe reproducir el sexto efecto de bucle si la cantidad anterior se encuentra dentro del contenido del paquete de activos.
La siguiente línea "elseif self.getQuantity() == 1 then" indica que si hay 1 elemento en el paquete de activos, realice la acción en la siguiente línea.
La siguiente línea "self.AssetBundle.playLoopingEffect(4)" indica que se debe reproducir el sexto efecto de bucle si la cantidad anterior se encuentra dentro del contenido del paquete de activos.
Esto continúa hasta llegar a un mazo completo. Esto reproduciría LoopingEffect(0), o el primer efecto de bucle.
Si configura sus Efectos de bucle en Unity para que un mazo completo use el primer Efecto de bucle, entonces siempre será LoopingEffect(0) en su secuencia de comandos, y el número cuenta a medida que se reduce la cantidad de cartas.
La segunda parte del script ejecuta una verificación cada vez que un jugador intenta agregar algo al paquete de activos.
La primera línea " if (obj.getVar("objectType") == "ExCard" " busca si la tarjeta tiene un identificador único en su script. "ExCard" puede ser lo que quieras, pero ese identificador exacto debe obtenerse definido en cada una de tus cartas.
La siguiente línea "y self.getQuantity() < 5)" verifica si el paquete de activos tiene menos del número máximo de tarjetas. Cambia el número 5 a la cantidad máxima de cartas que tengas en tu mazo.
La siguiente línea "then return true end" aceptará el elemento en el paquete de activos si se cumplen ambas condiciones.
La línea final "devolver falso" rechazará cualquier artículo que no cumpla con las dos condiciones definidas.
A continuación, abra el editor de secuencias de comandos en una de sus tarjetas y agregue la siguiente línea:
“TipoObjeto = “ExCard” “. ExCard es el identificador único que busca el paquete de activos cuando alguien intenta agregarle un objeto. Esto puede ser lo que desee, siempre que coincida con lo que se llamó en el script del paquete de activos. Esta línea debe aplicarse a todas las cartas de tu mazo.
En este punto, debería poder guardar su juego, guardar los scripts, ¡y todo debería funcionar! ¡Adelante, guarda tu objeto e impórtalo a tu juego!
Eso es todo lo que estamos compartiendo hoy para este Simulador de mesa guía. Esta guía fue originalmente creada y escrita por cabeza de hobbit. En caso de que no actualicemos esta guía, puede encontrar la última actualización siguiendo este liga.