Brico-rol – Hacer fichas de Astral TableTop como un profesional

Cabecera de la entrada. Muestra una hoja de libreta y el texto "Astral Z".
Bienvenidos a Diario Silvano. Al habla Angelo. Como Brico-rol del mes de septiembre volvemos con el contenido relacionado con el tablero virtual Astral y con la elaboración de fichas. Mientras que en la anterior entrada vimos los aspectos más básicos, aquí desvelaremos algunos más difíciles de conocer de la plataforma.

Todo lo expuesto aquí es únicamente válido en la fecha de publicación de la entrada. Dado que es una plataforma en constante evolución, es fácil que muchas cosas estén sujetos a cambios o mejoras. De hecho, una limitación de la plataforma ha sido eliminada durante la planificación de esta entrada.

¿Qué contiene este tutorial?

Esta entrada la vamos a diferenciar en dos secciones. En la primera vamos a ampliar las funcionalidades y límites de las fichas con contenidos más detallados o no documentados. Habéis leído bien. Hay cosas que funcionan a pesar de no estar documentadas. En la segunda vamos a ver recetas que podemos utilizar en nuestras fichas.

Si quieres recordar como funcionan las fichas de Astral puedes consultar el primer tutorial que hicimos en este blog además del centro de ayuda de la plataforma.

Más sobre las funcionalidades de Astral TableTop

Estadísticas y sus secretos

En el tutorial anterior vimos que las estadísticas (stats) eran variables que podían contener un número, una cadena de texto o un booleano (verdadero-falso). Esto en principio no aparece en el centro de ayuda de Astral, por lo que se trata de una funcionalidad no documentada. Este hecho tiene una aplicación más: es posible utilizar métodos de JavaScript para este tipo de datos.

Como vimos en su momento, la misma documentación de Astral muestra como usar expresiones matemáticas que son coincidentes con MATH de JavaScript. Lo cierto es que también pueden ser usadas el resto de propiedades y métodos.

Un ejemplo práctico sería utilizar el método «concat» de las cadenas de texto y el método «toString» de los números que podría contener una fórmula así como «"1d".concat((4).toString())» (el número entre paréntesis es necesario para que funcione, salvo que fuera una referencia a una estadística).

Un ejemplo real del método.

No todas las funcionalidades están habilitadas, como «length» de las cadenas de texto, y lanzará un mensaje avisando de la incidencia.

Pulsar para ampliar.
Además de las funcionalidades descritas, MATH y tipo de variables, desconozco si funcionan más cosas de JavaScript.

Tiradas y cadenas de texto

Como vimos en el anterior tutorial, las tiradas se expresan dentro de las acciones y tienen un lenguaje propio. Pueden tanto ser utilizadas dentro de una fórmula como utilizarlas en su interior. Esto implica que podamos usar las variables y las funcionalidades de JavaScript.

El contenido de una tirada, lo que está entre paréntesis, es tratada como una cadena de texto. Por ello podemos expresar este contenido en una estadística para luego invocarla dentro. Sería válido una estadística llamada «Tirada» que contenga «1d20adv» y una tirada formada con «!({Tirada})». También es posible generar un contenido con el método «concat» de las cadenas de texto, aunque resulta más eficiente utilizar el sistema de concatenado propio de las tiradas.

Que vendría a ser juntar letras y ya. Ejemplo: «!({Tirada}adv+{X}d{Y}+{Z})».

Ejemplo concreto de cadena en una tirada.

Operador condicional y operadores lógicos

Aunque hemos dicho muchas veces que las fórmulas de Astral utilizan el formato de JavaScript, los operadores lógicos son una excepción. En lugar de seguir dicho formato, utiliza directamente las palabras inglesas para estos conceptos. Es decir: «not» , «and» y «or». Un ejemplo de su utilización podría ser «not Ventaja and Ceguera ? -4 : 0», donde «Ventaja» y «Ceguera» son casillas.

Limitaciones de las estadísticas anidadas en acciones

El problema de utilizar funcionalidades no documentadas es que pueden no estar pulidas del todo. Puede que no contemplen una posibilidad o que ésta misma sea un fallo. Las funcionalidades no documentadas de Astral TableTop funcionan perfectamente cuando se las utiliza dentro de una estadística o de una acción. Sin embargo, fallan cuando una acción utiliza una estadística cuyo resultado utiliza otra estadística (anidada). Dentro de la ficha y la previsualización se mostrarán correctamente, pero el error se revelará en el chat cuando sea usada.

Comparar previsualización con el chat.

