Ich würde sagen, es hängt zumindest teilweise von der Art der Erfahrung ab, die Sie für den Spieler erstellen möchten. Betrachten Sie zwei Beispiele, von denen das erste ein klassisches rundenbasiertes RPG ist, das zweite ein Shooter vom Gradius III- Typ, bei dem Sie möchten, dass die Leistung des Spielers auf der Grundlage des Fortschritts seit seinem Listentod skaliert wird, nicht auf der Grundlage von Powerups (nicht um zu sagen, das ist ein gutes System, nur ein Beispiel).
Im Fall des RPG geht Ihr System wahrscheinlich davon aus, dass ein Spieler niemals Erfahrung verliert. In ähnlicher Weise wird es wahrscheinlich auf der Annahme handeln wollen, dass es relativ einfach ist, ein gewisses Maß an Kompetenz in etwas zu erlangen, es jedoch schwer zu beherrschen (wie die meisten Dinge in der realen Welt). In diesem Fall möchten Sie möglicherweise eine Formel entwickeln (wie von Coderanger vorgeschlagen), die in gewisser Hinsicht exponentiell ist. Wo die Menge an Erfahrung, die erforderlich ist, um das nächste Level zu erreichen, irgendwie exponentiell von Ihrem aktuellen Level abhängt. Es ist jedoch wichtig zu berücksichtigen, mit welcher Geschwindigkeit Ihr Spieler während des Spiels Erfahrung erhält. Zum Beispiel würde ein Spieler, der einen Feuerdämon der Stufe 63 tötet, mehr Erfahrung für seine Tötung erwarten, als wenn er eine Lady Bug der Stufe 2 getötet hätte. Also, wenn Sie Ihre Formel entwerfen, Stellen Sie sicher, dass Sie Ihr XP-System berücksichtigen. Vor allem, wenn Sie dies nicht tun, ist das Töten des Marienkäfers genauso profitabel wie das Töten härterer Feinde.
Beispiel 1 (Sie würden wahrscheinlich kein Formular verwenden): XP_TO_LEVEL = ((CURRENT_LEVEL + 1) ^ SCALE) * XP_BASE
Beispiel 2: XP_TO_LEVEL = (XP_BASE * CURRENT_LEVEL) ^ SCALE
Wobei XP_TO_LEVEL das XP ist, das benötigt wird, um das nächste Level zu erreichen. CURRENT_LEVEL ist das aktuelle Level des Spielers. XP_BASE ist eine willkürliche Zahl, um zu entscheiden, wie viel jeder Level in XP "wert" ist. SCALE ist der Exponent, der bestimmt, wie schnell die zum Leveln benötigten XP skaliert werden. Wenn SCALE 1 ist, benötigt jedes Level XP_BASE-Erfahrung. Wenn SCALE kleiner als 1 ist, benötigt jedes Level weniger Erfahrung als das letzte Level. Wenn SCALE größer als 1 ist, benötigt jedes Level mehr Erfahrung als das letzte Level.
In der folgenden Tabelle wird für Beispiel 2 eine SCALE von 1,1 und eine XP_BASE von 100 angenommen.
Current Level XP Needed Increase from Last Level
1 158 0
2 339 181
3 530 191
4 728 198
5 930 202
...
10 1995 218
Beispiel 3: XP_TO_LEVEL = ((CURRENT_LEVEL * SCALE) ^ 1.5) * XP_BASE
Wobei SCALE noch festlegt, wie schnell das XP_TO_LEVEL skaliert werden soll, es jedoch etwas anders funktioniert.
In der folgenden Tabelle wird für Beispiel 3 eine SCALE von 22 und eine XP_BASE von 10 angenommen.
Current Level XP Needed Increase from Last Level
1 28 0
2 80 52
3 146 66
4 226 80
5 316 90
...
10 894 130
Im Fall des Gradius-Klons könnten Sie eine andere Strategie verfolgen. Möglicherweise möchten Sie, dass der Spieler konstant aufsteigt, etwa alle zwei Minuten. Nachdem ein Spiel ein Leben verloren hat und folglich alle seine gewonnenen Kräfte verloren hat, möchten Sie ihm möglicherweise weiterhelfen, indem Sie ihn / sie schneller aufsteigen lassen, bis er ein für seinen Spielfortschritt angemessenes Niveau erreicht hat. In diesem Fall ist Ihre Formel wahrscheinlich linearer, zumal der Benutzer nicht sieht, wie viel Erfahrung er pro Kill erhält. Etwa 50 EP sind nötig, um ein neues Level zu erreichen, und jeder Gegner ist 1 EP wert. Dies funktioniert gut, vorausgesetzt, Sie versorgen ihn mit einem relativ gleichmäßigen Strom von Feinden. Aber wenn der Spieler stirbt, verliert er alles! Was tust du jetzt? Jeder Gegner sollte mehr als 1 EP wert sein, um das Ziel zu erreichen, ihn einzuholen, damit das Spiel wieder fair ist.
Beispiel: XP_FROM_EACH_ENEMY = BASE_XP + (CURRENT_LEVEL - DESIRED_LEVEL) Wobei XP_FROM_EACH_ENEMY ist, wie viel EP ein Feind beim Töten vergeben würde. BASE_XP gibt an, wie viel EP ein Feind standardmäßig wert ist (kann je nach Feindtyp variieren). CURRENT_LEVEL ist das Level des Spielers DESIRED_LEVEL ist das Level, auf dem der Spieler Ihrer Meinung nach sein sollte.