Computertechnik Würfelfunktionen

Skar

Dr. Spiele
Teammitglied
#StandWithUkraine
Registriert
16. Januar 2003
Beiträge
69.713
Ich habe in Erinnerung, dass Hoffi schon mal erwähnt hat, dass er am Würfelbot für das neue Forum programmiert. Den Post finde ich aber nicht mehr.

Ihr könnt jedenfalls dabei helfen die gängigen Würfelfunktionen zu sammeln und dazu die entsprechenden Variablen für die späteren Formeln zu sammeln.

Also zum Beispiel nWoD: Pool an W10 würfeln, 8en und 9en = 1 Erfolg, 10en gleich 2 Erfolge Erfolge addieren.

Variabeln für die späteren Formeln wären hier als schon mal:
Anzahl Würfel - n
Würfelart - Wx
Schwierigkeitsgrad - SG
Ermittlung - Rollover
Ergebnis - Erfolge zählen

(oder so ähnlich)

Ziel ist es halt mit möglichst wenig Variablen den Grundstock für möglichst viele (gängige) Würfelformeln bilden zu können - und die hier aufzustellen.

Ich denke mal Mathematiker und Programmierer sind hier klar im Vorteil. :)
 
AW: Würfelfunktionen

- Würfle n Würfel [dX, dF, dX+y]

Die folgenden Operationen sollten in verschiedenen Reihenfolgen durchführbar sein.
- Manipuliere: Wähle die x höchsten/niedrigsten Würfel aus
- Manipuliere: Explodiere Würfel, die [Eigenschaft] erfüllen, also z.B. <7, >4, =8.
- Manipuliere: Generiere einen zusätzlichen Würfel, für jeden Würfel der [Eigenschaft] erfüllt.

Lies entweder aus dem gesamten Wurf oder aus den ausgewählten Ergebnissen aus:
- Return: Einzelne Würfel in Reihenfolge
- Return: Würfel sortiert
- Return: Zähle Würfel, die [Eigenschaft] erfüllen
- Return: Summiere die Augenzahlen

Es sollte möglich sein, verschiedene Returns aus einem Wurf zu ziehen und diese via Grundrechenarten weiter zu beharken. Werden mehrere Returns ausgegeben, sollte die Möglichkeit bestehen, diese zu beschriften.

Beispiel Reign:

Würfle n d10.
Return[=1] "x1, "
Return[=2] "x2, "
Return[=3] "x3, "
...
Return[=10] "x10"
 
AW: Würfelfunktionen

Noch mal ein etwas durchdachterer Vorschlag bzw. in einer vernünftigen Syntax.

Grundlage ist eine Prozedur der Form

[roll][head] ...[/head] ... [/roll].

Sie hat also einen Kopfbereich und einen Bodybereich. Letzterer wird nicht extra markiert. Alles was nicht in HEAD steht, gehört zum Body. Angaben vor HEAD werden komplett ignoriert. Das hat den Vorteil, dass ein Nutzer, der nur schnell was würfeln lassen will, nicht ganz so tief einsteigen muss.

Alles im Bodybereich wird irgendwie ausgegeben. HEAD dient dazu um vorab Variablen zu definieren. Die Sprache kennt nur einen Typ von Variablen: Arrays von hinreichender Länge. In den Einträgen können entweder Zahlen oder Strings stehen. Letztere stehen in Anführungszeichen. Der Ausdruck x[5] steht für den fünften Eintrag von Array x.

3d6 erzeugt also ein Array, dass die Ergebnisse dreier W6 enthält. Die Reihenfolge ist unsortiert.

[roll]3d6[/roll] gibt unsortierte Ergebnisse von 3W6 aus.

[roll][head]x=3d6[/head]x[/roll] belegt zunächst eine Variable x mit einer solchen Belegung und gibt sie dann aus.


Die folgenden Befehle funktionieren nur, wenn das Array aus Zahlen besteht.
sort() - Sortiert das Array von der kleinsten Zahl zur größten
sortdown() - Macht es umgekehrt
sum() - Summiert die Einträge
count(X,[Eigenschaft]) - Zählt wie viele Einträge in X die [Eigenschaft] erfüllen, z.B. count(X,>4)
nhi(X,n) - Behält die n höchsten Einträge aus dem Array und streicht die übrigen.
nlo(X,n) - Behält die n niedrigsten Einträge aus dem Array und streicht die übrigen.

expand(X,[Eigenschaft],Y,repeat=z) - Dieser Befehl prüft die Einträge von X auf die [Eigenschaft]. Für jeden passenden Eintrag, wird hinten Y an das Array angefügt, z.B.

expand(X,=10,d10,repeat=20) , um den Würfelmechanismus der nWoD darzustellen.

Der Eintrag repeat sollte optional sein und eine Default-Belegung haben. Er zeigt an, ob das aus der Expansion erzeugte Array wiederum auf die [Eigenschaft] überprüft werden soll und wie oft das passiert.


explode(X,[Eigenschaft],Y,repeat=z) - Dieser Befehl ist - ganz überraschend - für explodierende Würfel. Er prüft die Einträge von X auf Eigenschaft. An jeder Stelle, welche die Bedingung erfüllt, wird sum(Y) hinzuaddiert.


Folgende Befehle sollten für beliebige Arrays funktionieren.

+ ist ein Konkatenationsoperator. Er hängt zwei Arrays aneinander. Also:
3d6+2d4 produziert ein Array mit fünf Einträgen, in den ersten stehen je ein 1W6, dann kommt zwei mal je ein W4.
3d6+6 erzeugt ein Array, das in den ersten drei Einträgen je 1W6 stehen hat und dann im vierten Eintrag eine 6.

if([Bedingung],[Prozedur],[Sonst]) - Der erklärt sich.


Dann fehlen noch merkwürdige Würfel.

- multipliziert alle Einträge in einem Array mit (-1)

Der m-Operator (Modifikationsoperator) verknüpft zwei Arrays: XmY. Er addiert zu jedem Eintrag von X den Wert sum(Y) hinzu. Also 2d10m2 erzeugt ein Array mit zwei Zahlen zwischen 3 und 12. d3m-2 ist ein Fudge-Würfel. (Dies entspricht einem einfachen explode ohne Bedingung.)


Ein Beispiel für eine Zufallstabelle.

[roll]
[head]
n=2d6;
x=1d3;
if(x=1,g="Räuber");
if(x=2,g="Orks");
if(x=3,g="Goblins"); [/head]
n " " g[/roll]


Damit kann man also schon eine ganze Menge Dinge tun. Man könnte sogar eine Fudge-Leiter implementieren, die um 4dF rauf und runtergeschraubt wird.

Mir fallen nur zwei Spiele ein, die nicht gehen.
Weitere bzw. allgemeine Schleifen bräuchte man für Patzer bei Ars Magica.
Kongruent-Modulo-Abfragen bräuchte man Confrontation.

Weiterhin ein Mechanismus:
Ungebrauchte Würfel zählen.


Natürlich wird das erst richtig nützlich, wenn gängige Verfahren weiter abgekürzt werden.

Es wäre also angenehm nwod(5) zu schreiben statt count(expand(5d10,=10,d10,repeat=20),>=8)

Das ist dann vor allem eine Organisationfrage. Wer schreibt sowas? Und wie kommt es ins System?
 
AW: Würfelfunktionen

Sowas ist schon geschrieben, aber anderes, als du es hier angegeben hast. Die Frage zielt wirklich nur auf das ab was Skar geschrieben hat:

Die gängigsten Würfelsystem aus Rollenspielen finden und hier aufschreiben. Wir bauen die dann schon ins System ein. Und tippen muss man das bald nicht mehr, dafür wird es eine Button geben.
 
AW: Würfelfunktionen

Sowas ist schon geschrieben, aber anderes, als du es hier angegeben hast.

Gut, OK. Dann könnt ihr das hier ja als Anregung aufnehmen.

Damit kann man meines Erachtens bis auf die zwei, drei Ausnahmen alles erschlagen, was bis dato mit Würfel getan wurde. Insofern sag ich mal, habe ich Skars Frage perfekt beantwortet.

Insofern: Gern geschehen. :)
 
AW: Würfelfunktionen

Wenn du jetzt noch Rollenspielsystem Namen zu deiner Liste packst, ist es perferkt^^

In unserem System werden die Leute ihr Rollenspielsystem per Namen raussuchen können (also etwa nWoD - und man bekommt 10 seitige Würfel, oder DSA - man bekommt 3 20seiter/ 1-x Sechser, etc) Das ist für die Benutzer einfacher, als wenn sie sich aus einer Liste von Möglichkeiten diejenige raussuchen müssen, die für ihre Zwecke dienlich ist.

Da sind wir aber gerade dabei die System und deren Mechanismen zu sammeln, wobei wir natürlich nicht alle reinpacken, die je da waren, sondern die, die hier auch Verwendung finden.
 
AW: Würfelfunktionen

Dann schreibt schon mal hin, welche ihr habt. Ich schau dann gerne nach, was ergänzt werden könnte.
 
AW: Würfelfunktionen

Shadowrun3 : xW6-Pool (explodierend) gegen Mindestwurf y
Shadowrun4 : xW6-Pool gegen 5, gelegentlich expandierend
Earthdawn : Abhängig vom sog. Step-Wert eine Summe explodierender Würfel
Diverse: d100
Diverse: Summe aus xW6 und überwürfeln
Silhouette : W6 explodierend, höchster zählt
Agone : W10 explodiert bei 10, "implodiert" bei 1, gegen Mindestwurf
Legends of the Wulin : Würfle xW10. Wandle Päsche in zweistellige Zahl um: Zehnerstelle gleich Breite, Einerstelle gleich Augenzahl. Nullen auf dem W10 zählen 0.
7th Sea/L5R : Es werdern xW10 gewürfelt (explodierend), danach werden die höchsten y ausgewählt und addiert
Fate-Diaspora: +W6-W6
Savage Worlds : Einzelne Würfel ggf. mit Wildcard-Würfel dazu über Mindestwurf
Exalted : Wie nWoD nur 10 zählen doppelt und gegen 7
Reign : Man sammle Päsche aus xW10
Gurps : 3W6 unterwürfeln, 1-2 kritischer Erfolg, 17-18 kritischer Fehler, bei Wert hohen Werten werden unten weitere Zahlen kritische Erfolge
 
AW: Würfelfunktionen

Wenn die höchstmögliche Augenzahl des Würfels geworfen wird, dann würfelt man nach.
 
AW: Würfelfunktionen

das heißt, man kann mehr als 1 Erfolg mit einem Würfel haben? ähnlich Mensch ärgere dich nicht? wo man im prinzip in Runde 1 gewinnen kann?:D
 
AW: Würfelfunktionen

Kommt auf System an. Wahlweise ist der weitergeworfene Würfel ein weiterer Erfolg oder er wird auf die Augenzahl addiert (was bei Systemen eine Rolle spielt wo es wichtig ist wie weit man über dem MW ist)
 
AW: Würfelfunktionen

Rein von der Rrogrammierung her wäre es nett, wenn man bestimmte "Presets" hat. Also zum Beispiel:

[WOD]10[/WOD] Würfelpool von 10 W10 (WoD System halt)
[RollAndKeep]6[/RollAndKeep] Würfelpool von 6 Würfeln im Roll and Keep System (L5R)

Trotzdem sollte man immer noch die bisherige, ganz normale Würfelfunktion beinhalten, die es ermöglicht x y-Seitige Würfel zu werfen.
 
AW: Würfelfunktionen

Es wird auf jeden kein BB-Code mehr sein. Also von Hand schreiben ist nicht mehr, das kann ich schon mal sagen. ;)

Und ja, diese Presets wird es auch geben.

Wer es sich ansehen will, kann am Open Beta Test teilnehmen. Eine PN ans Team reicht. Avber fix, denn morgen Abend ist das Forum hier dicht.
 
AW: Würfelfunktionen

Wird es denn auch eine Würfelfunktion für das neue Warhammer und die dortigen exotischen Würfelzusammenstellungen geben?
 
Zurück
Oben Unten