[NOTES] Évolution dans le temps de la réflexion sur les statistiques


Cet article est un repost de plusieurs articles issus de mes recherches sur l'utilisation (ou plutôt, le contournement des limitations) des statistiques de RPG Maker MV, puis MZ. La date de cet article correspond à la date du premier article écrit à ce sujet.
Les deux plus anciens articles ont été postés sur un forum qui n'est plus maintenu actuellement.

Note : au cours du temps, j'ai employé indifféremment les mots "caractéristique" et "statistique". Les deux sont synonymes ici. Ils représentent les valeurs chiffrées des caractéristiques des personnages (points de vie, force etc.) 

Carnet de route 5

En 2016

Petite réflexion sur les caractéristiques et l'équilibrage.

Condition 1 : garder les choses simples
Condition 2 : se rappeler que l'ordi n'aime pas traiter avec des floats
Condition 3 : j'ai déjà une caractéristique que je vais utiliser en tant que booléen, donc autant aller jusqu'au bout et ne pas se préoccuper de donner des valeurs ou des plages de valeurs identiques d'une caractéristique à l'autre
Condition 4 : ignorer toute caractéristique inutile

À quoi servent les caractéristiques ?

À faire en sorte d'avoir un résultat d'action qui ne relève pas du pur hasard

Conséquence 1 : on doit utiliser des données chiffrées
Conséquence 2 : autant donner du sens à ces données chiffrées

Quelles sont les caractéristiques disponibles dans MV ?

maxHP, maxMP, TP, atk, def, matk, mdef, agi et luck

Quelles sont les caractéristiques déjà utilisées par mon système ?

HP, atk et def : formule de dégâts physique
HP, matk et mdef : formule de dégâts magique
luck : binaire, position et puissance des attaques corps-à-corps
agi : jauges ATB, temps d'incantation et effets sur le temps

Conséquence : MP et TP ne sont pas utilisés.

Faut-il supprimer les MP et les TP ?

J'avais en tête un système de rage (TP) et de concentration (MP).

La rage est un facteur augmentant les dommages des personnages. Elle augmenterait lorsque le personnage reçoit des dommages et reviendrait à zéro à chaque début de combat ou à la mort. On pourrait imaginer qu'elle diminue lorsque le personnage utilise une attaque surpuissante (très peu de classes ont ce type d'attaque).

La concentration est nécessaire au lancement des sorts de type invocation, techniques et arts occultes. Si le personnage n'a pas assez de concentration, il ne peut pas lancer le sort. La concentration augmenterait à chaque tour, sous l'effet de soins ou grâce aux rares sorts régénérant initialement les MP. Elle diminuerait à chaque coup reçu. On commencerait le combat avec une jauge remplie à fond en attaque préventive, remplie à moitié en attaque normale et remplie à zéro en attaque par surprise.

La grosse différence entre l'utilisation lambda de MP et l'utilisation que je compte en faire ici est que les MP ne seraient pas consommés, ils serviraient juste de paliers à atteindre. En effet, j'ai toujours trouvé ça étrange d'avoir une réserve de magie dans des mondes où la majeure partie du temps on nous présente la magie comme une capacité innée...

Finalement, va-t-on utiliser toutes les caractéristiques de MV ?

OUI

Quelles valeurs leur donner ?

HP : je n'en sais rien... Je verrais bien quelque chose ayant une base fixe par niveau et une partie variable qui serait proportionnelle à l'atk, la def et la mdef .

Note : pourquoi l'atk aussi ? parce qu'a priori les spécialistes des attaques physiques seront en première ligne, ils ont besoin de plus de HP pour mieux encaisser les dommages.

Il faudra prendre en compte qu'une attaque inflige, sans aucune modification, 100 dégâts de base.

Il faudra donc prévoir un système où on meurt en une dizaine de coups, je pense.

MP : une barre qui irait de 0 à 100 pour se simplifier la vie, comme ça mes compétences auront des paliers de concentration à atteindre en pourcentage.

  • Diminution des MP : max(20%, HP perdus/HP max)
  • Augmentation des MP : 10 par tour

TP : une barre qui irait de 0 à 25

  • Augmentation des TP : 1 par dommage subi
  • Influence sur les dommages : on a X TP = on augmente les dommages de X% (max : +25%)

