Je développe un RPG 2d classique (dans le même sens que le fantasme final) et je me demandais si quelqu'un avait des conseils sur la façon de faire des formules de dommages / des liens vers des ressources / exemples? Je vais expliquer ma configuration actuelle. J'espère que je n'exagère pas avec cette question, et je m'excuse si mes questions sont trop larges / larges
Les statistiques de mes personnages sont les suivantes:
enum Stat
{
HP = 0,
MP = 1,
SP = 2,
Strength = 3,
Vitality = 4,
Magic = 5,
Spirit = 6,
Skill = 7,
Speed = 8, //Speed/Agility are the same thing
Agility = 8,
Evasion = 9,
MgEvasion = 10,
Accuracy = 11,
Luck = 12,
};
La vitalité est fondamentalement la défense contre les attaques physiques et l'esprit est la défense contre les attaques magiques.
Toutes les statistiques ont des maximums fixes (9999 pour HP, 999 pour MP / SP et 255 pour les autres). Avec les capacités, les maximums peuvent être augmentés (99999 pour HP, 9999 pour HP / SP, 999 pour les autres) avec des valeurs typiques (au niveau 100) avant / après capacités + équipement + etc. seront de 8000/20 000 pour HP, 800 / 2000 pour SP / MP, 180/350 pour autres statistiques
En fin de partie, Enemy HP sera typiquement dans les millions inférieurs (avec un super boss ayant un maximum de ~ 12 millions).
Je me demandais comment les gens développent réellement des formules de dommages appropriées qui s’échelonnent correctement? Par exemple, sur la base de ces données, l’utilisation des formules de dommages pour Final Fantasy X semblait très prometteuse. Une référence complète ici http://www.gamefaqs.com/ps2/197344-final-fantasy-x/faqs/31381 mais à titre d'exemple rapide: Str = 127, commande 'Attaque' utilisée, ennemi Def = 34.
1. Physical Damage Calculation:
Step 1 ------------------------------------- [{(Stat^3 ÷ 32) + 32} x DmCon ÷16]
Step 2 ---------------------------------------- [{(127^3 ÷ 32) + 32} x 16 ÷ 16]
Step 3 -------------------------------------- [{(2048383 ÷ 32) + 32} x 16 ÷ 16]
Step 4 --------------------------------------------------- [{(64011) + 32} x 1]
Step 5 -------------------------------------------------------- [{(64043 x 1)}]
Step 6 ---------------------------------------------------- Base Damage = 64043
Step 7 ----------------------------------------- [{(Def - 280.4)^2} ÷ 110] + 16
Step 8 ------------------------------------------ [{(34 - 280.4)^2} ÷ 110] + 16
Step 9 ------------------------------------------------- [(-246)^2) ÷ 110] + 16
Step 10 ---------------------------------------------------- [60516 ÷ 110] + 16
Step 11 ------------------------------------------------------------ [550] + 16
Step 12 ---------------------------------------------------------- DefNum = 566
Step 13 ---------------------------------------------- [BaseDmg * DefNum ÷ 730]
Step 14 --------------------------------------------------- [64043 * 566 ÷ 730]
Step 15 ------------------------------------------------------ [36248338 ÷ 730]
Step 16 ------------------------------------------------- Base Damage 2 = 49655
Step 17 ------------ Base Damage 2 * {730 - (Def * 51 - Def^2 ÷ 11) ÷ 10} ÷ 730
Step 18 ---------------------- 49655 * {730 - (34 * 51 - 34^2 ÷ 11) ÷ 10} ÷ 730
Step 19 ------------------------- 49655 * {730 - (1734 - 1156 ÷ 11) ÷ 10} ÷ 730
Step 20 ------------------------------- 49655 * {730 - (1734 - 105) ÷ 10} ÷ 730
Step 21 ------------------------------------- 49655 * {730 - (1629) ÷ 10} ÷ 730
Step 22 --------------------------------------------- 49655 * {730 - 162} ÷ 730
Step 23 ----------------------------------------------------- 49655 * 568 ÷ 730
Step 24 -------------------------------------------------- Final Damage = 38635
J'ai simplement modifié les diviseurs pour inclure l'évaluation de l'attaque des armes et l'évaluation de l'armure de l'armure.
Les dégâts magiques sont calculés comme suit: Mag = 255, Ultima est utilisé, MDef ennemi = 1
Step 1 ----------------------------------- [DmCon * ([Stat^2 ÷ 6] + DmCon) ÷ 4]
Step 2 ------------------------------------------ [70 * ([255^2 ÷ 6] + 70) ÷ 4]
Step 3 ------------------------------------------ [70 * ([65025 ÷ 6] + 70) ÷ 4]
Step 4 ------------------------------------------------ [70 * (10837 + 70) ÷ 4]
Step 5 ----------------------------------------------------- [70 * (10907) ÷ 4]
Step 6 ------------------------------------ Base Damage = 190872 [cut to 99999]
Step 7 ---------------------------------------- [{(MDef - 280.4)^2} ÷ 110] + 16
Step 8 ------------------------------------------- [{(1 - 280.4)^2} ÷ 110] + 16
Step 9 ---------------------------------------------- [{(-279.4)^2} ÷ 110] + 16
Step 10 -------------------------------------------------- [(78064) ÷ 110] + 16
Step 11 ------------------------------------------------------------ [709] + 16
Step 12 --------------------------------------------------------- MDefNum = 725
Step 13 --------------------------------------------- [BaseDmg * MDefNum ÷ 730]
Step 14 --------------------------------------------------- [99999 * 725 ÷ 730]
Step 15 ------------------------------------------------- Base Damage 2 = 99314
Step 16 ---------- Base Damage 2 * {730 - (MDef * 51 - MDef^2 ÷ 11) ÷ 10} ÷ 730
Step 17 ------------------------ 99314 * {730 - (1 * 51 - 1^2 ÷ 11) ÷ 10} ÷ 730
Step 18 ------------------------------ 99314 * {730 - (51 - 1 ÷ 11) ÷ 10} ÷ 730
Step 19 --------------------------------------- 99314 * {730 - (49) ÷ 10} ÷ 730
Step 20 ----------------------------------------------------- 99314 * 725 ÷ 730
Step 21 -------------------------------------------------- Final Damage = 98633
Le problème est que les formules s’écroulent complètement dès que les statistiques dépassent 255. En particulier, les valeurs de Defence supérieures à 300 commencent à générer un comportement vraiment étrange. Les statistiques Haute résistance + Défense mènent à des valeurs négatives massives par exemple. Bien que je puisse peut-être modifier les formules pour fonctionner correctement dans mon cas d'utilisation, il serait probablement plus facile d'utiliser une formule complètement nouvelle. Comment les gens développent-ils réellement des formules de dommages? J'envisageais d'ouvrir Excel et d'essayer de construire la formule de cette manière (par exemple, en cartographiant Statistiques d'attaque et statistiques de défense), mais je me demandais s'il existait un moyen plus simple? Bien que je ne puisse pas expliquer ici les mécanismes de jeu complets de mon jeu, quelqu'un pourrait-il être en mesure de suggérer un bon point de départ pour la création d'une formule de calcul des dégâts?
Merci