Parallélisation d’une portion d’un jeu de simulation de combat

Par Dominic Vincent

Pendant la session d’automne 2013, j’avais comme projet personnel d’implanter un algorithme qui pouvait simuler un combat entre un nombre N de légions. Ce programme prenait en entrée la liste des légions et produisait en sortie un rapport contenant la liste des unités qui tombaient au combat. La simulation se déroulait tour par tour, et un certain nombre d’unités tombaient à chaque tour. Cet algorithme prend aussi en considération que plusieurs légions peuvent être alliées et donc s’ignoreront lors de l’assignation du dégât prit par chaque unité. Finalement, on prend aussi en considération le fait que chaque unité a un attribut weight qui lui est associé, dans le but de mettre dans une seule variable l’impact que peut avoir une unité dans le combat. Une unité va alors distribuer son dégât de façon proportionnel au weight de l’unité adverse par rapport au weight total des unités adverse. Plus une unité a un gros weight, plus elle sera la cible des autres unités. Cela a pour but d’éviter que, si une unité est extrêmement plus puissante que les autre, elle survie à coup sûr et gagne automatiquement le combat pour sa légion.

Après avoir testé en long et en large cet algorithme, j’ai trouvé intéressant la possibilité d’ajouter une notion de parallélisme dans celui-ci. Étant donné que l’algorithme était déjà programmé et testé, il ne restait qu’à ajouter le parallélisme et l’implanter dans un langage supportant ceci, puisque je l’avais d’abord implanté en PHP.

 

Lire la suite ...