Wenn wir die Mathematik erarbeiten und die Level
erfahrungsbedingten Probleme lösen XP
, erhalten wir:
L e v e l = 1 + 1 + 8 × XP÷ 50-------------√2
Was ist zum Beispiel die Stufe des Spielers für ?XP= 300
1 + 1 + 8 × 300 ÷ 50-------------√2= 4
Wie gewünscht.
Oder wofür ist das Level XP = 100000
?
1 + 1 + 8 × 100000 ÷ 50----------------√2= 63
Allgemeiner ausgedrückt für eine willkürliche Startschwelle auf Stufe 1:
L e V e l = 1 + 1 + 8 × t h r e s h o l d÷ 50------------------√2
Sie können auch umgekehrt vorgehen und die XP
für ein bestimmtes Level erforderliche Menge berechnen, indem Sie die obige Formel für XP lösen.
XP= ( L e V e l2- L e V e l ) × t h r e s h o l d2
Beachten Sie, dass die obige Formel mit Brüchen funktioniert, Sie jedoch auf den nächsten ganzzahligen Wert abrunden müssen. In C ++ / C # könnten Sie beispielsweise (int) Level verwenden.
Um die obige Formel in geschlossener Form zu erhalten, verwendete ich Differenzgleichungen, Gauß-Summierung und eine quadratische Formel.
Wenn Sie Schritt für Schritt an der Lösung dieser Formel interessiert sind ...
Wir machen einen rekursiven Algorithmus, indem wir unsere Überlegungen dazu letztendlich starten Experience(next_level) = Experience(current_level) + current_level*50
.
Um beispielsweise , haben wir:XPL e V e l 3
XPL e V e l 3= XPL e V e l 2+ 2 × 50
Woher 2*50
kommt die Aufforderung des OP, dass die zum Erreichen des nächsten Levels erforderliche Erfahrung dem aktuellen Level * 50 entspricht?
Nun setzen wir mit der gleichen Logik in die Formel ein. Das ist:XpL e V e l 2
Ersetze in die obige Formel:XPL e V e l 2= XPL e V e l 1+ 2 × 50
XpL e V e l 3= XpL e V e l 1+ 1 × 50 + 2 × 50
und ist nur 50, was unser Ausgangspunkt ist. DaherXpL e V e l 1
XpL e V e l 3= 50 + 2 × 50 = 150
Wir können ein Muster für die rekursive Berechnung höherer Ebenen und eine endliche Kette von Summierungen erkennen.
XpL e V e l N=50+2×50+3×50+...+(N−1)×50=∑i=0n−1i×50
Wobei N das zu erreichende Niveau ist. Um die XP für das Level N zu bekommen, müssen wir nach N auflösen.
XpLevelN÷50=∑i=0n−1i
Nun ist die rechte Seite einfach eine Summation von 1 nach N-1, die durch die berühmte Gaußsche Summation ausgedrückt werden kann . DaherN×(N+1)÷2−N
XpLevelN÷50=N(N+ 1 ) ≤ 2 - N
oder nur
2 ∗ ( XpL e V e l N- 50 ) ≤ 50 = N( N+ 1 ) - 2 N
Zum Schluss alles auf eine Seite legen:
0 = N2- N- 2 × XpL e V e l N÷ 50
Dies ist jetzt eine quadratische Formel, die eine negative und eine positive Lösung ergibt, von denen nur die positive relevant ist, da es keine negativen Niveaus gibt. Wir erhalten jetzt:
N= 1 + 1 + 4 × 2 × XpL e V e l N50-----------√2
Der von XP und der linearen Schwelle abhängige aktuelle Pegel ist daher:
L e v e l = 1 + 1 + 8 × XP÷ t h r e s h o l d-------------------√2
Hinweis: Das Kennen dieser Schritte kann hilfreich sein, um noch komplexere Abläufe zu lösen. Im RPG-Bereich sehen Sie neben einem linearen Verlauf wie hier die tatsächlich häufigere gebrochene Potenz oder quadratische Beziehung, zB . Für die eigentliche Implementierung des Spiels halte ich diese Lösung jedoch für weniger optimal, da Sie im Idealfall alle Ihre Stufenfortschritte im Voraus kennen sollten, anstatt sie zur Laufzeit zu berechnen. Für meinen eigenen Motor verwende ich deshalb vorverarbeitete Erfahrungstabellen, die flexibler und oft schneller sind. Wenn Sie jedoch zuerst diese Tabellen schreiben oder sich nur die Frage stellen, waszum Beispiel benötigt wird, um sie zu erhalten, bietet diese Formel den schnellsten Weg, um die spezifische Frage des OP zu beantworten.L e v e l = XP√5.0XP
Level 100
Bearbeiten : Diese Formel ist voll funktionsfähig , wie es sollte , und es gibt richtig die aktuellen level
abhängig XP
mit einer linearen Schwelle Progression , wie durch die OP angefordert. (Die vorherige Formel gab "Level + 1" aus, indem angenommen wurde, dass der Spieler mit Level 0 angefangen hatte, was mein Fehler war. Ich hatte es in meiner Mittagspause gelöst, indem ich auf ein kleines Taschentuch schrieb! :)