Algorithmus zur dynamischen Berechnung eines Niveaus basierend auf Erfahrungspunkten? [geschlossen]

41

Einer der Probleme, die ich in der Spieleentwicklung immer hatte, ist die Entscheidung, wie man Erfahrungspunkte einführt, die dem Erreichen eines Levels zugeschrieben werden. In vielen der von mir gespielten Spiele scheint es kein Muster zu geben, ein Level zu erreichen. Daher gehe ich davon aus, dass es eine statische Wörterbuchtabelle gibt, die Erfahrungspunkte im Vergleich zum Level enthält. z.B

Experience   Level
0            1
100          2
175          3
280          4
800          5

... Es gibt keinen Reim oder Grund, warum 280 Punkte gleich Level 4 sind, es ist einfach so.

Ich bin nicht sicher, wie diese Ebenen entschieden werden, aber es wäre sicherlich nicht dynamisch. Ich habe auch über die Möglichkeit exponentieller Ebenen nachgedacht, um keine separate Nachschlagetabelle führen zu müssen, z

Experience   Level
0            1
100          2
200          3
400          4
800          5
1600         6
3200         7
6400         8

... aber das scheint, als würde es ziemlich schnell außer Kontrolle geraten, da die Gegner im Spiel in den oberen Levels eine unglaubliche Menge an Erfahrung für das Level bereitstellen müssten - und das wäre zu schwer zu kontrollieren. Das Nivellieren würde zu einer unmöglichen Aufgabe.

Hat jemand irgendwelche Hinweise oder Methoden , die sie verwenden , um zu entscheiden , wie man Ebene ein Zeichen auf Erfahrung? Ich möchte beim Leveln fair sein und den Spielern einen Schritt voraus sein, um nicht ständig neue Erfahrungen / Level-Lookups hinzufügen zu müssen.

George
quelle
4
Nein, es ist nur ein langsameres Exponential (multipliziert mit 10 pro ~ 3,3 Level oder 100 pro ~ 6,6 Level anstelle von jedem Level). Geometrisch wäre wie 1 [00], 4, 9, 25, 36 usw. Sogar 1100 1210 1331 1464 ist eine Exponentialserie, multipliziert mit 1,1.
Random832
1
@Stephen: @ Random832 ist korrekt. Sowohl "exponentielles" als auch "geometrisches" Wachstum beziehen sich auf ein konstantes Verhältnis zwischen aufeinanderfolgenden / äquidistanten Begriffen (was bedeutet, dass die Wachstumsrate proportional zum aktuellen Wert ist - im Kalkül wird dies durch das Aussprechen von angegeben) Exponentialfunktion hat f'(x) = c*f(x)) . Der Begriff "geometrisch" wird verwendet, wenn die Domäne (Eingabe) diskret ist (z. B. eine Ganzzahl). Die Formel für das Beispiel von @ George über Ebene 1 Experience = 100 * 2^(Level-2)ist exponentiell. Die Formel für Ihren Fortschritt über Stufe 1 ist Experience = 100^(Level-1)ebenfalls exponentiell.
BlueRaja - Danny Pflughoeft

Antworten:

36

Es ist durchaus üblich, eine quadratische Beziehung zu verwenden.

level = constant * sqrt(XP)

Oder das ungefähre Äquivalent einer linear ansteigenden Niveaulücke.

Level   XP      Difference
1       0       -
2       100     100
3       300     200
4       600     300
5       1000    400

Diese Systeme funktionieren ziemlich gut, wenn die XP-Verstärkung ungefähr linear ist. Wenn ein Charakter mit hohem Level XP schneller verdienen kann als ein Charakter mit niedrigem Level, dann ist dies nicht das richtige System.

aaaaaaaaaaa
quelle
3
Ich vermute, dass für Spieler vom Typ Achiever im Verlauf ihres Charakters ein höherer XP-Gewinn zu erwarten ist. Ich finde Ihre Lösung interessant, und ich würde sie wahrscheinlich nur geringfügig anpassen, um Unterschiede wie 107-214-321-428 zu erzielen. Auf diese Weise wird verhindert, dass der Spieler nur runde Zahlen sieht, und auch in der Hoffnung, dass dies dazu beitragen könnte, dass sich das Spiel anfühlt nur ein bisschen mehr "organisch" (ich versuche ein besseres Wort zu finden, aber "organisch" ist alles, was ich im Moment habe).
Randolf Richardson
1
+1 das ist genau das, was ich in der Vergangenheit getan haben, funktioniert super
BlueRaja - Danny Pflughoeft
3
Gleichungen für den linear ansteigenden Pegelabstand. level = (sqrt (100 (2erfahrung + 25)) + 50) / 100 und experience = (level ^ 2 + level) / 2 * 100- (level * 100)
C9HDN
3
Tolle Antwort und ich mag die Kurve, die sich daraus ergibt. Am Ende habe ich eine Konstante von 0,04 verwendet. Für diejenigen, die sich fragen, ist die Umkehrung dieser Formel zur Berechnung für XP: XP = Level ^ 2 / Konstante.
BradH
3
@BradH Eigentlich scheint es XP = (level / constant) ^ 2 zu sein. In PHP kann dies dargestellt werden als XP = pow (Level / Konstante, 2) oder in späteren Versionen (Level / Konstante) ** 2
Taylor Dondich
17

Logarithmische Funktionen sind wahrscheinlich hilfreich, da sie den Anstieg verlangsamen können, wenn mehr Erfahrungspunkte gesammelt werden. Hier sind zwei Webseiten, die erklären, wie diese funktionieren:

  Diagramme logarithmischer Funktionen
  http://www.analyzemath.com/Graphing/GraphLogarithmicFunction.html

  Einführung in die grafische Darstellung logarithmischer Funktionen
  http://www.purplemath.com/modules/graphlog.htm

