Spieleprogrammierung: Algorithmen

CookieBuster

Erfahrenes Mitglied
Hallo auch,

Ich programmiere nun seit einiger Zeit an einem eigenem Browsergame, welches mitlerweile doch schon einige Funktionen hat :D

Gestern habe ich die Funktion des "Levelns" eingebaut, will heißen der Charakter des Spielers kann Erfahrung sammeln und dadurch im Level aufsteigen. Hier setzt auch meine Frage an, wie würdet ihr das mit dem Algorithmus regeln?

Ich weiß, "probieren", ist eine gute Wahl. Man kann aber auch jede Levelstufe per Hand einpflegen.

Meiner Lautet im Moment:

var XpForLevelUp = (0.1 * (var Level)^2 + 0.5 var Level) * var BaseXp;

var XpForLevelUp = Erfahrungsmenge die für das nächste Level up benötigt wird.
var Level = Das aktuelle Level des Users
var BaseXp = Ein voreingestellter Wert von mir, der einfach als Faktor benutzt wird. Im Moment befindet er sich auf 500


Im Moment entwickelt sich die Kurve folgendermaßen:
Level 1: 300
Level 2: 700
Level 3: 1200
Level 4: 1800
Level 5: 2500
.
.
.
Level 20: 25000
.
.
Level 28: 46200
Level 29: 49300
Level 30 ist Max, also keine Steigerung mehr möglich.


Nun verläuft mir das aber fast etwas zu progressiv. Natürlich mit etwas probieren kein Problem das anzupassen, trotzdem die Frage ob nicht jemand eine gute Idee hat (oder jemand kennt der sie hat/hatte) wie man das geschickt regeln kann. Das große Problem ist, dass man bisher immer eine gleiche Menge an Erfahrung bekommt (zw 50 und 200, wobei die größte Warscheinlichkeit bei etwa 170 liegt) und man deshalb gegen Ende nur seeehr langsam vorwärts kommt und ich mir das sehr frustrierend Vorstelle (und das sollen solche Spiele nun wirklich nicht sein)

Genug von mir, man will ja noch was zu diskutieren haben :p
 
Schau doch mal in den Foren und Wikis etablierter Browser- und Rollenspiele nach.

Da sind oftmals die Formeln, die zur Berechnungen diverser Spielevents - seien es Schadens-, Skill- oder Levelberechnungen - benutzt werden, aufgeführt.

Vielleich schreibst du da einfach mal ab und passt anschließend an.

Spontan ergoogelt: http://wow.ingame.de/wiki/Formeln_und_Spielmechanik
 
Es geht mir hier weniger um eine "perfekte" Lösung, als viel mehr um die Diskussion von Vor-Nachteilen oder auf den Lösungsweg.

Solche Seiten wie von dir erwähnt kenne ich auch, so ist es ja nicht =). Auch z.B gibts Lanversionen von vielen Spielen, da ist es auch kein Problem hinter die Kulissen zu sehen.

Auch interessiert es mich, wie ihr an die Sache rangehen würdet, weil ich finde, solche Algorithmen und das entsprechende Balancing machen ein Spiel aus!
 
Ich denke, du solltest die notwendigen EP danach ermitteln, wie lange ein Spieler braucht, um sie zu bekommen; ein Spiel, bei dem man 10 Jahre zocken muss, um den nächsten Level zu erreichen, macht auf Dauer keinen Spaß. Das hängt natürlich stark davon ab, wie schnell und einfach man sie durch Kämpfe und Quests erwerben kann.
 
Ich habe mir jetzt einmal einfach meinen GTR geschnappt und noch ein wenig probiert.

Mit:
Y1 = (0.15x² + 0,5x) * 712
Y2 = 0,3x² + 10x + rand(200.300)

Hab ich die beiden Kurven festgelegt (Y1 = Benötigte Xp für LevelUp, Y2 = Erhaltene Erfahrung für den Abschluss einer Aufgabe. X = Aktuelles Level des Nutzers)

Über den Quotienten (Y1 / Y2) bekommt man dann die Anzahl der benötigten Aufgaben für ein Level up. Eine Aufgabe dauert ca 1 - 2h, später sollen einmal ca 5 am Tag abschließbar sein.
Mit diesen Werten braucht man 2 Aufgaben um auf Level 2 zu kommen, 8 Tage von Level 10 auf 11 und ca 26 Tage von Level 29 auf 30 [maximal Level].


Will heißen, ich habe mir einfach immer den Quotienten angeschaut (vorallem Wert von 1 und 29) und dann solange probiert bis hier annehmbare Werte herrausgekommen sind..

Was haltet ihr von diesen Statistiken? Tragbar für ein Spiel oder zu lang/kurz?
Der Spielspaß soll nicht leiden, wäre also über objektive Meinungen froh :D
 
Zurück