Algorithme de combat : distribution des tirs
#1
Bonjour à tous,

Je planche actuellement sur un algo de combat et je coince lorsqu'il s'agit de distribuer des tirs sur des unités. Le problème est le suivant :

10 unités reçoivent 10 tirs. Comment distribuer ces tirs de manière aléatoire en suivant une courbe gaussienne ? Cela donnerait donc par exemple 2 unités touchées 0 fois, 5 unites touchées 1 fois,  2 unités touchées 2 fois et une unité touchée 3 fois.

Merci d'avance 2
Répondre
#2
Salut,

la gaussienne est une modélisation macroscopique, elle émergera simplement d'un choix de cible aléatoire.
Donc, dans ton cas, il suffit que, pour chaque tir, tu choisisses une cible au hasard (équiprobablement), tu la blesse avec le tir, et tu passes au tir suivant qui choisiras aussi une cible au hasard sans lien avec la première cible choisie. A la limite, si le 1er tir a tué l'unité ciblé, tu peux la retirer de la liste des cibles possibles pour les tirs suivants.

De cette manière, naturellement, la gaussienne émergera.
Répondre
#3
Merci Xenos pour cette réponse rapide et fort utile !

Mais sachant que je code en JS et utilise donc la fonction Math.random, ne vais-je pas me retrouver avec des tirs équitablement répartis avec un grand nombre de tirs/unités ?

Aussi, toujours avec un très grand nombre de tirs/unités, disons des millions, le temps de calcul deviendra un problème. N'existe t il pas une autre méthode afin de résoudre ce problème ?
Répondre
#4
Quand tu auras vraiment besoin de millions de calculs, tu aviseras (à mon avis, ça n'arrivera pas et les perfs de JS sont de toutes façon suffisante pour gérer ce genre d'ordre de grandeur).

Non, tu auras bien une loi normale pour la probabilité de recevoir N tirs sur une unité. La majorité des unités recevront un nombre de tirs égal (sommet de la cloche) mais des unités pourront ne recevoir aucun tir (ou tous les tirs). C'est une question de proba. Tu n'auras pas, à chaque combat, les "exactes" valeurs de la cloche de gauss, mais tu auras des chances de l'approcher (sommairement résumé, parce que je n'ai pas envie de faire un cours de proba un Dimanche aprem).

Ce qui m'inquiète le plus, c'est de tirer les unités-cible en JS... coté client?! Donc trichable?! :\
Répondre
#5
Oh bien entendu ! C'était surtout pour le côté didactique de la chose. Vais déjà faire des tests pour commencer.

Je n'en demandais pas autant, merci pour ton temps.

Côté serveur avec Node !
Répondre
#6
(09-16-2018, 01:20 PM)Xenos a écrit : A la limite, si le 1er tir a tué l'unité ciblé, tu peux la retirer de la liste des cibles possibles pour les tirs suivants.

Je suis en désaccord complet !!

Lors d'une salve, les balles partent, et point barre

Si 10 gus debout lors du "ciblage" les 10 gus ont une chance de se prendre toutes les balles, même si la première leur explose la tête

donc on élimine pas un mort de la liste des cibles possibles (du moins pour un 'round' de tir)


sinon d'accord avec X
[WIP]projet Rivages
[WIP]projet Arthur (comme si ça suffisait pas d'un...)
Répondre
#7
D'accord avec Ter Rowan qui n'est pas d'accord avec moi =P C'est juste une question de comment le gameplay s'articule (si tout le monde tir vraiment en même temps, on ne vire pas les morts, mais si chacun tire l'un après l'autre, on peut les virer)
Répondre


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  [Baies] Implémentation du système de combat, son algorithme Plume 0 2 314 06-24-2010, 12:26 AM
Dernier message: _who
  ["Ogame-like"] Algorithme de combat (eh oui, encore un...) Pyrrha 11 6 610 03-06-2009, 09:34 PM
Dernier message: hsaturn
  Algorithme de combat M@x 11 4 045 07-23-2008, 12:30 AM
Dernier message: Argorate



Utilisateur(s) parcourant ce sujet : 1 visiteur(s)