Pour ceux que cela intéresse éventuellement, une répartition en volume des diverses fonctions principales du moteur du jeu.

Actuellement, le source représente environ 1 million de caractères… soit environ 50 mille lignes ou encore 500 pages de listing.

Le programme peut être décomposé en 6 groupes

  1. Grande Tactique et Tactique
  2. Perception de l’environnement (moteur CMT pour Combat-Menace-Trajectoire)
  3. Gestion des ordres, des Organisations, des Lignes Défensives
  4. Séquenceur : combat, consigne, menace, trajectoire
  5. Recherche au sens large (de place, de soutien, de priorité,…)
  6. Divers (initialisation, élaboration des vitesses, …)

La fonction grande tactique (déjà évoquée dans un précédant article) élabore le plan tactique en mode Solo.
Les trois IA tactiques (Chef d’Armée, Chef de Corps, Colonel)  prennent en charge la gestion au niveau hiérarchique approprié.
Les prises de décision s’appuient sur les données quantifiées par le moteur CMT.
Les décisions se matérialise sous forme d’ordres qui se propagent au moyen des fonctions  »communication des ordres »

Chaque entité (unité, canon dételé) identifie son environnement suivant trois filtres:

  • Combat, ou plus généralement vision de ce que que voit l’unité en tenant compte des différents masquages.
  • Menace mélangeant vision et acoustique. La menace est polarisée, indiquant ainsi si l’entité est Ami ou Adversaire
  • Trajectoire indiquant les obstacles potentiels pour le déplacement

Cette fonction est de loin la plus gourmande en ressource temporelle.

Gestion des ordres, organisation, lignes défensives

  • ordres: gestion complète de la transmission des ordres avec prise en charge des captures et des remises différées
  • organisation: à réception d’un ordre de corps, l’IA prend en charge l’organisation en tenant compte des paramètres et des contraintes
  • lignes défensives: cette fonction est partagée en 2 groupes
  1. corps: recherche de la meilleure ligne de défense en s’appuyant sur les obstacles présent le long de la ligne indiquée dans l’ordre
  2. unité: affectation des différents bataillons aux secteurs définis lors de l’étape précédente

Pour chaque cycle de 1 minute, le moteur traite séquentiellement les 4 étapes:

  1. évaluation des pertes lors des combats par la mousqueterie, le corps à corps et le tir des canons
  2. élaboration des consignes pour le déplacement
  3. identification des menaces et mise en place des réactions (avec modification éventuelle des consignes)
  4. mise en place de la trajectoire

La fonction de recherche, fortement hétérogène, prend en charge des recherches à finalité variable

  • placement pour une unité arrivant sur sa zone de déploiement finale
  • identification d’un espace adapté à un combat, surtout pour les mêlées de cavalerie
  • identifications des différents paramètres d’une zone donnée (type, coefficient défensif, vitesse de déplacement….)
  • évaluation de la qualité d’une ligne de déploiement (prise en compte des surfaces inaccessibles)
  • identification des unités pour le soutien et le support
  • évaluation des priorités, par exemple pour passer un pont

Et pour en terminer ce tour d’horizon du moteur interne, quelques chiffres indiquant la part relative des différentes parties du code

  • 6.5%   Stratégie
  • 6.1%   Tactique
  • 6.6%   CMT
  • 4.9%   Lignes défensives
  • 7.5%   Ordres
  • 6.1%   Organisation
  • 11.3% Menace
  • 5.4%   Combat
  • 2.2%   Consigne
  • 18.6% Trajectoire
  • 13.8% Recherche
  • 11.1%  Divers

JMM