Autor Thema: [Foundry] Formale Beschreibung der Würfelformeln gesucht  (Gelesen 849 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline sma

  • Hero
  • *****
  • a.k.a. eibaan
  • Beiträge: 1.563
  • Geschlecht: Männlich
  • Username: sma
Oberflächliches Suchen hat mir kein Ergebnis gebracht. Weiß jemand zufällig, ob die Formeln, die man bei Foundry zum Würfeln verwenden kann, irgendwo formal als (E)BNF definiert sind?

Ich habe hier mit der Dokumentation als Beispiel einen Ausschnitt formalisiert:

formula = expression [comment].

expression = term {("+" | "-") term}.
term = factor {("*" | "/") factor}.
factor = dice | constant.

dice = [number] "d" [faces] [label].
number = constant.
faces = constant.
label = "[" {any} "]"

constant = digit {digit}.
digit = "0" | ... | "9".

comment = "#" {any}.

Das ganze ist aber komplizierter, weil z.B. `number` und `faces` auch wieder Würfelausdrücke in Klammern sein können und wohl komplette Ausdrücke mit Punkt- und Strichrechnung. Ob wohl auch modulo als Operation neben Division zugelassen ist? Die Dokumentation sagt außerdem, dass alles von JavaScripts `Math`-Objekt als Funktionen zugelassen ist. Ob sich da jemand Gedanken gemacht hat, wie die Zahlen `NaN` und `Infinity` mit dem Rest zusammenspielen? Oder das man dann ja auch `Math.random()` benutzen können müsste?

Ein weiteres Thema sind Modifikator wie "reroll", "explode", "keep", usw.

Schließlich kann man noch einmal mit `{,}` einzelne Ausdrücke gruppieren und auch hier wieder Modifikatoren anwenden.

Und mit `@name` kann man auch Variablen in die Formeln einbauen.

PS: Wenn jemand statt Foundry eine bessere Alternative kennt, bin ich auch interessiert. Ich möchte mich idealerweise an einen Standard halten.

Offline Bombshell

  • Zonen-Stefan
  • Helfer
  • Legend
  • ******
  • Beiträge: 5.667
  • Geschlecht: Männlich
  • Username: Bombshell
Re: [Foundry] Formale Beschreibung der Würfelformeln gesucht
« Antwort #1 am: 16.10.2021 | 19:05 »
Foundry hat sich da bei Roll20 bedient und ich denke nicht, dass sich jemand die Mühe einer formalen Beschreibung gemacht hat. Die beste Methode das ganze zu verstehen ist den Source-Code anzusehen und in einer Foundry-Instanz zu testen. Es gibt da auch Unterschiede was wo erlaubt ist und manche Dinge sind auch gar nicht spezifiziert oder werden nicht richtig behandelt, bspw. kann der Foundry-Parser nicht mit mathematischen Zeichen in labels umgehen, weil er einen regulären Ausdruck über den gesamten Ausdruck jagt. (Zumindest war das so als ich mir das letzte mal angesehen habe.)

P.S: Ich habe mal einen Lexer in Go für diese Dice-Terms geschrieben und bin der Meinung man versucht da zu Viel in einer kruden Notation unterzubringen, die sich eigentlich keiner merken kann. Da wäre imho ein paar sinnvoll benannte Funktionen besser und diese wäre auch einfacher zu parsen/lexen.
« Letzte Änderung: 16.10.2021 | 19:21 von Bombshell »
Kurze klare Worte

Offline sma

  • Hero
  • *****
  • a.k.a. eibaan
  • Beiträge: 1.563
  • Geschlecht: Männlich
  • Username: sma
Re: [Foundry] Formale Beschreibung der Würfelformeln gesucht
« Antwort #2 am: 18.10.2021 | 10:48 »
Foundry hat sich da bei Roll20 bedient und ich denke nicht, dass sich jemand die Mühe einer formalen Beschreibung gemacht hat.
Tja… dabei sind das doch auch alles Entwickler, die das bauen.

Zitat
P.S: Ich habe mal einen Lexer in Go für diese Dice-Terms geschrieben und bin der Meinung man versucht da zu Viel in einer kruden Notation unterzubringen, die sich eigentlich keiner merken kann. Da wäre imho ein paar sinnvoll benannte Funktionen besser und diese wäre auch einfacher zu parsen/lexen.
Sowas war natürlich auch mein Hintergedanke und einfach im Quelltext von Foundry abgucken wollte ich jetzt auch nicht. Also mache ich's mir lieber selbst :) Dann könnte ich z.B. auch "d{0,0,1,1,1,2}" erlauben. Ich muss noch die Dice Pools mit "{,}" verstehen, die zwar dokumentiert, aber offenbar nicht mehr als eigene Klasse repräsentiert werden und damit ziemlich unterdokumentiert sind. Hier ist bis dahin mein "Work in Progess".