Cuando trabajamos con números las anidaciones no fallan al ser lanzadas en el chat. En cambio, sí lo suelen hacer cuando usamos booleanos y cadenas de texto (la excepción es cuando anidamos un número como con «"1d".concat(X)» o «"1d".concat(X.toString())»). Por ejemplo, fallará si una estadística contiene «"Ir a".concat(Lugar)», donde «Lugar» es una estadística con una cadena de texto. Otro ejemplo sería «not Check» donde «Check» es una casilla. En cambio, sí funcionará la estadística que contenga«not Check ? 2 :-2», «not Check ? "Elfo" : "Enano"» o «not Check ? true : false».

Si os fijáis, los ejemplos donde muestro una ficha funcional utilizan precisamente la excepción

Ésto es un factor limitante a tener en cuenta a la hora de preparar la ficha ya que nos permitirá saber que fórmulas funcionarán únicamente dentro de una estadística y cuales también en una acción.

Recetas para un profesional

Notificaciones con estadísticas

Una buena práctica a la hora de hacer fichas en Astral es reservar las estadísticas para todo aquello que requiera una posible acción (ej. todo lo necesario para una tirada) dejando el elemento texto para todo lo demás (ej. descripciones como el alineamiento, la clase, etc). Sin embargo, las estadísticas pueden ser utilizadas como avisos automatizados dentro de la ficha a través de una o más condiciones que nos muestre un texto concreto.

Pongamos un ejemplo práctico. En Ryuutama tenemos las condiciones, que son estados alterados que modifican temporalmente el valor de las estadísticas. Al obtener una condición también se anota una puntuación. Ésta sirve como dificultad para recuperarse de la condición cuando se realiza una tirada de salud, una de las tiradas diarias. Gracias a una estadística podemos poner un aviso junto a la puntuación de salud actual y junto a la condición para cuando se haya recuperado ésta. De esta forma no olvidaremos actualizar la ficha.

Pulsar para ampliar.

En el ejemplo de arriba hemos usado el emoji «➕», pero nada impide que usemos otro tipo de texto. Cuando una de las opciones es que no aparezca nada, prefiero que el interactuable tenga un color de fondo semitransparente y que el texto que muestre sea en realidad varios espacios. De esta forma no olvidamos que sigue ahí y podemos pulsarlo más fácilmente cuando haga falta.

Tiradas con datos para verificar

Como vimos en el tutorial anterior, podemos montar un verdadero panel de control con las tiradas. Pero puede ocurrir perfectamente que al añadir demasiadas variables uno no sepa exactamente que está aplicando. Por ello podría ser conveniente que en el chat también nos avisara con información adicional.

Un ejemplo práctico sería la siguiente ficha de Ryuutama. En este juego tendremos que realizar una serie de tiradas cuya dificultad está determinada por el terreno y las condiciones de viaje. Además, los personajes pueden tener modificadores en función de las condiciones del viaje. En el lugar de la ficha donde se anotan estos hay una serie de casillas para marcar el terreno y el clima. En ambos casos hay un orden de prioridad, pero en el caso de los climas te avisa de los no compatibles (ver apartado anterior).

Click para ampliar

Podemos reservar un par de estadísticas para componer dentro de la acción el terreno y el clima que se está aplicando en la tirada. De esta forma podremos contrastar mejor la información en caso de duda.

Tirada de viaje en el chat.

Usar como referencia una cadena de texto

Una de las cosas que le hace falta a las fichas de Astral es la posibilidad de usar un desplegable para elegir una opción. Por ejemplo, hay juegos donde las armas utilizan diferentes atributos y esto permitiría que aplicara automáticamente las puntuaciones. La opción que a priori tenemos es utilizar una cadena de casillas de verificación, pero esto ocupa cierto espacio. Por ello la otra opción es aprovechar el potencial de JavaScript.

En una estadística tendremos el texto del atributo a aplicar (ej. Un D20 simplificado: «FUE», «DES» e «INT») y en nuestra acción verificará que modificador utilizar. Para ello usaremos un método de las cadenas de texto llamado «includes», que devuelve verdadero si la cadena de texto contiene la referencia dada. La tirada quedaría de la siguiente forma para el modificador de habilidad: !(1d20+{Habilidad_01.includes("FUE") ? FUE_mod : [ídem resto de atributos]}).

Ej. práctico del uso de «includes».

