Ich gehe davon aus, dass dies eine Frage zum Spielgleichgewicht und keine Codierungsfrage ist, und es gibt viele Möglichkeiten, damit umzugehen. Ich vermute, dass Sie Ihren bestehenden Algorithmus komplizierter machen, als er sein muss (drei Attribute UND eine Zufallszahl ergeben aus Sicht des Spielers ein extrem matschiges System). Mein erster Instinkt ist zu vereinfachen!
Bevorzugen Sie Attribute, die mehrere Aufgaben ausführen, anstatt Ergebnisse, die von mehreren Attributen bestimmt werden. DEX funktioniert einwandfrei als primärer Bestimmungsfaktor für die Trefferchance. die Hinzufügung von allem anderen dient nur dazu, das Gleichgewicht zu erschweren. Stellen Sie sich das so vor: Der erwartete Schaden eines Spielers bei jedem Treffer ist sein Trefferanteil multipliziert mit seinem durchschnittlichen Schaden, wenn er trifft. Wie planen Sie, einen "erwarteten" oder "typischen" Trefferprozentsatz mit so vielen Variablen zu berechnen?
Ich sehe ein anderes Problem, nämlich, dass Ihre Formel nicht skaliert, und dies ist wahrscheinlich, was Sie erleben. Unter der Annahme, dass DEX, LUCK und SPEED im Laufe des Spiels tendenziell zunehmen, nehmen auch die Unterschiede zwischen Spieler und Monster in diesen Statistiken tendenziell zu. Wenn beispielsweise das DEX eines Spielers im Frühstadium im Bereich von 4 bis 6 liegt, und das gilt auch für Monster, ist dies ein Modifikator für Treffer von 10 bis 20%. Wenn die Reichweite in späteren Spielphasen eher zwischen 10 und 20 liegt, ist dies ein Modifikator von 100%.
Eine Möglichkeit, dies zu beheben, besteht darin, die Statistiken zu korrigieren. Die Reichweite von Spielern und Monstern ist während des gesamten Spiels gleich, und so etwas wie +1 DEX zu erhalten, ist ein riesiges Geschäft, extrem selten und wird als solches behandelt (sofern es überhaupt existiert). Dann funktioniert Ihre Formel für das gesamte Spiel und Sie sehen einen Spieler mit ungefähr der gleichen Trefferchance.
Eine andere Möglichkeit besteht darin, die fest codierte "10" so zu ändern, dass sie mit dem Level übereinstimmt. Vielleicht ist es also "10 + Monsterlevel" oder "10 + Dungeonlevel" oder etwas anderes, was im Verlauf des Spiels zu einem leichten Anstieg des Schwierigkeitsgrades führt, sofern der Spieler kein höheres Level erreicht ihre Statistiken entsprechend.
Ein dritter Weg, wie andere gesagt haben, besteht darin, die Obergrenze auf den höchsten und niedrigsten akzeptablen Trefferprozentsatz zu setzen und einfach zu sagen: "Wenn der berechnete Wert kleiner als X ist, verwenden Sie stattdessen X".
Der Vollständigkeit halber möchte ich darauf hinweisen, dass es kein absolutes Gesetz gibt, nach dem Sie einen Treffer-Wurf vorschreiben MÜSSEN. Das Durchführen einer Aktion in einem Spiel, das ineffektiv ist, macht keinen besonderen Spaß und erhöht die Erfahrung nur in seltenen Fällen. Eine Alternative ist, die Spieler IMMER schlagen zu lassen und nur mit der Schadensreichweite herumzuspielen, damit sie manchmal viel weniger Schaden anrichten als andere. Denken Sie daran, dass komplexe Systeme für den Designer mehr Spaß machen als für den Spieler.