So sieht es in einem Diagramm aus, das hoffentlich Ihren Anforderungen entspricht:

Bildbeschreibung hier eingeben

Randolf Richardson
quelle
1
@George Indem Sie mit den Koeffizienten herumspielen, können Sie auf einfache Weise eine logarithmische Funktion verwenden, um das Level Ihres Spielers zu skalieren. +1 für die Verwendung von Mathe
Stephen
2
Beachten Sie, dass dies eine Implementierung der exponentiellen XP-Anforderung ist. level = log(XP) <=> XP = e^level. Die Anforderung mag für die letzten Levels etwas steil ausfallen, aber es wird mit einem geeigneten Wachstum der XP-Akkumulation funktionieren.
aaaaaaaaaaa
@eBusiness: Guter Punkt, aber dies kann kein Problem sein, da Charaktere höherer Stufen dazu neigen, leichter und in kürzerer Zeit mehr Punkte zu verdienen (z. B. indem sie mächtigere Monster mit einer schnelleren Treffergeschwindigkeit angreifen / töten). Dies ist ein Grund, warum ich denke, dass diese Mathematik gut für Videospiele geeignet ist (insbesondere in einem MMORPG-Kontext).
Randolf Richardson
2
Ich finde es nur ein bisschen seltsam, dass sich OP speziell um exponentielles Wachstum kümmert und dann eine Antwort annimmt, die genau dasselbe auf eine andere Weise beschreibt. Aber ich denke, das ist sein Problem.
aaaaaaaaaaa
1
@eBusiness: Vielleicht hat meine Antwort etwas über exponentielles Wachstum verdeutlicht, das vorher nicht klar war? Es gibt viele verschiedene Möglichkeiten, Mathematik anzuwenden, und ich bin mir nicht sicher, ob selbst der beste Mathematiklehrer sie alle kennen könnte (naja, vielleicht der zweitbeste Mathematiklehrer überhaupt).
Randolf Richardson
9

Dies sind einige Möglichkeiten, die ich bisher verwendet habe. Sie sind nach Wachstumsrate sortiert (multiplizieren Sie einfach jede Gleichung mit einem konstanten Wert):

  1. exp = level (dies mag seltsam erscheinen, aber für einige Spiele, die exp-Änderungen entsprechend dem Level des Spielers belohnen, wie zum Beispiel Borderlands, passt dies möglicherweise dazu)

  2. exp = level * log 10 (level)

    1   0
    2   0.6
    3   1.4
    4   2.4
    5   3.5
    6   4.6
  3. exp = level ^ const_value: für mein Beispiel setze ich const value auf 3/2

    1   1
    2   2.8
    3   5.1
    4   8
    5   11.2
    6   14.7
Ali1S232
quelle
4

Ich denke, es hängt davon ab, wie einfach der Spieler die Erfahrung machen kann. Wenn der Spieler in 20 Minuten 200 xp auf Stufe 1 und in 2 Minuten 200 xp auf Stufe 2 erreichen kann, müssen Sie Ihre xp exponentiell skalieren.

Wenn es jedoch nur unwesentlich einfacher ist, eine Stufe zu erreichen, sollten Sie eine Stufe-xp-Funktion ausführen. (Möglicherweise linear mit einem Koeffizienten> 1)

Wangburger
quelle
4

Oft basieren die Punkte, die zum Erreichen eines Levels benötigt werden, auf einer Kurve. In vielen Rollenspielen gibt es auch viele andere Eigenschaften und Attribute deines Charakters, die mit deinem Level zunehmen. Sie werden sich auch auf eigenen Kurven befinden.

Schauen Sie sich RPGMaker an, um zu sehen, wie sie Dinge tun. Sehen Sie sich insbesondere die Parameterkurven in den Screenshots des Abschnitts "Hinzufügen von Eindeutigkeiten durch Anpassen der Startausrüstung" im Dokument " Erstellen eines Hauptcharakters" an .

Grundsätzlich kann es sein, dass Sie eine Kurve dafür haben, wie viel EP zum Aufstieg benötigt werden, und dann unterschiedliche Kurven dafür, wie viel HP, MP, Ausdauer, Stärke usw. in jedem Level erreicht werden.

Bildbeschreibung hier eingeben

Adam Harte
quelle
2

Betrachten Sie die Zeit

Sie müssen zuerst herausfinden, wie sich der Erfahrungsgewinn mit dem Level verändert. Dann können Sie Ihre Nivellierung nach Zeitbedarf anpassen . Wenn Sie mit jedem zusätzlichen Level doppelt so schnell Erfahrung sammeln und doppelt so viel Erfahrung für das Level benötigen, benötigt jedes Level dieselbe Zeit.

Mein Vorschlag ist, darüber nachzudenken, wie viel Zeit der Spieler verbringen soll, und dann das Level darauf abzustimmen.

Willy Goat
quelle
-3

Vielleicht sollte ich einfach ein flaches Nivelliersystem verwenden, bei dem jedes Level genau die gleiche Erfahrung erfordert.

Łukasz Baran
quelle
3
Die Antworten sollten etwas ausführlicher sein als nur ein einfacher Vorschlag. Versuchen Sie, einige der Vorteile dieser Strategie gegenüber einem dynamischen System wie dem gewünschten in Beziehung zu setzen.
MichaelHouse
Beachten Sie auch, dass zusätzliche Informationen vom ursprünglichen Autor bereitgestellt werden sollten. Wenn andere Benutzer weitere hinzufügen müssen, sollten sie eine separate Antwort veröffentlichen.
Gnemlock