Prohibition 1933
 
AccueilS'enregistrerConnexion

Partagez | 
 

 [TUTO] Formule de déplacements

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Hammond
Ninja
Ninja


Messages : 1749
Date d'inscription : 23/10/2010

MessageSujet: [TUTO] Formule de déplacements   Mer 15 Déc 2010 - 12:49

But du tuto : Je vais expliquer dans ce nouveau tutoriel la manière de retrouver les formules propres aux déplacements.


Je fais un nouveau tutoriel sur la question, car la règle a changée. En effet, vous pourriez vous demander pourquoi j'ai placé ma volante en 3:4:136 pour aller chercher Sudo. alors que la logique voudrait que je la place en 4:3:136.
La raison est simple, la disposition des terrain est inversée désormais. Au lieu de lire les quartiers de gauche à droite, on les lit de haut en bas.


1) Disposition des terrains

Le fait de lire la carte de haut en bas au lieu de gauche à droite, n'a pas d'incidence sur la présentation de la carte générale :

Je vous présenterais juste ici la disposition des terrains les uns par rapport aux autres,
suivi d'un exemple de voisinage "zoomé" sur une coordonnée ville

- La description des coordonnées d'un bâtiments se présente comme ceci sur Vendetta : [ABSCISSE]:[ORDONNEE]:[Terrain]
(Terrain étant le numéro où se trouve votre bâtiment sur une carte dite ville/quartier)

- Il réside deux couches au jeu :
la carte du serveur :
C'est une carte virtuelle, non représentée dans le jeu.
Elle est de dimension 50 x 50 soit 2.500 villes et représente l'étendue globale du serveur.
la carte dite ville/quartier :
C'est la carte que vous voyez lorsque vous cliquez sur "Plan de la ville" (mapa) dans le jeu.
/!\ elle est de dimension 17 x 15 (=255) et représente les emplacements possibles pour vos bâtiments.


Tout d'abord donc, voici le monde tel qu'il est dans chaque serveur :

Spoiler:
 

Voici ensuite le cas d'un emplacement ville/quartier et des autres emplacements ville/quartier qui lui sont proches :

Spoiler:
 

Pour ceux qui auraient encore un doute sur l'interprétation de ce dernier dessin, il signifie qu'un bâtiment en 22:9:247 se situe
à 1 case de déplacement du bâtiment en 22:10:9 (même coût en dollars que si vous déplaciez les mêmes unités en 22:9:248)


- La carte est "plan", ce qui implique que si vous vous trouvez en 50:50:255, vous n'êtes a 1 case que des 3 bâtiments qui vous entourent (237;238;254) et il vous faut traverser toute la carte pour rejoindre le bâtiment situé en 1:1:1 (le plus long trajet possible de la carte), et non 1 case en diagonale, comme certains pourraient le penser.

- Ceci implique que la carte a des limites et que les bâtiments situés sur celles-ci réduisent le nombre de territoires limitrophes
(ex : si vous vous trouvez en 1:1, les seules ville/quartier qui vous sont limitrophes sont 1:2, 2:1 et 2:2).



2) Distance :

Avant de calculer le coût d'un déplacement, il faut d'abord calculer a distance qui est à parcourir. Comme l'a démontré un autre tutoriel, il y a 50 villes, dans lesquelles il y a 50 quartiers. Chacun de ces quartiers est il y a 255 bâtiments avec 17 quartiers sur la longueur et 15 sur la largeur.

Nous pouvons donc déterminer à quel emplacement nous nous trouvons sur la carte, et le but ici sera d'essayer de trouver une mesure qui sera la même partout. Effectivement quelqu'un qui se trouve sur le bâtiment 4:4:252, ne se situe pas sur la même ligne que celui qui se trouve en 35:35:252. Pourtant, le numéro de bâtiment est le même. Afin de déterminer l'emplacement exact du bâtiment, on va donc réduire virtuellement le nombre de coordonnées de 3 à 2. Au lieu d'avoir une distinction ville:quartier:bâtiment, nous aurons virtuellement une distinction hauteur:largeur.

