Ich gehe sehr ins Detail, um eine magische Sprache für ein Spielsystem zu entwerfen. Die Welt ist eine klassische High-Fantasy-Welt mit den meisten Tropen, die man von D&D der alten Schule erwarten könnte. Das magische System ist insofern einzigartig, als ich es um Effekte, Funktionen und Operatoren herum entwerfe. Ich habe eine meiner Meinung nach ziemlich umfassende Liste von Effekten entwickelt, die auf verschiedene Weise kombiniert werden können, um die meisten der klassischen "Zaubersprüche" zu erzeugen, die in der klassischen Fantasy-Literatur existieren.
Wirkungen sind mit Energiekosten verbunden (was auf ein Punktesystem hinausläuft, das für diese Frage nicht allzu relevant ist). Ein „Zauber“ besteht aus einem oder mehreren „Effekten“, die durch Funktionen kombiniert werden können. Es gibt keine Obergrenze dafür, wie viele Effekte in einem "Zauber" kombiniert werden können, aber es sollte exponentiell steigende Punktkosten geben, wenn mehr und mehr Effekte zu einem einzelnen Zauber hinzugefügt werden.
Meine Frage ist: Welche Operatoren und Funktionen benötige ich, um eine flexible "Sprache" zu erreichen, mit der viele verschiedene Arten von Zaubersprüchen mit (derzeit) 26 "Effekten" entwickelt werden können? Außerdem muss ich sicherstellen, dass die Punktkosten nach 4-5 "Effekten" unerschwinglich werden, und ich denke, ich muss der Funktion Kosten zuordnen, die sich um ein Vielfaches der Anzahl der Funktionen erhöhen würden.
Ich habe mich mit symbolischer Logik befasst, aber es liegt ein großer Fokus auf Wahr/Falsch-Aussagen, was nicht unbedingt das ist, wonach ich suche. Ich denke an etwas mehr im Sinne einer sehr einfachen Programmiersprache. Ich möchte nichts Massives und Kompliziertes, also was wäre die minimale Anzahl und Art von Funktionen, um nützlich und flexibel zu sein?
[Bearbeiten] Als Antwort auf Fragen: Ich suche nach einigen bestimmten Dingen in Bezug auf Operatoren. Ich brauche die Fähigkeit, einem "Zauber" einen Effekt "hinzuzufügen". Ich brauche die Fähigkeit zu bestimmen, dass ein Effekt vor einem anderen kommt. Bedingtes Verhalten wäre eine gute Sache. "Wenn dies, dann X, wenn etwas anderes, dann Y". Ich möchte die Anzahl der bedingten Elemente, die in einen einzelnen Zauber eingebettet sind, begrenzen, weil ich nicht möchte, dass jemand in der Lage ist, einfach den „Das macht alles“-Zauber zu treffen, der im Grunde alle Effekte eingebettet hat, also sollte das Einbetten von Bedingungen etwas kosten. Ich möchte die Möglichkeit haben, einen Effekt zu verzögern: "Warte X Mal, bevor du Z machst". Ich denke, es gibt noch einige andere Grundlagen, die ich nur der Vollständigkeit halber einbeziehen sollte.
[Bearbeiten II] Als Antwort auf Kommentare. Hier ist, was ich mir mehr oder weniger als Anwendungsfall vorstelle: „Ich bin ein cooler, abenteuerlustiger Zauberertyp in einem Online-Spiel, ich habe diese Schriftrolle gefunden, auf der der Zauber „Brennende Finger der Flamme“ steht, zu der ich gehen werde meine Zauberwerkstatt und bearbeite sie, um einen benutzerdefinierten Zauber zu erstellen. Ich werde die "brennende" Komponente entfernen, indem ich einen visuellen Skript-Editor in der Benutzeroberfläche verwende. An ihrer Stelle füge ich einen "kalten" Effekt ein, füge einen hinzu Timer-Funktion, um den Effekt um 3 Sekunden zu verzögern und einen „Dunkelheits"-Effekt hinzuzufügen, der sofort eintritt. Jetzt verursacht mein benutzerdefinierter Zauber Dunkelheit und lässt dann einen kalten Frosteffekt auf ein Ziel fallen, wenn er gewirkt wird. Ich werde ihn in „Kälte Dark Hands" und speichere es in einer Schriftrolle.
Als Referenz meine Liste von "Effekten" (diese stellen jeweils ein "Spektrum" von sehr gering bis sehr groß dar, wobei die Punktkosten auf dieser Grundlage berechnet werden):
1. Kraft
2. Flamme
3. Kalt
4. Dunkelheit
5.Wetter ändern
6.Wasser
7. Energiebolzen
8.Blitz
9. Verwandle den Caster
10.Ziel transformieren
11. Unsichtbarkeit
12. Größe ändern
13. Ziel schweben lassen
14.Drain Life
15.Flug
16.Beschwören
17.Teleportieren
18.Fluch/Segen
19.Änderung
20.Illusion
21.Zeug heraufbeschwören
Bewusstseinskontrolle
Kraftfeld
Überlieferung/Objekt gelesen
Magie zerstreuen
Licht
Ich bin mir nicht ganz sicher, was Sie wollen, aber wenn ich es mir richtig vorgestellt habe, könnte eine Psudo-Codierungsinterpretation so aussehen:
Funktionen nehmen die Effekte und andere Eigenschaften auf, so dass Sie eine Schriftrolle haben könnten, die in einem einfachen Wort sagt:
burning fingers of flame: fingers(fire, burning,0,40)
Wo Sie für jeden Körperteil eine Funktion haben könnten und eine verallgemeinerte Form wie folgt aussehen könnte:Scroll Title: object( Primary_effect, degree_of_primary_effect, primary_timing, secondary_effect, degree_of_secondary_effect, secondary_timing ...,mana_level)
Diese Funktion könnte auch andere Merkmale eines Effekts als Timing, Form, Projektil, Statik, Rune usw. übernehmen
Die Details der Funktion würden wie folgt aussehen:
object( Primary_effect, degree_of_primary_effect, primary_timing, secondary_effect, degree_of_secondary_effect, secondary_timing ...,mana_level): time = 0 whilst(mana_level>0):
if time>=primary_timing: if mana_level-Effect(primary_effect,degree_of_primary_effect).ManaCost >0: object.Set.Effect(primary_effect,degree_of_primary_effect) mana_level=mana_level-Effect(primary_effect,degree_of_primary_effect).ManaCost if time>=secondary_timing: if mana_level-Effect(secondary_effect,degree_of_secondary_effect).ManaCost > 0: object->SetEffect(secondary_effect,degree_of_secondary_effect) mana_level=mana_level-Effect(secondary_effect,degree_of_secondary_effect).ManaCost time+=1
Das gibt Ihnen jetzt nicht alle Details darüber, wie Ihre Funktion diese Aufgabe ausführt, aber es könnte Ihnen die Freiheit geben, die Funktion zu schreiben:
Hand( cold, freezing, 3, Darkness, gloom,0 ,200):
Was, wenn man den obigen allgemeinen Code durchgeht, Folgendes bedeuten würde:
Überprüfe, ob das ihm gegebene Mana nicht auf 0 gefallen ist (in diesem Fall möchte unsere Schriftrolle 200 Mana erhalten) und überprüfe, was erforderlich ist, bis das gesamte Mana aufgebraucht ist.
Überprüfen Sie, ob wir unsere primäre Zeit erreicht haben (Zeit = 3 für unseren Fall, also gehen wir in den ersten drei Sekunden weiter).
Weiter kommen wir zum sekundären Timing (0 in unserem Fall, also geben wir die if-Anweisung ein)
Wir durchlaufen die Schleife, wobei die Zeit im Laufe der Zeit um eine Sekunde zunimmt und jeder Effekt nur so lange läuft, wie das von uns bereitgestellte Mana ausreicht.
Keine Ahnung, ob das das ist, wonach Sie suchen, aber ich habe es trotzdem genossen, es zu schreiben - hoffe es hilft trotzdem.
Um Munchkin-Verhalten zu entmutigen, müssen Sie die Kosten durch Kombinationen ausgleichen. Wenn Sie dies nicht tun, erhalten Sie einige ziemlich kreative Kombinationen von scheinbar kleinen Effekten, um einen Schlag zu erzielen, der relativ wenig kostet. Gleichzeitig werden die stärkeren Kombos selten verwendet und dämpfen den Spielverlauf.
Sie möchten eine Formel verwenden, die auf einer multiplikativen Ebene mit den Basiskosten steigt, je größer die zu verwendenden sind.
Also, um etwas Pseudo-Code für Sie zu schreiben ....
Combo-Kosten-Minimum wäre ....
X, X+A, X+B, X+C......
dann könnten die kosten berechnet werden....
E = Wirkung
Wert = E1(Kosten) * E2(Kosten) wenn Wert < x Wert = x
usw.
Sie könnten also Basiskosten eines einzelnen Effekts bilden, die Kosten des Effekts.
Sagen wir der Argumentation halber, Hitze kostet 2 und Kälte kostet zwei, und durch Multiplizieren ihrer Kosten erhalten Sie vier, aber Sie legen Basiskosten von 6 fest, sodass die Kombination sechs kostet, wobei Licht Kosten hat von 3 und Hitze mit Kosten von drei wären AUCH sechs. Licht mit Kosten von drei und Dunkel mit Kosten von drei wären neun, nicht vom Minimum betroffen.
Sie können die Formel von dort aus optimieren.
Haben Sie jemals das GURPS Magic Sourcebook gelesen? Es enthält eine verbale Sprache für Magie, die im Grunde erfordert, dass jeder Zauberspruch ein Substantiv und ein Verb enthält, wie ein Zauberspruch, mit Fertigkeitspunkten in den Substantiven, die Sie kennen, und den Verben, die Sie kennen. Es enthält ein paar Beispiele, ist aber als optionale Regel aufgeführt, sodass es im Regelbuch nur etwa eine halbe Seite Text enthält, wenn das Gedächtnis reicht.
Aber dieser Rahmen funktioniert vielleicht besser als eine Liste aller möglichen Zaubersprüche. Erstellen Sie eine einfache Grammatik und lassen Sie die Spieler dann ihre Zauberlisten im Mad Libs-Stil auswählen.
Ein Zauber hat also vielleicht eine Struktur wie Adjektiv Nomen Verb .
Dann könnte der SC Zaubersprüche haben, die diese Struktur verwenden wie:
usw.
Aber ich würde mich eher auf die Regeln der Grammatik konzentrieren als auf eine vordefinierte Liste aller möglichen Wörter / Zaubersprüche. Dadurch haben Ihre Spieler mehr Kreativität und die Magie selbst wird einzigartiger.
Nocken
Lio Elbammalf
rangerike1363
Jeff Zeitlin
Cort Ammon
Cort Ammon
AlexP
IronWaffleMan
JBiggs
JBiggs
JBiggs
JBiggs
Cort Ammon
Anketam
Schriftsteller von Geschichten