Berechnung der nach einem Kampf gesammelten Erfahrungspunkte

9

Ich entwickle ein einfaches Textkampfspiel und habe einige Probleme bei der Berechnung, wie viel XP nach einem Kampf verdient werden soll. Es gibt einige Faktoren, die ich berücksichtigen möchte:

1) Spieler sollten natürlich gute EP verdienen, wenn sie jemanden des gleichen Levels schlagen

2) Spieler sollten großartige EP verdienen, wenn sie jemanden mit einem höheren Level schlagen

3) Spieler sollten schlechte EP verdienen, wenn sie jemanden mit einem niedrigeren Level besiegen

4) Das Obige sollte sich gut skalieren lassen, dh wenn Spieler A Level 10 ist und gegen Spieler B mit Level 9 oder 11 kämpft, sollte der Unterschied nicht groß sein (sie würden natürlich mehr EP erhalten, wenn sie den Level 11-Charakter besiegen, aber wir würden nicht Erwarten Sie, dass dies riesig ist), aber wenn er gegen Level 5 oder 15 kämpfen sollte, sollte dieser Unterschied riesig sein.

Da ich nur Probleme habe, etwas zu berechnen, das in allen Szenarien gut funktioniert, sieht meine XP-Tabelle derzeit wie folgt aus:

Current Level   XP Needed   Increase from Last Level
1   30  0
2   65  35
3   106 41
4   154 48
5   210 56
...
10  672 123

In PHP sieht mein Code wie folgt aus, um die benötigten XP zu berechnen:

$offset = 30;
$multiplier = 1.17;
$base = $prevXp * $multiplier;

$xp = $base + $offset;

Ich habe ein paar verschiedene Dinge ausprobiert, aber ich war von keinem beeindruckt. Ich würde gerne mit der Berechnung des XP-Unterschieds und der Verwendung eines Multiplikators arbeiten, aber ich war von den Ergebnissen nicht beeindruckt.

Jede Hilfe / Eingabe wäre dankbar.


quelle
2
Ich lese nicht einmal, geh einfach dorthin -> gamebalanceconcepts.wordpress.com/2010/07/07/… <-
o0 '.
Der erste Gedanke ist, dass Sie sich eine Kopie eines D & D Dungeon Masters Guide aus der zweiten oder dritten Ausgabe suchen sollten. Gute Ressourcen für bereits getestete / ausgewogene XP-Vergabesysteme.
Richard Fabian

Antworten:

13

Zwei Vorschläge:

Exponenten! Berechnen Sie für jedes Level eine "Basis-XP-Belohnung". Dann lautet die Formel für einen Kill base_xp_reward * pow (1.1, target_level - player_level). Möglicherweise möchten Sie den Gewinn auf ein Maximum beschränken, um Exploits etwas aufzuheben, und Sie möchten möglicherweise unter einem bestimmten Unterschied null XP geben, um die Landwirtschaft von Lowbies zu verhindern.

(Basis-XP-Belohnung kann auch eine einfache exponentielle Folge sein, wenn Sie möchten - constant_factor * pow (1,25, Stufe), vielleicht. Dann können Sie die "Exp-zu-Stufe" als Vielfaches der Basis-XP-Belohnung definieren. Könnte sein einfacher auf diese Weise zu balancieren.)

Alternativ machen wir das wirklich einfach. Mach das gleiche Basis-XP-Belohnungs-Ding. Stellen Sie dann von Hand eine Tabelle mit den gewünschten Boni aus verschiedenen Levelunterschieden zusammen. Machen Sie es verhältnisbasiert, so dass das Töten von jemandem, der eine Stufe über Ihnen liegt, immer beispielsweise 10% Bonus-XP über der Basisbelohnung gibt. Und jetzt müssen Sie sich überhaupt nicht mehr um eine Formel kümmern - Sie können einfach die Zahlen dazu bringen, das zu tun, was Sie wollen.

Formeln werden überbewertet, manchmal müssen Sie nur einige Zahlen einspielen und nach Gehör spielen.

ZorbaTHut
quelle
1
+1 fürFormulas are overrated, sometimes you just need to jam some numbers in and play it by ear.
RCIX
2

Ich würde so etwas wie "Gewinne xp durch den erlittenen / erhaltenen Schaden" sagen. Wenn also ein Level 10 mit 100 PS gegen ein Level 15 mit 200 PS kämpft. Es scheint unfair, aber wenn Level 10 in der Lage wäre, Level 15 zu töten, würde er doppelt so viel XP bekommen wie im Kampf gegen Level 10 mit nur 100 PS.

Auch auf diese Weise müssen Sie sich keine Sorgen machen, wenn zwei Personen denselben Feind mit unterschiedlicher Ausrüstung bekämpfen würden. Wenn zum Beispiel ein Level 8 und ein Level 10 gegen ein Level 13 kämpfen. Wenn das Level 8 eine bessere Ausrüstung / Rüstung hat, würde er mehr XP bekommen als das Level 10, einfach weil er dem Level 13 mehr Schaden zufügt.

Aber das Wichtigste: Regeln festlegen, Spieltest, Regeln festlegen, Spieltest, Regeln festlegen, Plasytest usw. usw.

Selbst die besten MMOs der besten Entwickler passen ihr XP-Distributionssystem an, solange das Spiel lebt.

Espen
quelle
0

Nur meiner Meinung nach ist das Wichtigste, um richtig zu werden, die Skalierungsmenge an XP, die zum Aufsteigen erforderlich ist. Ein Freund von mir verwendete eine Fibonacci-Variante für seinen Browser Rogue-like, zum Beispiel 100XP, 100XP, 200XP, 300XP, 500XP, 800XP usw. usw.

Ich habe auch von einem Mechaniker in einigen Spielen gehört, bei dem das Level von den XP abgezogen wird, die durch jede Schlacht verdient wurden. Wenn zum Beispiel eine bestimmte Schlacht 50XP verdient und sie sich auf Stufe 20 befindet, erhalten sie nur 30XP. Wenn sie auf Stufe 50 oder höher wären, würden sie nichts verdienen.

earok
quelle