Le maximum de bâtiments en hauteur est de 15*50 soit 750. Le nombre de bâtiments en largeur et de 17*50 soit 850. Les bâtiments se trouvent donc forcément entre le 1:1 et le 750:850.

Maintenant, comment savoir ou un bâtiment se trouve. Prenons deux bâtiments au hasard sur la carte, le 35:42:41 et le 21:50:241. Il faut donc décomposer l'adresse pour arriver à nos fins :
Cherchons tout d'abord la hauteur de ses deux bâtiments:
- 35:42:41 : Il se trouve au niveau de la 42e quartier, et il y a donc 41 quartiers qui sont passées avant lui soit 41*15 = 615, auquel on ajoute la hauteur correspondant au bâtiment dans ce 42e quartier. Il y a 17 bâtiments par hauteur, et chacun des 17 bâtiments font partie de cette 1ere hauteur de quartier. On divisera donc la valeur du bâtiment indiqué ici 41 que l'on divisera par 17, ce qui fait 3. La hauteur totale du bâtiment est donc de 615+3 = 618 ;
- 21:50:214 : Même chose ici. On a 49 quartier qui précédent soit une hauteur 49*15 = 735 auquel on ajoutera l'indice de hauteur du bâtiment dans le quartier soit 214/17 = 12,58. Les valeurs arrondies sont arrondies au supérieur, donc 13. La hauteur de ce deuxième bâtiment est donc de 735+13 = 748.

Cherchons maintenant la largeur de ses deux bâtiments :
- 35:42:41 : Le bâtiment se trouve ici dans la 35e ville. Avant cette ville, il y avait donc 34 villes qui précédaient, et la largeur de celui-ci est de 34*17=578. Maintenant, la largeur du bâtiment dans un quartier se calcule légèrement différemment par rapport au calcul de la hauteur. On va retirer le nombre de hauteurs du quartier. Étant donné qu'une hauteur d'un quartier est composée de 17 largeur, on retirera 1 au numéro du bâtiment, et on divisera le résultat par 17. Dans notre exemple, 41-1 = 40 et 40/17 = 2,35. On arrondi ce résultat à l'inférieur 2. Il y a donc 2 hauteur de quartier avant ce bâtiment. Le nombre de bâtiment sur ces deux hauteurs est de 2*17 = 34. La largeur de ce bâtiment dans ce quartier sera donc de 41-34 = 7. La largueur totale de ce bâtiment est donc de 578+7 = 585.
- 21:50:214 : 20 villes précédent donc 20*17 =340. La hauteur du quartier qui est dépassé est donc de (214-1)/17 arrondi à l'inférieur soit 12. Le nombre de bâtiments contenus dans ces 12 hauteurs est de 12*17 soit 204. La largueur dans ce quartier est donc de 214-204 soit 10. La largeur totale est donc de 340+10 = 350.

Nous avons donc maintenant les coordonnées virtuelles de ces deux bâtiments :
- 35:42:41 -> 618:585
- 21:50:214 -> 748:350

Nous pouvons maintenant calculer la distance entre ces deux bâtiments. Il faut savoir que nos mercenaires volent. En effet, ils prennent le chemin le plus court possible et passent par dessus les bâtiments.

Pour calculer la distance d'un point à un autre, le théorème de Pythagore montre que la hauteur élevée au carré ajouté à la largeur au carré permet de retrouver la longueur en faisant la racine de cette somme. Pour appliquer à notre cas, on va donc rechercher la hauteur et la largeur.
La hauteur sera de 618-748 soit -130, et la largeur de 585-350 soit 235. Il n'est pas nécessaire de demander ici de retenir la valeur absolue de ces nombres vue qu'à l'étape d'après, le fait d'élever au carré une somme négative donnera un nombre positif. On gagne ainsi un calcul et de la place dans notre fichier.
La racine de ((-130)²+235²) donne 268,56...
On retiens cette valeur sans aucun arrondi, mais également l'arrondi inférieur de ce nombre soit 268. 268.000 sera le chiffre qui apparaitra lors du lancement de l'opération, mais 268,56... servira ensuite également.


