Design | Le blog de JMM

Archives pour «Design»

Issue de l’histoire d’HistWar, une interview de 2012 portant sur l’IA en général, et son intégration dans le jeu…

Questionné par le site de référence du Wargame français, c’est par ici… (en français et en anglais…)

http://www.wargamer.fr/ia-t-il-un-wargamer-dans-mon-pc-le-cas-dhistwar/

Par ailleurs, une petite séance de brain-storming pour trouver un nom à cette partie du programme, cette partie cachée qui gère les entités…

VICTWAR… pour VIrtual Clash Tool… en charge de la VIsion, du Combat et des Trajectoires.. bref les 3 fonctions de base du moteur.

Promis, le prochain billet parle des ordres des unités opérationnelles de VictWar… ou comment bien comprendre comment cela fonctionne.

JMM

Les lignes défensives jouent un rôle essentiel dans l’histoire et HistWar.

Ce billet dévoile le modèle utilisé pour simuler des engagements dans des zones construites.

Il existe six types de construction dans le jeu :

  • hameau,
  • ferme,
  • village,
  • ville,
  • château,
  • redoute,

chacune avec ces paramètres spécifiques précisant son bonus défensif et sa résistance au bombardement.

Une fois la construction investie, un régiment se déploie sur les 4 cotés avec un taux d’occupation (*) dépendant de la menace.

Le pourcentage de l’effectif en défense qui se déploie face à l’attaquant dépend du nombre d’unités en attaque et est ajusté constamment.

  • attaque sur un coté : 70%.
  • attaque sur deux cotés : 40%
  • attaque sur trois coté : 30%
  • attaque sur quatre coté : 25%

Ainsi, il est toujours préférable d’attaquer avec 2 régiments d’infanterie après avoir préparé le terrain par un bombardement préalable.

En effet, un régiment de 1000 fantassins défendra le coté attaqué avec 700 hommes. En cas d’attaque double, seulement 400 fantassins seront opposés sur chaque secteur attaqué.

JMM

(*) la représentation graphique ne tient pas compte de cette répartition…

 

Evolution du GamePlay

HistWar va proposer au joueur de gérer certains ordres générés par l’IA.

Ces ordres couvrent 3 aspects différents:

  • ordre aux unités d’artillerie de réagir face à une menace (mettre en batterie, se replier, …)
  • ordre aux unités de cavalerie de poursuivre des fuyards.
  • ordre aux unités de porter un support à une unité en difficulté.

Actuellement, l’IA s’appuie sur la doctrine définie par le joueur  pour répondre à l’occurrence de différents événements.

A partir de la version 03x, le joueur pourra

  • conserver le modèle initial et déléguer à l’IA de gérer les ordres ci-dessus définis.
  • prendre en charge la gestion des ordres que l’IA soumettra. Ainsi, il pourra rejeter  l’ordre ou encore choisir un autre intervenant.

L’interface du jeu permettra , pour chacun des 3 groupes, de choisir le mode Doctrine (délégation à l’IA) ou  Manuel (gestion par le joueur).

Il est probable que cette procédure sera ensuite affinée pour éviter de « noyer » le joueur sous les requêtes en conjuguant Groupe et Corps. Par exemple, il sera possible que les ordres à l’artillerie soit prise en charge par la doctrine (mode Doctrine) pour certains corps et gérés par le joueur (mode Manuel) pour d’autres corps.

JMM

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