atk et matk : une jauge de 0 à 100, 50 étant considéré comme la valeur standard, +/-15 constituant la moyenne des gens. Au-dessus de 65 on est très fort, en dessous de 35 on est vraiment faible (voir tutoriel en milieu d'article).

  • Influence sur les dommages : on part d'une base de dommages de 200. On applique le pourcentage donné par la caractéristique : à 50 (m)atk, on fait des dommages normaux égaux à 100 ; à 100 (m)atk on double les dommages.

def et mdef : une jauge de 0 à 100, 50 est aussi la valeur standard. 100 représente une immunité et 0 représente une grande faiblesse.

  • Influence sur les dommages : il aurait été plus simple d'avoir une jauge de -100 à 100...

Sur le principe : dommages reçus = dommages calculés en attaque x (100 - valeur pour une jauge allant de -100 à 100). Conséquence : à 0 on reçoit 100% des dommages, à 100 on reçoit 0 dommages et à -100 on reçoit le double de dommages.

Recalibrage de la jauge : (valeur - 50) x 2

Agi : il faut regarder la documentation du plugin de combat, en fonction du système d'économie d'action. Voir si c'est jouable avec une jauge allant de 1 à 10.

Luck : 0 ou 1, voir dans l'article précédent pour le détail.

Conclusion de 2016 : les formules de combat

(A = attaquant, C = cible)
Calcul des dommages pour une base = 200 pour une attaque cac ou de portée
dommages = ( 200 x A.(m)atk / 100 ) x ( 100 - 25 x A.luck ) / 100
Calcul des dommages pour une base = 200 pour une attaque à distance
dommages = 200 x A.(m)atk) / 100
Calcul des dégâts reçus pour une base = dmg si l'attaque a l'attribut portée
dégâts = dmg x ( 100 - 2 x ( C.(m)def - 50 ) / 100
Calcul des dégâts reçus pour une base = dmg dans les autres cas
dégâts = ( dmg x ( 100 - 2 x ( C.(m)def - 50 ) / 100 ) x ( 100 - 25 x C.luck ) / 100

En 2018

Lyrium est le nom du monde dans lequel devaient évoluer les personnages de Forgotten. C'est aussi le nom d'un jeu de rôle papier amateur qui n'existe plus. Il avait tout un système de combat, dont une partie est expliquée ci-après.

Dans Lyrium on a Force, Constitution, Rapidité (stats physiques), Vivacité d'esprit, Mémorisation, Volonté (stats magiques) et Charisme (stat sociale). Grosso modo la vitesse est déterminée par la Rapidité et la Vivacité, la capacité à attaquer et se défendre par la Force et la Rapidité et la capacité à lancer des skills et se protéger des attaques magiques par la Mémorisation et la Vivacité. La Volonté et la Constitution servent pour définir les PV/PM/PT. On peut aussi remplacer la Vivacité par la Volonté ou le Charisme pour lancer des sorts spéciaux.

Du coté de RPG Maker, on a Attack, Defense, M.Attack, M.Defense, Agility, Luck. Soit une stat de moins (mon logiciel est en anglais). Tel que j'ai prévu mes classes, il y aura du poison, donc j'ai besoin de ma stat Volonté. Par contre, la Mémorisation, autant en JDR papier c'est utile dans plein de situations, autant en jeu vidéo, habituellement le jeu se souvient pour le joueur. Et puis j'ai prévu une sorte de bestiaire à remplir avant d'aller taper du monstre, ça reprend plus ou moins le principe de cette caractéristique. Si je fais plus ou moins un parallèle :

  • Attack = Force
  • Defense = Constitution
  • Agility = Rapidité
  • M.Attack = Vivacité d'esprit (même si c'est un peu tiré par les cheveux parce qu'on n'a pas vraiment d'équivalent...)
  • M.Defense = Volonté
  • Luck = Charisme (parce qu'il faut bien que je le case quelque part et que c'est important, et qu'accessoirement, en pratique la Luck représente assez bien la chance d'obtenir un renseignement ou un cadeau).

Ce qui fait accessoirement que j'ai tout le système de combat à refaire...

Note : j'ai noté ces équivalences-là dans la BDD : tout identique sauf M.Attack = Pouvoir. Je suppose que je voulais en déduire que POU = VIV - MEM.

Conclusion de 2018 : les formules de calcul de statistiques

PV = (2xVol + For + 2xCon) = 2x M.Defense + Attack + 2x Defense
PM = (3xVol + Mem + Viv) = 4x M.Defense + M.Attack 
     (ça va sans doute se transformer en 3x M.Defense + 2x M.Attack)
PF (PT) = (2xVol + Agi + 2xCon) = 2x M.Defense + Agility + 2x Defense
Maestria (attaque et défense physique) = Attack + Agility
Pouvoir (attaque et défense magique) = M.Attack + M.Defense
Rapidité = Agility + M.Attack

À voir si pour Maestria, Pouvoir et Agility il faut calculer la moyenne, mais de mémoire les formules de dégâts ont un x2 qui traine.

En 2019

Les statistiques sont utilisées telles que décrites des années avant. Plusieurs personnes s'interrogent à ce moment sur l'équilibrage sur le forum. J'apporte ma pierre à l'édifice avec ce tutoriel.
C'est aussi la dernière itération du projet sur RPG Maker MV, avec un écran d'équipement personnalisé permettant de voir les statistiques et l'effet de l'équipement sur celles-ci (voir ci-dessous).

En 2023

J'avais posté une formule de combat, utilisée par le plugin de combat que j'utilise encore actuellement aujourd'hui.
if (action.isCertainHit()) { return 0; } 
const item = action.item(); 
const a = action.subject(); 
const b = target; 
const sign = [3, 4].includes(item.damage.type) ? -1 : 1; 
const v = $gameVariables._data; 
let value = Math.max(eval(item.damage.formula), 0) * sign; 
let attackValue = 0; let defenseValue = 0; 
if (action.isPhysical()) {
    attackValue = LoS_pphy(a);
    if (!action.isRecover()) { 
        defenseValue = LoS_pphy(b);
    } 
} else if (action.isMagical()) {
    attackValue = LoS_pmag(a);
    if (!action.isRecover()) { 
        defenseValue = LoS_pmag(b);
    } 
} 
const rate = 100 + Math.min(Math.max(attackValue - defenseValue, -100), 100); 
value *= rate / 100; return isNaN(value) ? 0 : value;

Crédit pour le squelette de la formule : VisuStella MZ.

Conclusion

Je suis toujours restée fidèle à un approche "jeu-de-rôlesque" des statistiques dans un jeu vidéo. C'est à dire que les valeurs sont associées à des paliers qui ont du sens.

L'idée de transformer les valeurs numériques en jauges de "normalité" exprimées en pourcentages a germé très tôt (elle est antérieure à la création du projet) et rend ces paliers plus explicites aux yeux des joueurs, du moins je l'espère. C'est pour cette même raison que je reste sur une distribution normale des statistiques. Il est en effet plus facile de se dire que mon magicien a une attaque magique au dessus de la moyenne, mais une constitution très faible, sans pour autant être un être exceptionnel (top 5%) et d'imaginer tout de suite ce que cela peut rendre en termes de valeurs numériques.