Bonjour à tous,
But:
Seigneur, nous subissons une attaque.
Pas de problème. Activez les défenses. Nous allons leur faire payer cher leur infamie.
Apres le combat.
Rapport des pertes.
Monsieur, nous avons été balayé sans avoir détruit le moindre vaisseau ennemi
QUOI !?!
Beh, les ennemis sont venus avec un très grand nombre de modèles de vaisseaux différents que nous avons du repartir nos tirs sur l'ensemble de ceux-ci
Mais qui m'a donné des incapables pareils ...
Ce petit texte a pour but de présenter un manque de réalisme flagrant selon moi. En effet, les dégâts étant répartis entre chaque vaisseaux différents (on observe en effet une multiplication des plans dans ce but), il arrive donc qu'au cours d'une attaque, des vaisseaux ne soit pas détruit même s'il y avait suffisamment de puissance de feu pour. RP parlant, cela semble incohérent, un vaisseau ne va pas disperser ses tirs mais plutôt se concentrer sur les vaisseaux les uns après les autres
Solution envisagée:
Lors d'un combat, un tour se déroulerait comme ceci:
1/ Calcul des dégâts:
Il me semble que (sauf erreur de ma part) les dégâts sont calculés comme ceci:
"Dégâts totaux"="Dégâts unitaire du vaisseau"*"Nombre de vaisseaux"*"Bonus divers (ciblage,XP, AIA...)"
Bref, inutile de changer la façon actuelle de calculer la puissance de feu.
2/Répartition des dégâts
Ici, deux solutions peuvent être envisagés:
-Première solution
Chaque vaisseau d'un type se verra affecté d'une valeur, indépendant du plan (grâce à une incrémentation ou autre). Ensuite, un tirage équiprobable aléatoire sans remise défini un ordre. Enfin, les dégâts sont distribués dans cet ordre. Donc les "Dégâts totaux" se verraient retranchés de la structure de ce vaisseau, celui-ci serait considéré comme détruit puis on passerait au vaisseau suivant, ceci jusqu'à épuisement total des dégâts.
-Seconde solution
Il est plus facile de viser une terreur qu'une corvette. De plus, en temps de guerre, détruire les organes de commandement ennemis (ce que sont sensés représenter les CrA/Terreurs) est un choix stratégique. Mais du fait des distances, des nombres considérables de vaisseaux engagés et des erreurs humaines, la visée n'est pas infaillible. Dans cette optique, le seconde solution différerait de la première dans le fait que le tirage ne serait pas équiprobable mais que les différents vaisseaux se verraient affectés d'une probabilité en fonction de sa taille, de son importance ou tout autre paramètre qui pourrait intervenir.
Avantages:
Selon moi, le premier avantage est le réalisme. Cependant, d'un point de vue du jeu, l'avantage majeure est que les pertes ne dépendraient plus du nombre de plans différents mis en jeu.
Inconvénients:
La génération des rapports de combats seraient plus lourdes pour le serveur et donc pourraient le ralentir.
Formules:
Une incrémentation pour affecter une valeur à chaque vaisseau ferait parfaitement l'affaire.
Pour la première solution, il suffirait d'un fonction mt_rand(0,n) ainsi qu'une n-boucle pour définir l'ordre où n est le nombre total de vaisseaux d'un type (mt_rand() est préférable à rand() car plus rapide)
Pour les probabilités de chaque vaisseau (seconde solution), il faudrait rajouter une nouvelle caractéristique (caché de la vue des joueurs). Apres, une petite recherche sur google, le tirage au sort pondéré est possible en php grâce à une combinaison d'additions et de mt_rand() où la pondération correspondra à la nouvelle caractéristique.
Exemple:
Lors d'une attaque, le joueur 1 dispose de trois vaisseaux différents de même type (A,B,C) de structure respectives 2,3 et 5G. Le joueur 2 dispose d'une puissance de feu de 7G sur ce type de vaisseau.
Actuellement (sauf de ma part et des trois/quatre personnes qui ont confirmé), sans prendre en compte la destruction aléatoire en cas de dégâts, les dégâts seraient repartis équitablement entre les trois vaisseaux. Chaque vaisseau prendrait donc 7/3=2.3G de dégâts environ. Au final, seul un vaisseau (le A) sera détruit.
Avec la première solution, les vaisseaux se verraient affecter une valeur (classiquement, A=1 B=2 C=3). On aurait donc 3!=6 cas possibles: 1-2-3; 1-3-2; 2-1-3; 2-3-2; 3-1-2; 3-2-1. Supposons que le premier cas sorte, on aurait donc le A(1) subissant 2G de dégâts (détruit), le B(2) subissant 3G de dégâts (détruit) et le C(3) subissant 2G de dégâts (non détruit).
Supposons maintenant que le cas 3-2-1 sorte, seul le vaisseau C serait détruit.
Pour la seconde solution, cela dépendrait du poids de chaque vaisseau.
Qu'en pensez vous?