L’algorithme de tir

L’une des nouveautés à ajouter à Basket Bowl est le tir (qui n’existe pas dans Blood Bowl). Quel algorithme de calcul utiliser alors ? Le principe reste de lancer un dé 6 et d’ajouter des bonus et des malus. Les différents paramètres sont assez simples à déterminer :

  • L’agilité du joueur qui tire
  • La présence ou non d’un joueur adverse dans la zone de tacle (en langage basket : le tir est-il ouvert ?)
  • La distance au panier

À cela s’ajouteront des compétences liées au tir, développées spécifiquement pour le jeu. On aura par exemple :

  • Dunk qui apporte un bonus si le joueur est à côté du panier.
  • Sniper qui apporte la possibilité de relancer un dé.
  • Three points qui apporte un bonus si le joueur tire à 3 points.

N’oublions pas que le principe qu’un jet de 6 est toujours victorieux et un jet de 1 toujours un échec. Cela donne tout le piment au jeu !

L’algorithme est inspiré de ceux existants (sur la réception, la passe, l’interception par exemple) est le suivant. Il est construit en inverse, puisqu’on cherche ici le lancer à réaliser. Dans un jet où l’agilité rentre en jeu, le calcul de base est le suivant :

besoin = 6 - agilité

C’est le calcul de la réception ou de la passe moyenne par exemple. Parfois, un +1 ou un -1 est ajouté pour ajuster les probabilités de réussite. C’est ce qui a été choisi pour le tir. Dans le cas inverse, réussir un tir devait extrêmement difficile.

Actuellement, l’algorithme est le suivant :

besoin = 6 - agilité + distance + zones de tacle - bonus - 1

C’est sur le tir à trois points qu’est construit l’algorithme. Voilà les zones de trois points actuelles, qui correspondent à une distance d’au moins quatre cases du panier.

game_screen_3tsline

Pour un joueur lambda, avec un shoot ouvert (donc sans autre joueur dans ses zone de tacle) contre la ligne à trois points, on aura :

  • Agilité = 3
  • Distance = 4
  • Malus = 0
  • Bonus = 0

Soit : besoin = 6 – 3 + 4 + 0 – 0 – 1 = 6

Donc, il faut un jet critique pour marquer. Si le joueur n’est pas particulièrement agile ou spécialisé au tir à trois points, ce n’est pas choquant. Comme pour Blood Bowl, ce seront les joueurs spécialisés qui devront tirer. Imaginons cette fois ci un joueur agile, avec une compétence Three points. On obtient :

  • Agilité = 4
  • Distance = 4
  • Malus = 0
  • Bonus = 1

Soit : besoin = 6 – 4 + 4 + 0 – 1 – 1 = 4

Un lancer de dé à 4, 5 ou 6 est réussi, ce qui correspond à un taux de réussite à 50%. Sachant que les gros tireurs de NBA ont des pourcentages de réussite à trois points qui tournent autour de 40% (mais pas qu’avec des tirs ouverts), cela parait pas mal.

Hélas, cet algorithme pose le souci du tir proche du panier. Ainsi, un joueur lambda, à côté du panier, sans joueur dans sa zone de tacle, obtient ce score :

  • Agilité = 3
  • Distance = 1
  • Malus = 0
  • Bonus = 0

Soit : besoin = 6 – 3 + 1 + 0 – 0 – 1 = 4

Une chance sur deux de marquer sous le panier sans être gêné ? N’est-ce pas un peu dur ? D’où la nécessité de développer plusieurs algorithmes, sur le même mode que les passes, qui en possède 4. Ici, trois semblent nécessaires au minimum :

  • Le tir à 2 points
  • Le tir à 3 points
  • Le tir au-delà de la ligne des 3 points

D’autres seront peut-être à ajouter :

  • Le tir de l’autre côté du terrain
  • Le tir sous le panier

Je ne donnerai pas d’algorithme complet dans cet article, puisque seuls les tests permettront d’ajuster l’ensemble logiquement. Pour le tir au-delà de la ligne des 3 points, on imagine bien les fins de quart temps où un joueur balance le ballon en espérant qu’il entre dans le panier… Du coup, même un jet 6 vainqueur est presque trop puissant. Que faire alors ? Jeter un dé 10 ? De même, les compétences permettent d’ajuster la réussite.

Il suffit de se pencher un peu sur des cas concrets et calculer à chaque fois les probabilités pour voir que rien n’est simple !

Auteur : belzaran

Fan de basket, joueur de Blood Bowl et programmeur du dimanche.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *