meta données pour cette page
Support d'artillerie par IA configurable (GDC AR Lib)
Support artillerie par IA ou artillerie virtuelle ?
Il est possible - et plus simple pour le mission maker - d'utiliser le système d'artillerie virtuel. Les prefabs vanilla disponibles sont puissants et hautement configurables. Un article du wiki décrit les paramètres de ces prefabs : Comment paramétrer des tirs de mortiers (virtuels). Cependant, ce système a plusieurs limites, notamment le fait que les mortiers n'existant pas, ils ne peuvent pas être détruits. De plus, le système est tout-puissant : les mortiers, sauf à ce que le mission maker prenne en compte volontairement ce paramètre, n'ont pas de limite de portée. De plus, les salves de tirs sont parfois irréalistes, sauf à imaginer une batterie de 5 mortiers ou plus tirant en continu.
A contrario, le système de support d'artillerie par IA, est un (tout petit) peu plus long à mettre en œuvre car il faut que des mortiers et des servants soient posés ou spawnés. En outre, il est plus réaliste :
- le mortier ne peut pas tirer plus vite que la cadence de tir de l'IA (réglage des azimuts, chargement des obus),
- la portée est limitée par la configuration de l'arme (faible en vanilla, autour de 2,5 km pour les mortiers de 80 mm vanilla),
- les tirs des mortiers sont audibles, ce qui permet de détecter leur position,
- plus polyvalent, car il peut être utilisé avec n'importe quelle arme de tir indirecte (non testé).
Le système GDC_ArtilleryFireSupport
Le prefab GDC_ArtilleryFireSupport.et permet de définir une mission d'appui-feu indirect par mortiers depuis le World Editor. Il commande un groupe IA déjà présent dans la scène (ou spawné dynamiquement) et lui fait exécuter une ou plusieurs séquences de tir sur une position choisie. Le système est :
- Facile à configurer, sans script ni événement personnalisé à créer.
- Flexible : permet de paramétrer simplement des missions d'appui composées de plusieurs ordres de tir (nombre d'obus, zone d'impact, délai entre les ordres, etc.).
- Peut s'adapter à de nombreux cas d'usage : tir au début de la mission, appui-feu déclenché par un drapeau du TilW Mission Framework (TMF), permet d'utiliser un mortier spawné dynamiquement, etc.
Le prefab est disponible dans le mod GDC AR Lib, à l'emplacement GDC AR Lib>Prefabs>AI>Artillery>GDC_ArtilleryFireSupport.et. Il peut être utilisé en vanilla, mais requiert le TilW Mission Framework (TMF) pour bénéficier du déclenchement par flag ou du spawn dynamique. Cet article suppose que vous maîtrisez le TMF. Si ce n'est pas le cas, un tutoriel de prise en main est disponible : Créer une mission avec TilW Mission Framework.
Comment ça fonctionne
Vous placez le prefab GDC_ArtilleryFireSupport.et dans la scène à l'endroit où vous voulez centrer la zone d'impact. Il référence un mortier (ou son groupe IA) via le champ AIGroup Name. Quand le timer ou la condition de déclenchement est remplie, il envoie au servant une série d'ordres de tir (*fire orders*) à exécuter l'un après l'autre.
L'image ci-dessus illustre une séquence de trois ordres de tir : chaque anneau visible dans le World Editor correspond à un ordre et matérialise sa zone d'impact. Les anneaux s'affichent dès que l'entité est sélectionnée (option Show Debug Rings activée) et leur couleur passe du jaune pour le premier ordre au rouge pour le dernier. Chaque ordre définit :
- un nombre d'obus à tirer,
- une zone d'impact en forme de anneau centrée sur le prefab, définie par un rayon intérieur et un rayon extérieur en mètres (rayon intérieur à
0pour un disque plein, sans zone morte au centre), - un délai avant l'ordre suivant.
Les impacts sont répartis aléatoirement dans l'anneau avec une distribution uniforme : il n'y a pas de concentration au centre.
Référence des paramètres
GDC_ArtilleryFireSupportComponent
| Paramètre | Valeur par défaut | Description |
|---|---|---|
AIGroup Name (m_sAIGroupName) | (vide) | Nom de l'entité mortier ou du groupe d'IA à commander. |
Condition Flag (m_sConditionFlag) | (vide) | Drapeau du TilW Mission Framework qui déclenche la mission. Si vide, la mission démarre immédiatement au lancement de la partie. |
Initial Delay (m_fInitialDelay) | 5 s | Délai entre le déclenchement et le premier tir. |
Ammo Type (m_eAmmoType) | HIGH_EXPLOSIVE | Type de munition pour tous les ordres de tir de cette mission. |
Fire Orders (m_aFireOrders) | (vide au niveau du code du composant, mais trois ordres de tir définis par défaut dans le prefab, cf. copie d'écran ci-dessus) | Séquence ordonnée d'ordres de tir (voir ci-dessous). Exécutés du premier au dernier. |
Show Debug Rings (m_bShowDebugRings) | true | (World Editor uniquement) Affiche les anneaux d'impact de chaque ordre de tir dans l'éditeur quand l'entité est sélectionnée. |
GDC_ArtilleryFireOrder (un élément de la liste Fire Orders)
| Paramètre | Valeur par défaut | Description |
|---|---|---|
Shot Count (m_iShotCount) | 1 | Nombre d'obus pour cet ordre. Mettre -1 pour un tir infini (la mission ne passe pas à l'ordre suivant). |
Min Radius (m_fMinRadius) | 80 m | Rayon intérieur de l'anneau d'impact. Aucun obus ne tombe plus près que cette distance du centre _sauf dispersion du mortier_. 0 = disque plein (pas de zone morte au centre). |
Max Radius (m_fMaxRadius) | 90 m | Rayon extérieur de l'anneau. Aucun obus ne tombe plus loin _sauf dispersion du mortier_. |
Delay After (m_fDelayAfter) | 5 s | Délai avant l'ordre suivant. Ignoré pour le dernier ordre de la séquence. |
Cas d'usage
Cas 1 — Tout est défini dans l'éditeur
C'est le cas le plus simple, mais le moins flexible. Le mortier et son servant sont posés en éditeur, idem pour le prefab GDC_ArtilleryFireSupport.
Poser un mortier et son servant IA
Si vous ne savez pas comment affecter une IA en tant que servant d'un mortier, lisez d'abord : Attribuer un ou des servants à une arme fixe ou un équipage à un véhicule
Placer et configurer GDC_ArtilleryFireSupport
Dans le Resource Browser, ouvrez GDC AR Lib>Prefabs>AI>Artillery et glissez GDC_ArtilleryFireSupport.et dans la scène à l'endroit où vous voulez centrer la zone d'impact. Les anneaux de chaque ordre de tir sont centrés sur le gizmo du prefab.
Configurez les paramètres :
- AIGroup Name → le nom donné au groupe d'IA servant le mortier ou, si vous utilisez le composant TILW_VehicleCrewComponent pour le servant, le nom renseigné dans le champ Entity Name de ce composant (voir la section dédiée à TILW_VehicleCrewComponent dans l'article sur les armes fixes avec servant IA)
- Condition Flag → voir ci-dessous pour les différentes options de déclenchement
- Initial Delay → temps de réaction entre le déclenchement et le premier obus
- Ammo Type → choisissez le type de munition
- Fire Orders → ajoutez au moins un ordre de tir
Déclenchement par timer (sans TMF)
Laissez Condition Flag vide. La mission s'active au lancement de la partie, après le délai Initial Delay.
Déclenchement par flag TMF
Renseignez Condition Flag avec le nom d'un flag TMF (ex. GO_ARTY). La mission se déclenche dès que ce flag passe à true.
Cas 2 — La position sur laquelle la mission de tir est spawnée n'est pas connue à l'avance
Ici, le mortier et son servant sont posés en éditeur comme au Cas 1. Mais on veut pouvoir définir lors de l'exécution la position sur laquelle va être déclenchée la mission de tir (par exemple, sur les joueurs ). Autrement dit, la mission d'artillerie elle-même (le prefab
GDC_ArtilleryFireSupport.et) est lancée à l'exécution (par un TILW_PrefabSpawnerEntity ou une instruction TILW_SpawnPrefabInstruction).
Poser le mortier et son servant
Même procédure que pour le cas 1.
Créer un ou des prefabs dérivés de GDC_ArtilleryFireSupport
Puisque le prefab de tir est spawné dynamiquement, il ne peut pas être configuré directement dans la scène, en particulier pour le champ AIGroup Name. La solution est de créer un prefab dérivé de GDC_ArtilleryFireSupport.et en renseignant son champ AIGroup Name avec le nom du groupe d'IA servant le mortier.
Vous pouvez ainsi spawner ce prefab dérivé à l'exécution, à la position d'impact voulue (propriété Location name du spawner du TMF) via un TILW_PrefabSpawnerEntity ou une instruction TILW_SpawnPrefabInstruction.
GDC_ArtilleryFireSupport_TargetPlayers.et pour une mission ciblant les joueurs). Puisque ces prefabs vont contenir des paramètres spécifiques à votre mission (a minima, le AIGroup Name), il est conseillé de les enregistrer dans un dossier propre à votre mission, par exemple VotreModDeMission>Worlds>MissionArty>Prefabs>Arty>GDC_ArtilleryFireSupport_TargetPlayers.et.
TODO: article qui explique comment créer un prefab dérivé avec des paramètres différents du prefab original.
Cas 3 — Le mortier est spawné dynamiquement
Dans les cas 1 et 2, le mortier est déjà présent dans la scène, ce qui permet de le référencer facilement dans le champ AIGroup Name du prefab GDC_ArtilleryFireSupport ou de ses dérivés (cas 2). Mais parfois, on veut faire spawner le mortier lui-même dynamiquement. Dans ce cas, son nom n'est pas connu à l'avance.
Spawner le mortier et lui attribuer un nom
Placez un TILW_PrefabSpawnerEntity pour le mortier dans la scène et configurez-le :
- Prefab → le prefab du mortier (avec
TILW_VehicleCrewComponentconfiguré pour son équipage) - Set Entity Names → un nom unique, par exemple
mortier_dynamique
Le mortier spawné portera le nom mortier_dynamique dès sa création.
Créer un prefab dérivé de GDC_ArtilleryFireSupport
Même procédure que pour le cas 2, mais cette fois, renseignez le champ AIGroup Name du prefab dérivé avec le nom donné au mortier dans le spawner (ex. mortier_dynamique).
Spawner ensuite la mission de tir comme à l'accoutumée, en utilisant ce prefab dérivé.
GDC_ArtilleryFireSupport tente de résoudre le groupe IA. Utilisez des flags distincts ou un délai (Spawn Timings) pour garantir cet ordre — le champ Initial Delay du prefab de tir peut aussi absorber ce délai. Si vous spawnez un groupe avec le composant TILW_VehicleCrewComponent, assurez-vous que la case No Turret Dismount est cochée pour ce groupe.
Récapitulatif des trois cas
| Cas 1 — Tout en éditeur | Cas 2 — Mission spawnée dynamiquement | Cas 3 — Mortier et mission de tir spawnés dynamiquement | |
|---|---|---|---|
| TFM requis | Non (timer) / Oui (flag) | Oui | Oui |
| Mortier posé comment | Éditeur | Éditeur | Via un spawner (m_setEntityNames fixe son nom) |
| GDC_ArtilleryFireSupport posé comment | Éditeur | Via un prefab dérivé + spawner | Via un prefab dérivé + spawner |
| Valeur de AIGroup Name | Nom du mortier (éditeur) | Nom du mortier (éditeur, dans le prefab dérivé) | Nom attribué au mortier par son spawner (dans le prefab dérivé) |
| Position d'impact | Fixée en éditeur | Fixée au runtime (position du spawner) | Fixée au runtime (position du spawner) |
| Plusieurs missions vers la même batterie | Possible (plusieurs prefabs en éditeur) | Facile (plusieurs spawners, même prefab dérivé) | Facile (plusieurs spawners de mission, déclenchés après le spawn du mortier) |
| Déclenchement | Timer ou flag TFM | Au spawn (flag TFM) | Au spawn (flag TFM, après le spawn du mortier) |
| Spawner nécessaire | Non | Oui (un par mission de tir) | Oui (un pour le mortier + un par mission de tir) |