Al verificar si contiene una referencia, significa que dará positivo en todas las opciones que contengan esa referencia. Por ejemplo, para «INT» dará como verdadero «INT», «INTEL», «MINT», etc. En la imagen de arriba tenéis un ejemplo práctico donde puede limitarse esta búsqueda usando previamente el método «substring», que sirve para extraer previamente un fragmento que queramos. Lo «único» que debes saber es el inicio y el final de la cadena donde quieres buscar. Esto puede resultar un problema cuando no lo sabemos o cuando Astral modifica la cadena a conveniencia. Como comentamos en la sección anterior, en ciertos casos donde usamos JavaScript la previsualización de la acción no se corresponde con lo que saldrá en el chat. Hay combinaciones de cadenas (yo detecte por ejemplo cuando se usa el símbolo de sumar) que añade también las comillas. Esto significa que mientras que para el texto «FUE» va a considerar que son tres letras y la primera es la «F», para el texto «FUE+DES» lo va a considerar como «"FUE+DES"» con nueve letras y la primera la comilla.

Llegados a este punto alguien puede preguntar con razón porque no utilizar los operadores condicionales con las cadenas de texto. No funcionan directamente. Únicamente sirven para números.

Hojas supletorias

La ventaja de utilizar como base las fichas originales del juego es que tienes la referencia original, por lo que son familiares. La contra es que puede que no estén pensadas para ser utilizadas en una plataforma online (o para jugar en general, pero ese es otro tema). Por poner un ejemplo, hay tiradas que no están reflejadas en la ficha y no hay espacio para añadirlas. Otras veces pueden ser gustos o conveniencias prácticas, como tener las habilidades por orden alfabético en lugar de por categorías. Una opción sería montar unas hojas de personaje personalizadas, pero otra sería añadir hojas supletorias con lo que necesites.

En el ejemplo de abajo tendríamos dos necesidades cubiertas. En primer lugar, en Ryuutama hay tiradas de habilidad improvisadas que usan dos atributos. Mientras que en una mesa de juego simplemente cogemos dos dados y lanzamos, aquí menoscabaríamos la magia de la automatización lanzando dos acciones. Por eso en el lado izquierdo de la hoja supletoria hemos añadido una tabla con todas las combinaciones posibles y sus acciones correspondientes. En el segundo caso, tenemos espacio dedicado para las diferentes tiradas de viaje pero pocas indicaciones sobre las mismas. Por eso en el lado derecho de la hoja supletoria tenemos el esquema del libro con todas las indicaciones y un acceso rápido a toda la información.

Pulsar para ampliar.

Otra posibilidad que he visto en Tabletop Simulator (una plataforma 3D para emular juegos de mesa) es usar una hoja para configurar (ej. Introducir las estadísticas casi como si fuera un antiguo formulario administrativo) y la otra con la información ya procesada junto a las acciones necesarias.

Legibilidad del código

Una cosa que puede ocurrir perfectamente es que los atributos derivados y las acciones contengan mucho código difícil de seguir a primera vista. Si dichos fragmentos de código se repiten bastante o es uno que puede ser vital tener a mano, podemos anidar estadísticas. Por ejemplo, en lugar de dividir entre cinco el atributo fuerza en distintos sitios podemos crear una estadística con dicha división y hacer referencia a ella.

Éste sería un caso sencillo, pero otros podrían ser más complejos.

El único límite que debemos tener en cuenta es el visto en la sección anterior. Cuando el resultado numérico de una estadística es derivado de otra no ocurre nada, pero cuando se trata de una cadena de texto o un booleano lo deberemos tener en cuenta si queremos usarlo en una acción.

Un supuesto donde podemos simplificar es cuando repetimos en muchas ocasiones un resultado condicional, por lo que podemos directamente guardarlo en una estadística para ser anidada. Un ejemplo arquetípico sería los modificadores de característica (que vimos en el anterior tutorial). Incluso podemos guardar la misma condición ya que se trata de un booleano (ej. «FUE > 10» devuelve verdadero o falso).

Conclusiones

Tal como vimos en el tutorial básico como en éste, Astral TableTop te permite ejecutar bastantes tipos de funcionalidades con pocos recursos. La cuestión aquí es realmente el tiempo que le quieras dedicar a ello. ¿Compensa? Depende de tus objetivos. Si quieres simplemente salir del paso, tampoco te hará falta mucho. Facilitarte la experiencia como director de juego y que sea igualmente amigable con tus jugadores tiene un coste, pero son beneficios que se notan bastante. Aquí solo caben tres opciones: ponerte manos a la obra, tener un alma caritativa que te ayude o esperar que aparezca en la plataforma.

Otras entradas relacionadas

COMPARTIR
Icono Facebook. Compartir entrada en Facebook Icono Twitter. Compartir entrada en Twitter. Icono Whatsapp. Compartir entrada en Whatsapp

0 respuestas:

Publicar un comentario