Ici, on apprend comment créer des missions Arma Reforger avec le World Editor, Reforger Lobby et le framework de mission de TilW
Ce tutoriel explique la façon de créer une mission avec les mods TilW Mission Framework et Reforger Lobby. La façon de créer des missions avec d’autres modes de jeu (par exemple le Scenario Framework de Bohemia) est différente.
Nous avons fait une série de vidéos avec RackBoy qui couvrent les mêmes points :
Pour ceux d’entre vous qui préfèrent les explications concises mais efficaces, Til a fait un excellent tuto là : TilW Mission Framework
J’en profite pour envoyer plein de bisous à TilW, qui a créé (entre autres) ce framework simple, souple et puissant pour la communauté Global Conflict.
Installez-le à partir de Steam. Pour afficher Arma Reforger Tools, vous devez cocher la case “Outils” (ou Tools) de la bibliothèque, comme indiqué sur la copie d’écran.
[image perdue]
Quand vous lancez Arma Reforger Tools pour la première fois et que vous créez un nouveau projet, vous pouvez scanner le répertoire où vous irez chercher les mods. Au départ, nous vous conseillons de scanner le répertoire par défaut d’Arma Reforger : %user\Documents\My Games\ArmaReforger\addons
Les mods du jeu sont mis à jour automatiquement (et très fréquemment). Dans certains cas, on préfère contrôler la version des mods.
%user\Documents\My Games\ArmaReforgerWorkbench.
Les mods sont téléchargés dans %user\Documents\My Games\ArmaReforger\addons
%user\Documents\My Games\ArmaReforgerWorkbench\addonsTechniquement parlant, une mission est un mod. Vous allez donc créer un projet et publier le mod comme pour tout autre mod. Pour des raisons de bonne organisation, et surtout si vous n’avez pas séparé votre répertoire de mods du jeu de celui du WB, créez un répertoire de travail distinct, où vous voulez du moment que c’est bien rangé.
[image perdue]
Les 3 derniers mods fournissent en particulier :
Enregistrez votre projet dans votre répertoire de missions.
[image perdue]
Nous allons prendre comme exemple une mission que nous allons créer sur Everon.
Si vous n’avez jamais utilisé l'atelier Enfusion (Enfusion Workbench), aussi appelé “Arma Reforger Touls” ou “Touls” par les noobs , reportez-vous à ce tuto pour comprendre en 5 minutes de quoi on parle : L'éditeur de monde (World Editor) en 5 minutes
Dans le resource browser, vous allez vous retrouver avec tous les dossiers des mods du mod pack de Grèce de Canards. Pas de panique, on peut s’y retrouver facilement : les mods sont classés par ordre alphabétique et vous pouvez mettre des favoris.
[image perdue]
[image perdue]
Eden.ent par File - Load World.[image perdue]
Le monde (la scène principale) contenant tout ce qu’il faut se charge. Vous ne pouvez rien modifier ici, puisque ce sont les données du mod Arma Reforger, qui n’est autre que le jeu lui-même.
[image perdue]
[image perdue]
Vous l’aurez compris, une mission est une subscene (un monde dans le jargon Enfusion) d’une scène principale (un monde dans le jargon Enfusion) contenant déjà a minima un terrain et ses entités (ex. Everon) et votre monde à vous, appelé MaPremiereMission où vous pouvez faire tout ce que vous voulez (y compris les pires conneries).
[image perdue]
C’est bon, vous pouvez commencer à créer votre mission. Pas d’inquiétude si cela vous paraît compliqué la première fois. Avec un peu d’habitude, tout ça prend 1 ou 2 minutes.
On va mettre plein d’entités dans la scène (le monde). En permanence, vous devrez sélectionner des entités pour pouvoir paramétrer leurs attributs. C’est toujours plus simple de les sélectionner dans la hiérarchie que de les chercher (et surtout d’arriver à cliquer au bon endroit) dans la scène 3D. Donc, organisez la hiérarchie de façon à ce qu’il soit facile de retrouver une entité donnée.
Il y a plein de façons d’organiser sa hiérarchie. Au bout de quelques missions, vous trouverez celle qui vous convient le mieux. Pour commencer, nous vous proposons une structure de base qui a fait ses preuves.
Votre chantier avant de commencer :
[image perdue]
Votre chantier préparé pour les travaux :
[image perdue]
Pour créer un folder ou un layer, faites simplement un clic droit dans la hiérarchie. Par exemple, pour créer un folder à la base de la hiérarchie (MaPremiereMission), faites un clic droit sur cette entité.
Quelques explications sur cette hiérarchie :
Voilà, vous avez pris 10 minutes (et 2 minutes pour votre seconde mission) pour organiser proprement votre travail : vous vous économiserez énormément de charge cognitive pour la suite. Et au plus votre mission contiendra d’entités, au plus ces 2 minutes auront de retour sur investissement.
Pour la base de la mission, vous allez :
On va jouer les gentils américains contre les méchants communistes russes. Notre base de départ sera l’aéroport de Saint-Philippe.
Par la suite, nous ajouterons progressivement de la richesse.
Si vous n’avez pas encore compris cette foutue interface du World Editor, c’est le moment d’investir 15 minutes de votre précieuse vie pour la prendre en main.
Allez, on y va.
PerceptionManager.et dans le monde. On se fiche de l’endroit où on le glisse, on ne touchera jamais à ce manager.SCR_AIWorld_Eden.et dans le monde.PS_GameMode_Lobby.et dans le mondeCe prefab affecte les navmeshes (les maillages de navigation) aux IA. Sans ce paramétrage, vos IA ne se déplaceront tout simplement pas, ou de façon sporadique et inutile.
Vous allez donc paramétrer les attributs de deux composants comme suit :
[image perdue]
1: les composants de l’entité 2: les attributs (ou les propriétés) du composant sélectionné.
On va paramétrer comme suit :
NavMeshWorldComponent, attribut Navmeshfile : choisir GM_Eden.nmnNavMeshWorldComponent attribut Navmeshfile : choisir GM_Eden_vehicles.nmnNavmeshfile à LowResEden.nmn)TILW_MissionFramework.et dans le monde⇒ Nous allons pas mal tripoter ces deux entités par la suite, car c’est avec elles qu’on fait le plus gros de gestion de la mission.
Group_US_RifleSquad.et dans le monde, là où vous voulez que les joueurs spawnent.Voilà, vous avez vos joueurs !
[image perdue]
Group_USSR_RifleSquad.et dans le monde, là où vous voulez que les IA hostiles spawnent.Voilà, vous avez déjà une mission fonctionnelle !
C’est le moment de vérifier que tout fonctionne correctement avant de se lancer dans des trucs plus sophistiqués.
Lancez la mission en vous assurant que l’option Play from Camera Position est désactivée
[image perdue]
Si vous n’avez pas merdé, vous allez atterrir là :
[image perdue]
Un clic sur la flèche verte et vous verrez le joli lobby de Reforger Lobby
[image perdue]
Nous allons faire des choses simples pour commencer :
Tout cela va se faire tout simplement avec des waypoints.
Dans l’étape précédente, nous avons posé un groupe d’IA hostiles sur Saint-Philippe sans waypoint défini. Ce groupe sera plutôt offensif : il se portera au combat si la zone de combat est relativement proche de sa position (quelques centaines de mètres) et si le combat dure plusieurs minutes. Si vous ne mettez que des groupes de ce type, toutes les IA finiront par converger sur les combats et videront progressivement la zone qu’elles occupent initialement.
Poser les IA sans waypoint permet de mettre une certaine pression offensive sur les joueurs. Mais une fois ces IA neutralisées, il n’y aura plus d’hostiles sur le terrain à plusieurs centaines de mètres à la ronde autour de la dernière zone de combat, à part peut-être un ou deux pax qui se sont perdus.
Vous voulez souvent que certaines zones soient défendues. Pour cela, il suffit d’affecter un waypoint de défense à un groupe d’IA.
[image perdue]
AIWaypoint_Defend.et sur la zone à défendre. Renommez-le en vous donnant une convention de nommage pratique. Ici, je l’ai appelé WP_def_1.[image perdue]
[image perdue]
Vous pouvez modifier le rayon de la zone de défense en paramétrant l’attribut Completion Radius du waypoint. Par défaut, il est paramétré à 30 mètres.
Si vous réduisez le rayon d’un waypoint Defend à la taille d’un bâtiment, les IA affectées à ce waypoint resteront dans ce bâtiment, en occupant potentiellement les étages (et éventuellement ses alentours immédiats). Il faudra donc venir les déloger.
Voilà : sauvegardez et faites-vous plaisir en testant. Les IA hostiles vont se répartir sur les différents couverts de la zone de défense et tenir leurs positions même en cas d’attaque proche.
En mode Game Master, testez différentes situations pour voir comment elles se comportent.
AIWaypoint_Cycle.et, on le nomme proprement (ex. WP_Cycle_patrol_1). L’endroit où est posé le WP Cycle n’a pas d’importance, mais comme on aime les choses bien rangées, on le pose à proximité du groupe de patrouille.AIWaypoint_Patrol.et pour chaque point de patrouille ([image perdue]
Pour le moment (AR 1.6.108), BI ne fournit pas de moyen de poser un prefab de véhicule avec son équipage. Nous allons donc utiliser le spawner de TilW.
Une autre façon de procéder est d’utiliser un spawner qui va faire apparaître (en anglais : to spawn) les entités dans le jeu avec certains paramètres et/ou selon certaines conditions. Pour les véhicules, pour le moment, nous n’avons pas le choix : il faut paramétrer l’équipage, ce qui n’est possible qu’avec un spawner. Nous verrons plus loin que spawner des entités permet de faire plein de choses intéressantes (QRF, spawn aléatoire, spawn sur condition, etc.).
TILW_PrefabSpawner.et à l’endroit où nous voulons que le véhicule apparaisse (ou spawne, comme vous voulez)[image perdue]
[image perdue]
1: On choisit le prefab du véhicule
2 : On paramètre son équipage, sans oublier de cocher No turret dismount pour forcer le tireur à rester à son poste pour nous pourrir la gueule.
Au passage, on en profite pour donner un nom qui pourra être réutilisé par la suite en paramétrant la propriété Entity Name. Saisissez, par exemple vehA. Attention, vous ne devez pas mettre ici le même nom que le nom que vous avez choisi dans la hiérarchie (veh_1), sinon le framework de TilW va merder.
Un trigger (déclencheur, en français) est une entité qui vérifie à intervalle périodique une condition dans le volume qu'il occupe dans le monde. Une fois que cette condition est remplie, le trigger lève un drapeau (“flag”, en anglais). D’autres entités peuvent surveiller ce drapeau et, une fois ce drapeau levé, faire des choses.
Nous allons utiliser des triggers du framework de TilW parce que ce sont les entités de son framework qui vont réagir à leur levée de drapeau.
Le framework de TilW fournit trois prefabs de triggers qu'on trouve dans TilwMissionFramework>Prefabs>Logic>Triggers :
TILW_ExtractionTrigger.et : ce prefab lève un drapeau lorsque est atteinte la proportion (ratio threshold) de soldats d'une faction (joueurs et/ou IA, selon le paramétrage) dans le trigger par rapport à tous les soldats de la même faction dans le mondeTILW_FactionTrigger.et : ce prefab lève un drapeau lorsque est atteinte la proportion d'une faction dans le trigger par rapport aux autres factions dans le triggerTILW_PresenceTrigger.et : ce prefab lève un drapeau lorsque est atteinte la proportion d'entités nommées dans le trigger par rapport au total de ces entités dans le monde
Nous allons prendre comme exemple le prefab TILW_FactionTrigger.et, c'est celui qui sera le plus souvent utilisé.
Comme à l'accoutumée, faites glisser le prefab dans le viewport. Placez votre gizmo (le centre du trigger) au centre de la zone que vous voulez tester avec le trigger. Ci-dessous, le détail des attributs du trigger.
[image perdue]
1: Trigger Query. Ici, vous pouvez paramétrer le rayon (radius) du trigger. La demi-sphère dans le viewport matérialise la zone testée.
2: Trigger Condition. Ici, ce sont les conditions testées par le trigger :
3: Trigger Status.
4: Trigger Effect.
D'autres entités du framework de TilW permettent de lever un drapeau, par exemple selon le ratio de blessures d'une IA ou d'un joueur. La référence des entités qui lèvent un drapeau (en) est consultable sur le wiki GitHub du framework.
Le framework de TilW repose sur la notion d'événement de mission. Chaque événement déclenche une ou plusieurs actions, telles que spawner un prefab, afficher un message, modifier des drapeaux, etc. Un événement est lui-même déclenché par une condition. Dans le cas le plus courant et le plus simple, il s'agit de la levée d'un drapeau par un trigger… Vous voyez où je veux en venir, je pense .
Ce que nous allons faire :
Pour définir où va spawner la QRF, le plus simple est de poser une generic entity sur la position en question.
[image perdue]
1: Sélectionnez l'onglet Create en bas du panneau de gauche
2: Sélectionnez une generic entity
3: Faites-la glisser dans le viewport sur la position où vous voulez que la QRF spawne.
Souvenez-vous : cette entité sera créée dans le layer actif dans votre hiérarchie. Dans mon cas, je la range dans game/triggers, mais libre à vous de vous organiser comme cela vous semble le mieux.
Nommez cette entité, par exemple QRF_Spawn_Pos car nous devrons utiliser le nom de cette entité par la suite.
Faites comme à l'accoutumée :
AIWaypoint_SearchAndDestroy.et dans le mondeOn va maintenant paramétrer l'entité TilW_MissionFramework_1 (le _1 est généré automatiquement, il peut être différent si, par exemple, vous avez posé plusieurs fois le prefab) :
[image perdue]
Pour ce tuto, on fait simple. Et je vous conseille, pour vos premières missions, de faire simple . Ajoutez une condition de type TILW_LiteralTerm.
[image perdue]
En clair, l'événement attend qu'un drapeau avec un certain nom (un “Literal Term”) se lève. Dès qu'un drapeau avec ce certain nom est levé, l'événement va exécuter les instructions que nous allons paramétrer juste après. Si vous avez bien suivi, ce drapeau va être levé par le trigger paramétré précédemment. Ce drapeau a le nom de US_PRESENCE, si vous avez un peu de mémoire (sinon, remontez quelques lignes plus haut dans Trigger Effect). Entrez donc US_PRESENCE dans la propriété Flag Name de la condition.
Nous allons aller un peu plus vite parce qu'il est 11h30 et que le cours finit à midi (et qu'on a tous la dalle !!!).
TILW_SpawnGroupInstruction.TILW_AssignWaypointInstructionLe paramétrage de l'entité TILW_MissionFramework_1 devrait ressembler à ça :
[image perdue]
Vous pouvez trouver la référence de toutes les instructions (en) sur le wiki GitHub de TilW
Nous avons vu les bases pour la mécanique de mission.
Un bon briefing, ça s'appuie sur du texte et sur des marqueurs.
[image perdue]
Rien de magique : on va glisser des prefabs dans le monde, en sélectionnant le bon layer dans notre hiérarchie, genre le layer briefing.
Dans Reforger Lobby > PrefabEditable > Mission Description, on va chercher le prefab EditableMissionDescription.et et le glisser dans le monde.
[image perdue]
1 : le nom de l'onglet dans le briefing
2 : le texte de l'onglet
3 : la visibilité en fonction de la faction et du niveau de briefing
Et on ajoute l'ordre d'affichage dans le briefing par la propriété Order.
Ce fichier est indispensable pour publier la mission. Le plus simple est de dupliquer un fichier de mission existant…
[image perdue]
…puis, de le modifier :
[image perdue]
Ci-dessous, la correspondance entre les champs du fichier de configuration et les différents écrans de preview. Attention, ces éléments ne s'affichent qu'une fois le mod publié et chargé sur un serveur !
[image perdue]
[image perdue]