Zu 1: Durch das Script klappt das perfekt. Danke, ETeCe ^^
Zu 2: Das der RPG Maker keine Kommazahlen akzeptieren will hatte ich mir schon so langsam gedacht, finde ich aber blöd. Ist ja jetzt nicht etwas was zu anspruchsvoll wäre, oder? Die Formel war die aus Pokemon:
((2*a.level+10)/250)*(a.atk/b.def)*Basisschaden+2
Aber der Schaden war immer nur 2. Das liegt dann wahrscheinlich daran, dass wenn in der ersten Klammer durch 250 geteilt wird, immer eine Zahl unter 1 rauskommt...
Jetzt mal an die Experten unter euch: Ich hab mir eine eigene Schadensformel ausgedacht und wollte mal wissen ob die so in Ordnung ist, oder ob es daran etwas zu meckern gibt?
((((a.atk*2-b.def)+1)*((a.level*2)/b.level)+((a.atk*2)/b.def)*((a.level*2)/b.level))/2.5)+(a.atk/10)
Das ist die für den Stinknormalen Angriff also ohne Zauber oder sowas.
Aufjedenfall schonmal vielen Dank für die hilfe euch beiden
Zu deiner Formel,kenne mich mit sowas nicht wirklich aus , aber seit wann haben den die Feinde Level? (Meine "b.level" soll doch der Level des Gegners sein? Die haben aber standardmässig kein Level).
Ansonsten etwas zu lang und kompliziert für mich. Darüber hinaus scheint der Angriff enorm mit wachsendem Level und ATK Wert zu steigen.
Hast du schonmal mit dem Gedanken gespielt den normalen Angriff komplett rauszunehmen und das nur über verschiedene Skills zu machen?
Das ja das Coole beim Ace man kann Waffen ausrüsten und solange sie ausgerüstet ist hab ich nen bestimmten Skill z.B.
Dann mach ich mir ein Paar passende Skillgruppen (z.B. Waffe,Zauber etc... oder ich mach mir die Mühe das die Skilllgruppe Äxte nur erscheint wenn ich eine Axt ausgerüstet habe, und das ich dann noch verschiedene andere Axttechniken lernen kann. Hoffe man versteht das späte kaudawelsch.
Angriffsbutton also komplett raus, oder gucken ob man den zu Gegner Analyse umbaut, oder irgend etwas anderes witziges.
Cool wäre auch dann könnte alles seine eigene Formel haben.
Ich hab das jetzt mal ausprobiert. Wäre mal eine Idee, aber ich weiß nicht so recht...
Und Stimmt, standardmäßig haben die Gegner kein Level. Aber ich hab das Gegner-Level Script von Yanfly drin ^^
Ich weiß aber immer noch nicht, was ich für Schadensformeln nehmen soll. Nur a.atk*2-b.def ist mir zu billig. Gibt es nicht irgendwo ein Tutorial für Schadensformeln? Es gibt doch zu alles mittlerweile Tutorials xD
Wie gesagt, du kannst mit Kommazahlen rechnen. Das passiert allerdings nur wenn du in deiner Rechnung Kommazahlen angibst.
Grund dafür ist einfach der dass die Schadensformel intern wie ein Scriptbefehl übersetzt wird und damit an Rubys Konventionen gebunden ist. Ein ganzzahliges Ergebnis ist bei der Division häufig ausreichend bzw. sogar erwünscht (unter anderem da Fließpunktzahlen nur eine gewisse Genauigkeit haben).
Rundungsfehler könntest du bei der genannten ersten Schadensformel wie geschrieben minimieren:
10000*(2*a.level+10)/250*a.atk/b.def*Basisschaden/10000+2 # <= Multiplizieren mit hoher Zahl
(2*a.level+10)*a.atk*Basisschaden/250/b.def+2 # <= Umstellen nach Multiplikation
((2*a.level+10)/250.0)*(a.atk/b.def.to_f)*Basisschaden+2 # <= Verwenden von Fließpunktzahlen wenigstens an kritischen Stellen
Zu deiner neuen Formel kann ich selbst nicht viel sagen... Am einfachsten denke ich ist es du probierst die Formel einige Male mit verschiedenen für dein Spiel realistischen Werten durch und schaust was herauskommt.
Ansonsten dürften die Präferenzen bei Schadensformeln vermutlich etwas auseinandergehen...
Nicht, dass ich deine Formel würde kritisieren wollen, ohne den Kontext zu kennen, allerdings scheitere ich grade bei dem Versuch, mir vorzustellen, welchen Sinn du mit einer derart komplexen Schadensformel verfolgst. Denn irgendwie habe ich so meine Zweifel, dass du bei einer solchen Formel überhaupt noch abschatzen kannst, welchen effekt welches drehen an welchem Rädchen auf den Gesamtschaden hat. Das erscheint mir als eine unnötige erschwerung des Balancings. Nur ein kleiner Punkt, der mir so aufgefallen ist:
Abgesehen davon, das die Abfrage des Gegnerlevels ein Externes Script erfordert, ist das Ergebniss von diesem Ausdruck hier in der (Spiel-)Praxis vollkommen unberechenbar:
((((a.atk*2-b.def)+1)*((a.level*2)/b.level)
Wenn du als Stufe 1 Charakter einen Stufe 2 Charakter angreifst, wird das Ergebniss durch die rechnung zu ((a.level*2)/b.level) => ((2)/2) => (1). Damit wird das Spiel in der Anfangsphase praktisch unspielbar, weil du schon einem Gegner, der nur eine Stufe Vorsprung hat, kaum mehr Schaden zufügst ... ca. die Hälfte gegenüber einem gleichstufigen gegner. Bei ansteigendem Level ... also wenn man grade erwarten sollte, das der Schwierigkeitsgrad des Spiels ansteigt, verliert dieser rechenschritt hingegen zunehmend an Wirkung und wird schließlich absolut nutzlos.
Wenn du als Stufe 50 Charakter einen Stufe 80 Charakter angreifst, sieht die Formel schon so aus: ((a.level*2)/b.level) => ((100)/80) => (1,25). Tatsächlich fügst du also jetzt einem Gegner, der schlappe 30 Level höher ist als du, ca. 25% mehr schaden zu, als einem gegner, der zu Spielbeginn 1 Stufe höher ist, als du.
Sind hingegen beide Charaktere auf dem selben Level fügst du gleich DOPPELTEN Schaden zu ((a.level*2)/b.level) => ((100)/50) => (2)
Im Klartext bedeutet das für dein balancing also:
Wenn der Level des Gegners zwar höher ist, als deiner, aber weniger als Doppelt so hoch, bekommst du immer einen Bonus auf deinen Schaden. Sobald der Level des gegners doppelt so hoch ist (oder noch hoher), wie dein eigener, gibt die Rechnung irgend einen so kleinen Wert zurück, das kaum noch Schaden entsteht. Dadurch ist dieser Rechenschritt um so fataler, jeniedriger der Level der Spielcharaktere ist. Auf Stufe 1 dürften Stufe 2 oder gar Stufe 3 Charaktere bereits unüberwindbare Hindernisse darstellen, während ein Gegner auf Stufe 50 bereits selber Stufe 100 einnehmen müsste, um einen ähnlich fatalen Effekt zu erzielen.
Und jetzt erzähle mir mal Bitte, wie du um eine Schadensformel, die als Stufe 1 Charakter, einen Kampf gegen Stufe 2 Charaktere unmöglich macht, aber ab Stufe 50 Bereits keine wirksame Reduktionen des verursachten Schadens mehr zulässt, ein funktionierendes balancing aufbauen willst. Wie ETeCE reichtig erkannt hat, gehen die Präferenzen bei Schadensformeln sicherlich auseinander. Dennoch sehe ich einfach kein Argument, welches für eine Formel im Stile von
sprechen würde, statt einfach ein kurzes, prägnantes (und vor allem leicht im Kopf zu handhabendes!)
Zitat
a.ATK*6-b.DEF*3
...
zu nehmen.
Ich setze bei meinem Spiel voll auf letzteres. Der Vorteil ist, dass ich die Skills nichteinmal testen muss, denn ich weiß bereits im Kopf, das Jeder Punkt ATK den Schaden um 6 erhöht, und jeder Punkt DEF um 3 verringert. Und das ist beim Balancing ziemlich praktisch.
[Edith sagt:] Ein paar kleine korrekturen vorgenommen [/edith]