Foro

Natilla: Scripting integrado.

Comunidad Umbría :: La web en general :: Natilla: Scripting integrado.

Como medida de seguridad los nuevos usuarios no pueden reabrir hilos antiguos.
Si crees que el tema es realmente necesario, por favor, abre uno nuevo en la sección correspondiente.
Chemo
 
Demiurgo (Fundador de la web) Carné Umbriano nº1
13/11/2016, 19:35
Editado: 13/11/2016, 19:36

Buenas. A partir de ahora voy a ir poniendo por aquí las cosas que en 'laboratorio' ya funcionen para que sepáis, más o menos, como va la Natilla. Así cuando haya mucho tiempo de silencio sabréis que no he podido avanzar y cuando haya novedades se irán poniendo en esta sección.

Abriré un hilo para cada cosa para ir comentando a medida que desarrollo y, de paso, escuchar opiniones. Ya sabéis que al final lo haré como me de la gana, pero que tomo nota de lo que vayáis diciendo.

Autorol está plenamente integrado y tiene un meta-lenguaje de scripting operativo (esta semana se probará a fondo en la Guerra Secreta). Sé que a muchos de vosotros os asustará el tema pero me baso en dos cosas:

  • Hay una cantidad ingente de informáticos en Umbría.
  • Incluso de los que no son informáticos de carrera hay un montón de peña que conoce lenguajes de scriptings.
  • Una vez alguien desarrolle un script molón ¡todo el mundo podrá usarlo en sus partidas! Y encima si alguien lo mejora... pues se mejorará para todos.

De primeras las dos opciones más evidentes que se me ocurren para los scripts son las fichas de personaje y la mecánica de combates.

Usando este meta-lenguaje se puede hacer algo como esto:

>>inicio*

{% FUE = 12 %}
{% DES = 12 %}
{% INT = 12 %}
{% PUNTOS = 4 %}

[[MOSTRAR->mostrar_ficha]]

>>mostrar_ficha

FUE: {{ FUE }} ({{ MOD_FUE }})
DES: {{ DES }} ({{ MOD_DES }})
INT: {{ INT }} ({{ MOD_INT }})

[[Aumentar fuerza->sumar_fue | FUE<18, PUNTOS>0]]
[[Disminuir fuerza->disminuir_fue | FUE > 3]]

[[Aumentar destreza->sumar_des | DES< 18, PUNTOS>0]]
[[Disminuir destreza->disminuir_des | DES > 3]]

[[Aumentar inteligencia->sumar_int | INT < 18, PUNTOS>0]]
[[Disminuir inteligencia->disminuir_int | INT > 3]]

>>sumar_fue*

{% FUE +1 %}
{% PUNTOS -1 %}

[[VOLVER->mostrar_ficha]]

>>restar_fue*

{% FUE -1 %}
{% PUNTOS +1 %}

[[VOLVER->mostrar_ficha]]

>>sumar_des*

{% DES +1 %}
{% PUNTOS -1 %}

[[VOLVER->mostrar_ficha]]

>>restar_des*

{% DES -1 %}
{% PUNTOS +1 %}

[[VOLVER->mostrar_ficha]]

>>sumar_int*

{% INT +1 %}
{% PUNTOS -1 %}

[[VOLVER->mostrar_ficha]]

>>restar_int*

{% INT -1 %}
{% PUNTOS +1 %}

[[VOLVER->mostrar_ficha]]

>>calcular_modificadores

{% MOD_FUE = (FUE-10)/2 %}
{% MOD_DES = (DES-10)/2 %}
{% MOD_INT = (INT-10)/2 %}

[[CONTROL]]

Alguien que sepa un poco de programación o scripting creo que podrá encontrar el sentido al texto.

Lo que hacemos es crear lo que en Autorol se denominan 'Escenas' (salidas por pantalla) poniendo delante >> para cada una. Cuando algo va entre llaves es una variable que se muestra en pantalla.

Por ejemplo {{ FUE }} Mostraría el valor actual de fuerza.

Si va entre llaves con porcentajes se trata de lo que llamamos una 'consecuencia' (algo que se calcula en esa escena).

Por ejempo {% MOD_INT = (INT-10)/2 %} grabará en la variable MOD_INT el valor de INT menos 10 dividido por dos.