3) Coût du déplacement :

Maintenant que nous connaissons comment calculer une distance entre deux bâtiments, nous pouvons maintenant calculer le coût de ce déplacement. Lors de cette étape, c'est la valeur non arrondie qui est prise comme base pour le calcul. En effet, si vous vous amusez à calculer le coût d'un trajet d'un mercenaire, par exemple, d'une case en diagonale, et d'une case en ligne droite, la distance affichée sera la même, mais le coût ne sera pas le même lui.

Je donne la formule du coût de déplacement tel quel, car je l'ai obtenu à partir de nombreux tableaux, et ce n'est pas mon but d'expliquer comment retrouver une formule à partir de données testées. La formule est :

(Nombre d'unités * Salaire de l'unité /10 * Distance arrondie) puissance 0,8 arrondi à l'inférieur
La somme des salaires de l'ensemble des unités donne le cout de déplacement

Dans notre exemple, si nous voulons envoyer 1000 mercenaires du 35:42:41 au 21:50:214, le coût sera de 1000*70/10*269^0,8 arrondi à l'inférieur ce qui donne : 615.035


4) Temps de déplacement :

Cette formule n'est pas totalement exacte. En effet, le résultat de ma formule diffère de 3 secondes au maximum par rapport à la réalité. Mais je pense qu'elle peut-être considérée comme juste.
En fait, le programme recherche tout d'abord laquelle des unités engagées est la plus lente. Les unités plus rapides devront s'adapter aux unités les moins rapides et non l'inverse. On teste donc la vitesse minimum parmi les unités engagées, et on l'insère dans la formule suivante. Là non plus je ne démontrerais pas cette formule car ce n'est pas l'intérêt du tutoriel. La formule :

(0,21989*vitesse la plus lente des unités engagées^-0,2)*distance entre les bâtiments^0,2

Pour notre cas, si notre mercenaire est l'unité la plus lente, et que l'on prend par exemple, un niveau de formation en PM de 9, cela équivaut à une vitesse de 5850, et correspond à un temps de déplacement de : (0,21989*5850^-0,2)*269^0,2, ce qui fait 0,15... soit en heures 3h37m25s.



En conclusion, voici les formules excel :

Coordonnée virtuelle hauteur :
Code:
(quartier-1)*15+arrondi.sup(Batiment/17;0)

Coordonnée virtuelle largeur :  
Code:
(ville-1)*17+Bâtiment-arrondi.inf((Bâtiment-1)/17;0)*17

Distance entre deux bâtiments :  
Code:
racine((largueur1-largeur2)^2+(hauteur1-hauteur2)^2)

Coût de déplacement entre deux bâtiments :  
Code:
somme(Nombre d'unité*salaire de l'unité/10*Distance entre deux bâtiments(non arrondie)^0,8)


Temps de déplacement entre deux bâtiments :  
Code:
min((0,22...*vitesse de l'unité engagée^-0,2)*Distance entre deux bâtiments (non arrondie)^0,2)

NB : Il nous reste à vérifier les formules du coût de déplacement et du temps de déplacement.
Tuto original by Hammond + Nadia + Slydoff.


Dernière édition par Hammond le Mer 15 Déc 2010 - 15:56, édité 3 fois
Revenir en haut Aller en bas
 
[TUTO] Formule de déplacements
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Tuto] Tetris
» tuto de peinture pour avoir toutes les couleurs de games
» Tuto: virages, montées, descentes.
» [TUTO] Déplacements
» [Tuto] Technique de peinture.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Prohibition 1933 :: Accueil :: Le jeu-
Sauter vers: