1w6 - Ein Würfel System - Einfach saubere, freie Rollenspiel-Regeln
Ich habe die letzten Tage endlich das EWS-Modul neugeschrieben - v.a. mein Teil am Code war doch sehr chaotisch. Es ist jetzt deutlich schlanker und einfacher zu lesen. Um zu testen, ob es bereits jetzt genügt, um ein Rollenspiel zu implementieren, habe ich einen kleinen grafischen Schlachtfeldgenerator geschrieben - naja, zumindest pseudographisch, aber schaut selbst :)
Wenn ihr es genauer sehen wollt, inklusive Einheitenzähler (die beiden Zahlen in der Mitte unten) und den durchschnittlichen Erfahrungspunkten (in Strichen pro Einheit), schaut euch doch den kleinen Screencast dazu an (Direktdownload, webm). Darin sieht man knapp 2400 Kämpfer sich gegenseitig beharken und bekommt sogar einen Endkampf der Schlacht geboten, bei dem drei heldenhafte Blaue eine weit größere Streitmacht der Roten in die Knie zwingen und am Ende durch das Opfer des einen schwergerüsteten den Sieg davontragen :)
Es gibt im Skript 3 Arten von Kämpfern: Schwertmeister mit hohen Fertigkeiten (S), Gerüstete (A) und schwer bewaffnete (K). Jedesmal, wenn sie ihren Gegner treffen, gewinnen sie Erfahrung hinzu und werden automatisch gesteigert - inklusive automatischer Spezialisierung.
Das Skript verwendet dafür das Fokusmodul Kampf inklusive Überzahlregel (3 Punkte Bonus pro Freund um den Gegner, 3 Punkte Malus pro zusätzlichem Gegner um dich herum), und wie ihr seht, funktioniert es auch für größere Schlachten ganz gut :)
Es ist auf bitbucket.org/ArneBab/d6 unter der GPL verfügbar.
Um es zu verwenden, müsst ihr es nur installieren, dann könnt ihr 1w6-Charaktere in Python-code nutzen:
easy_install d6
python3
from d6.char import Char, _examplechar, _exampleprofile
char = Char()
help(char)
Charaktere werden mit einer source-string und einem profile-string erzeugt. Source sind die Startwerte des Chars. Profile gibt Zusatzwerte für spätere automatische Steigerungen. Profile ist damit effektiv das Steigerungsprofil des Chars. Die Zahlen im Profile geben das Gewicht für die Steigerung an.
d6.charbase._examplechar
:
desc:
name: Tsiku
quote: Me eat you hat.
short: Strange traveller.
description: A strange traveller with hazel-colored eyes
and fur.
extras: {}
stats:
attributes:
creative: [3, 0] # the first value is always the cost
stubborn: [3, 0] # cost, mod
skills:
surprise: [3, "", creative] # cost, base, atts
startle: [3, surprise, creative]
special: {}
battle:
wound threshold: stubborn
d6.charbase._exampleprofile
:
attributes:
witty: 3
pure: 1
skills:
hide: 1
special:
rich: 1
PS: @Achim: Ich hoffe es gefällt dir!
Anhang | Größe |
---|---|
asciibattle-screenshot.png | 14.1 KB |
asciibattle-screenshot1.png | 13.32 KB |
asciibattle-screenshot3.png | 6.22 KB |
asciibattle-screenshot4.png | 2.7 KB |
asciibattle-screenshot5.png | 5.1 KB |
Sehr schön
Ja, das sieht doch sehr lustig aus. Wie sehr da noch praktischer Nutzen für das Rollenspiel ist, war ja schon beim ursprünglichen Schlachtfeld nicht so sicher. Aber allemal hilfreich für eine schöne Beschreibung des Kampfgeschehens.
Du hast sicher einen Parameter um die Geschwindigkeit zu regulieren, oder?
Ich habe minimalistisch
Ich habe absolut minimalistisch gearbeitet, daher: Nein, habe ich nicht ;)
Sollte aber einfach sein: ein paar sleep(1/fps - dt) und t2 = time(); dt = t2-t1; t1 = t2; einfügen.
Und es freut mich, dass es dir gefällt!
Der Nutzen für’s Rollenspiel ist meiner Ansicht bei der Version hier eher im Regelbereich zu sehen: Wir können sehr gut abschätzen, wie sich das System in riesigen Größenordnungen verhält.
Vielleicht wäre es möglich, in einem kleinen Abschnitt der Schlacht zu spielen und alles außenrum vom Programm machen zu lassen.
Durch die einfache Struktur haben wir hier übrigens sogar Schlachtreihen - weil sie gar nicht erst versucht, von dem Ascii-Schlachtfeld zu abstrahieren. Motivation fehlt allerdings.
Kommentar hinzufügen