Las cosas que van en corchetes son enlaces y si tienen un separador vertical indican comprobaciones que deben cumplirse para que el usuario pueda ir por ellos.

Por ejemplo: [[Aumentar destreza->sumar_des | DES< 18, PUNTOS>0]] hará aparecer un enlace con el texto 'Aumentar destreza' siempre y cuando la destreza sea inferior a 18 y queden puntos para repartir.

Si un enlace pone simplemente [[CONTROL]] quiere decir que esa es una escena de 'Control' que se ejecutará siempre que salga información de pantalla (en nuestro caso la última calcula los modificadores)

Si una escena tiene un asterisco en su título es lo que se llama una escena de flujo: no saldrán botones para que escoja el usuario sino que el sistema seguirá el primer enlace que cumpla las condiciones. Se usa en este caso en las escenas donde se añaden puntos para acabar siempre, de forma automática, mostrando de nuevo la ficha.

Aunque en este ejemplo lo he simplificado mucho se puede hacer de todo. Por ejemplo {% ataque = 1d10 +2 %} almacena el resultado de una tirada en la variable ataque. ¿Vais viendo por donde van los tiros? Además en los textos se podrá usar HTML y tendremos a nuestra disposición varias plantillas pre-fabricadas (Bootstrap 4, por ejemplo, pero también algunos snippets específicos que vamos a crear para Umbría).

Pues eso... en el laboratorio he logrado varias pruebas exitosas y estoy refinando el sistema para que puedan hacerse más cosas. Porque así ya no depende de nosotros que se suban nuevos reglamentos/tiradas de dados... cualquiera podría hacerlo.

13/11/2016, 20:42

felicidades y gracias por el esfuerzo

¿permite cosas como 1dFUE ?

o listas para dados personalizados como en anydice?

Chemo
 
Demiurgo (Fundador de la web) Carné Umbriano nº1
13/11/2016, 20:58

Lo de 1dFUE lo dices por ejemplo para Savage Worlds ¿No? Sí, aunque ahora no está hecho lo estará. 

Y lo de anydice imagino que te refieres a que se pueda poner 1d13 por ejemplo. Sí, eso sí que está porque lo que hace el parser de tiradas es simplemente tirar el n de caras que indiques, no tiene por qué ser estandar, y agrupar o dar el resultado de forma desglosada según prefiera el jugador.

13/11/2016, 23:49

Chemo, nos pones los dientes brutalmente larguisimos con la Natilla, y con todo lo que estais montando

¡You Dammned Teaser!

14/11/2016, 00:08

me refiero a poder poner una lista y que el dado  sea esa lista, ya sean números, imagenes o texto

 

por ejemplo

Al encontrar un coche

1d{roto, averiado, sin gasolina, en buen estado, tartana, perfecto}

dados fate

4d{-1, 0, 1}

un dado solo impares

1d{1, 3, 5, 7}

localización de un golpe

1d{cabeza, hombros, brazos, piernas}

 

14/11/2016, 00:22

Al leer el título ya he tenido que limpiar una vez el teclado de saliva.

Al leer scripts libres para todos, he tenido que devolver mi mandíbula inferior a su sitio, varias veces (no encajaba la jodida). 

Luego he conectado natilla+scripts+tableros y me he tenido que levantar, apagar el ordenador y salir a tomar el fresco un rato porque las gónadas me iban a explotar del hype :D

Gracias por todo el curro Chemo.

Chemo
 
Demiurgo (Fundador de la web) Carné Umbriano nº1
14/11/2016, 00:40
Editado: 14/11/2016, 00:46

@Durgeoble: pues tenía eso como un evento variable (poner simplemente {% estado = roto|averiado|tartana %}) pero me ha gustado el toque que mencionas para los dados fate. 

La cosa quedaría como tu comentas. En nomenclatura Autorol tendría que ser:

{% estadoCoche = 1d(roto|averiado|sin gasolina|en buen estado|tartana|perfecto) %}

{% tiradaFate = 1d(1|0|-1) %}

{% tiradaImpar = 1d(1|3|5|7) %}

{% texto 1d(¡Alto forastero!|Detente viajero|¿Qué te trae por aquí?) %}

Incluso valdría para hacer descripciones cambiantes en una historia por si alguien pasa varias veces por el mismo sitio. Me lo apunto porque es muy fácil de añadir y da mucho juego.

@Jangil y @Souhiro: el tema de Autorol yo sabía que iba a dar mucho juego, pero me faltaba hacer las pruebas prácticas. He reescrito todo el código para adaptarlo a la nueva Umbría y al final me ha salido de regalo un nuevo Autorol mucho más versátil. A ver si sigo teniendo el viento a favor una temporada más y voy cerrando partes del núcleo. Luego es sólo encajar las piezas. Pero vamos, cuando os digo que la Natilla está a años luz de lo que tenemos es porque lo tengo muy claro.

 

Randy
 
14/11/2016, 02:21

Ufff. No sé si alegrarme por lo que se puede llegar a hacer o arrancarme los pelos por lo que he ido haciendo en Autorol a través de la interfaz...

14/11/2016, 08:03

La posibilidad de programar scripts va a ser la leche! Y poder compartirlos y comentarlos, increíble. Supongo que se podria crear un subforo para ello en la natilla. Cuando uno se aburre, programar un rato de umbria puede ser divertido, y luego subirlo y comentarlo

 

Chemo
 
Demiurgo (Fundador de la web) Carné Umbriano nº1
14/11/2016, 09:10

@Randy: no te preocupes. Todo lo que viene es para mejorar Autorol. Te contesto mejor en un hilo de la sección correspondiente.

14/11/2016, 09:31

Sin duda es impresionante, estaba leyendo el pequeño scrip de ejemplo y cuando podamos poner nuestras manitas sobre Umbría Natilla se va a armar una gorda en las partidas xD

14/11/2016, 10:10

A mi todo esto me suena a "guachi guachi" pero me pone muy palote.

Ea.

14/11/2016, 10:40
Editado: 14/11/2016, 10:43

Hola Chemo, yo pertenezco al club de los que no tenemos ni la más remota idea de programar, y me ha entrado una pequeña duda acerca de esto de las fichas y sistemas automatizados.

Aunque dirijo D&D3.5, le tengo hechas unas cuantas modificaciones. ¿Está previsto que se puedan modificar valores 'a dedo', o una vez que tú o quien sea haga una ficha ya funcionará así?

Me explico: 

Uno de los cambios que tengo hechos y que uso a menudo, es que los personajes se puedan especializar en un modo de combate. En D&D, tu ataque va subiendo con los niveles, y cuando llega a +6, se añade un segundo ataque con +1.

Bueno, pues una de las modificaciones es que por ejemplo un enano guerrero con hacha, en lugar de empezar con +1, empieza con +2 en cuerpo a cuerpo, y +0 a distancia, de manera que a 5º nivel ya tendrá +6/+1 en lugar de a 6º, pero tendrá siempre 2 menos en distancia, a nivel 5 por ejemplo, +4, y conseguirá su segundo ataque con ballestas a nivel 7 en vez de 6.

Este es un ejemplo, pero hay otros, como cambios en las Tiradas de Salvación y demás, que no pido que la ficha los calcule, no me importa asignar los valores a dedo que para esos son reglas de la casa, pero es por saber si se podría hacer o hay que meterse a comprender los códigos.

Puede parecer una tontería, pero si se aplica a cierto sistema de juego una ficha automatizada que solo puedan modificar los que tengan cierta idea de programación... Bueno, ese y otros cambios se me van al traste, o tendré que prescindir de las fichas automáticas para esto y seguir haciéndolas en tabla o texto plano.

¿Los que tenemos modificaciones de la casa en sistemas establecidos, veremos alguna mejora o tendremos que seguir como hasta ahora? :P

Chemo
 
Demiurgo (Fundador de la web) Carné Umbriano nº1
14/11/2016, 11:01

@Veldrin: ¿Está previsto que se puedan modificar valores 'a dedo', o una vez que tú o quien sea haga una ficha ya funcionará así?

Sí. El script es un trozo de texto que tú podrás añadir en la zona de scripts de tu partida. ¿Qué te gusta tal cual? Lo dejas. ¿Qué lo quieres modificar? Lo modificas. ¿Qué quieres compartir el script modificado con el resto de la comunidad? Lo subes al contenedor global, donde cualquiera podrá ojearlo y a su vez insertarlo en su partida, modificarlo o lo que sea. 

14/11/2016, 11:31

Gracias jefe. Me asalta otra duda, pero para no extenderme en explicaciones para poder llegar a la pregunta, veré cómo queda cuando esté funcionando y ya si eso pregunto :P

14/11/2016, 11:34

Hola, soy nuevo en esta web (e informático) y aún estoy integrándome en la comunidad, así que quizás la siguiente pregunta ya esté respondida en otro lugar.

Según este hilo además de estar programando (meta-)scripts , estáis programando y desarrollando otras. ¿Todo este desarrollo está en una especie de repositorio más o menos público donde se pueda colaborar altruístamente o es un proyecto personal más o menos secreto?

Chemo
 
Demiurgo (Fundador de la web) Carné Umbriano nº1
14/11/2016, 12:04

Es un proyecto personal (secreto, secreto... no tanto, pero privado sí :D). Pero con la nueva Umbría se abrirá la caja de los truenos en forma de API, así que los programadores inquietos podrán aportar cosas sin necesidad de pedir permiso :) 

15/11/2016, 14:03

Otro que de programación sabe tirando a cero, pero que espera con ganas el momento de poder probar todo eso!! :-)

Me ha gustado especialmente que se pueda hacer modificaciones a los sistemas de creacion de fichas, tal y como ha preguntado Veldrin!!

Nunca me cansaré de dar las gracias a todos aquellos que os pasais horas, dias, meses, años haciendo de Umbría una Comunidad como la que es y, por lo que veo, con visos de mejorar con esa Natilla, Chemo!!! ;)

15/11/2016, 15:53

Es un proyecto personal (secreto, secreto... no tanto, pero privado sí :D). Pero con la nueva Umbría se abrirá la caja de los truenos en forma de API, así que los programadores inquietos podrán aportar cosas sin necesidad de pedir permiso :) 

while Natilla_news>0:

hype++

 

Chemo
 
Demiurgo (Fundador de la web) Carné Umbriano nº1
15/11/2016, 15:56

Un detalle: yo aquí he recalcado el scripting porque es lo más puro y rápido para los que sabemos algo de programación. Pero ojo: habrá interfaz visual muy fácil de usar. De hecho ahora que estoy terminando el Autorol 2.0 la podréis ver.

Seguramente una vez arranque la Guerra Secreta abriré una zona llamada 'Laboratorio Natilla' donde los usuarios podréis ir trasteando con los productos en desarrollo y así dar opiniones de primera mano. 

Randy
 
15/11/2016, 16:05

@Chemo: Seguramente una vez arranque la Guerra Secreta abriré una zona llamada 'Laboratorio Natilla' donde los usuarios podréis ir trasteando con los productos en desarrollo y así dar opiniones de primera mano. 

Chuck says:

15/11/2016, 17:35

Hola, me parece idea excepcional Chemo, me encanta! Bootstraps, yay! Y lo de los scripts mola muchísimo, aunque no sé mucho al respecto (No sé programarlos pero sí usarlos de mis épocas de hacer frontend) me parece que le dará una versatilidad y un dinamismo a las partidas que mejorará notablemente la experiencia de los usuarios (jugadores, másters, etc.). Mis felicitaciones por la iniciativa!

15/11/2016, 17:57

{{ }} para mostrar una variable y {% %} para operaciones... la sintaxis me resulta levemente familiar ;).

Con un if y un loop sería brutalmente potente.

¿Las variables son simples números/cadenas o se puede almacenar algo más?.

Chemo
 
Demiurgo (Fundador de la web) Carné Umbriano nº1
15/11/2016, 19:05

{{ }} para mostrar una variable y {% %} para operaciones... la sintaxis me resulta levemente familiar ;).

XDDDD 

Los loops no están definidos todavía pero lo estarán en un futuro próximo (quizás para la Natilla, no todavía para el Autorol 2.0) ya que, efectivamente, los loops pueden dar mucha potencia.

Las variables almacenan números, texto y resultados de operaciones.

15/11/2016, 20:36

El loop es lo que va a terminar de dar potencia, es con lo que se automatizan cosas.

Al final se terminarán dirigiendo solas las partidas! La revolución de los scripts! Te hemos calado de nuevo Chemo!

15/11/2016, 22:28

{{ }} para mostrar una variable y {% %} para operaciones... la sintaxis me resulta levemente familiar ;).

Yo esa sintaxis la uso en Twig... Y sí, los loops le darían aún más potencia.

16/11/2016, 11:18
Editado: 16/11/2016, 11:19

A día de hoy una cosa que veo en muchas partidas, mías incluidas, es la duda de si el master lanza una tirada por cada personaje jugador, o la lanzan ellos. En mesa, lo suyo es que la lancen los jugadores, por aquello de sentirse partícipes. Pero en foro, si tienes que esperar que cada jugador haga una tirada (de habilidad por ejemplo), y posteriormente, narrarle a cada uno el efecto, pueden pasar días. Y ocurre porque hay masters que dicen/decimos, "tirad Percepción". Y ale a esperar posts.

Alternativamente lo haces tú, pero es un coñazo el proceso iterativo de consultar en cada ficha cuánto tiene Pepito en Percepción... tirar... por eso a veces optas por decirles que tiren ellos. Pero ganaríamos tiempo y comodidad masteril, y aquí hilo con el tema de scripting, si pudiéramos crearnos una "macro" (o script supongo más acertado), que se nos mostrara en alguna parte de la página (donde las tiradas imagino, la parte más "mecánica"), y que permitiera elegir, además del tipo de dado y las opciones actuales:

Desplegable A: "Percepción"

Desplegable B: "Pepito"

Y sin tener que abrir cada ficha por separado, haces la tiradas en un plis y Umbría coge el valor de Percepción de Pepito por mí.

Por ir ubicándolo donde corresponde, con el futuro scripting podremos hacer esto del ejemplo? (ya sé que habría una parte previa de tener esas habilidades en variables, pero son dos preguntas en una).

Chemo
 
Demiurgo (Fundador de la web) Carné Umbriano nº1
16/11/2016, 13:51

En teoría sí. La verdad es que no sé donde estará el 'techo' de los scripts porque ya han superado mi expectativa inicial. Atendiendo a mi experiencia en otras cosas que hago en mi trabajo 'de verdad' los usuarios saben estirar mis ideas mucho más allá del planteamiento inicial. Por lo tanto lo que propones a mí me parece totalmente factible.

El tema del scripting de Autorol es que se enganchará a la partida y cada director decidirá donde funciona y a que afecta, pero en teoría todo lo que suceda en una partida se podrá almacenar/controlar dentro del script, por lo que podría haber un script de hojas de personaje unido a un script de 'pantalla del director' que se encargase de esas cosas. Lo único que me da miedo es el tema de controlar la carga para que un scripter novato (o malicioso) no se emocione y tire abajo Umbría al meter una gamba en un loop (por ejemplo, por eso los loops requieren más tiempo de desarrollo). Pero a priori la idea del Autorol Natilla es precisamente esa: aliviar las partes coñazo/mecánicas de la partida. 

19/11/2016, 11:28

Muy buena idea. Personalmente creo que el master y los jugadores lo único que deberían es tomar decisiones, para el resto de cosas cuanto más automatizado mejor, por ejemplo porque esperar a que los jugadores tiren iniciativas, etc si lo único que pasa es que se pierde tiempo, yo las tiro directamente, pero como bien dice serendib es un poco palo ir revisando cada una de las fichas, así que cualquier cosa que automatice todo esto es un gran avance.

Y si hay trafico de scripts, para no tener que ir picando cada uno lo mismo pues ideal. Ya me veo un mercado negro incipiente... XD.

22/11/2016, 11:26

Y si hay trafico de scripts, para no tener que ir picando cada uno lo mismo pues ideal. Ya me veo un mercado negro incipiente... XD.

Lo mejor de todo es que como está pensado para compartir, ni si quiera hace falta un mercado negro! :D (con el de sangre nos basta)

Este hilo tiene más de 6 meses, lo usuarios novatos no pueden reabrir hilos antiguos.