Find help on the FRENCH REFORGER MOD discord if you need ✅ Check our progress about this wiki here 📜

2. Creation of a vehicle and all aspects of the import and its integration into ENFUSION

Tutorial for importing and integrating a vehicle from an existing 3D model.

This is the tutorial for the 1st integration of your future vehicle. This tutorial will help you get your vehicle up and running. The fact that it's beautiful and 100% functional, as well as having cool features, is covered in the other categories that follow this one.

Prerequisite:

Preliminary Steps

Information: This tutorial will be based on a French army vehicle, the VBMR-L Serval. The 3D model is from Arma Mod France Studio where i'm Enfusion Integrator.

1. Create Necessary Folders

To start your project correctly, create a folder specifically for your project to centralize your files and other resources.

Once this folder is created, make two subfolders:

2. Create an ENFUSION Project

Once the project is created, open it in your file explorer (Windows), and bohemia interactive recommend creating this folder structure:

image.png

Reminder: Rectangles represent folders. Bubbles & clouds represent a file or other item.

And, of course, replace "SampleCar_01" with the name of your vehicle, following this format.

Once this is done, you can move on to the next step.

2. The 3D Model

The next step is to find an appropriate 3D model. Here are some tips for choosing well:

3. Vehicle creation "RoadMap"

drawing-5-1733667161.png

If you need to, you can go back at any stage to the previous stages to achieve a good final result.

3D Model preparation

Introduction

For create a usable 3D model, you have to adapt it for Enfusion. For exemple, Split somes vehicle parts like Wheel and lights. Dans une étape future, nous ferons le squelette du véhicule ainsi que les vertex groups pour rendre notre véhicule plus vivant avec des animations.

ATTENTION ⚠️: Vérifier MAINTENANT si votre modèle a les bonnes dimensions en jeu (échelle) pour éviter de devoir tout recommencer depuis cette étape si votre modèle n'a pas les bonnes dimensions ⚠️

1. Split parts in Blender

C'est simple, sélectionnez votre 3D en mode objet, passez en mode Edition, puis sélectionnez les faces ou arêtes ou points sur votre modèle 3D (maintenez shift si vous voulez sélectionner plusieurs zones) et faite clic droit et separate puis selection:

image.png

image.png

Une fois cela fait, vous savez comment séparer vos feux de votre modèle 3D principal. Faite les pour toutes les surfaces qui vont émettre de la lumière.

Pour les feux, faite en sorte qu'ils soit indépendants pour faire en sorte que les joueurs peuvent les casser.

image.png

Une fois toutes vos lumières séparés, copiez les toutes et ouvrez une nouvelle instance blender, puis, coller le tous dans votre nouveau blender. Une fois cela fait, supprimez ce que vous avez copier coller dans le projet principal du véhicule et sauvegardez les deux projets.

Après avoir fait les lumière, faite de même pour les vitres.

Faite également de même avec les roues.

2. Création des colliders

Information a propos des colliders sur ENFUSION:

Les colliders servent a donner une physique a un modèle 3D. Pour ce faire, "on ne peut pas utiliser le véhicule en lui même". On doit passer soit par des bouts de 3D et/ou par des boîtes plutôt simples pour éviter de erreurs.

Dans la configuration des colliders pour un véhicule, il y a différend critère qui entre en jeu:

Layer Presets (type)

Type de forme

Description

FireGeo

3D du véhicule

Permet de gérer les collisions avec les balles. Vous pouvez régler le type protection et sa puissance ainsi que les particules qui vont apparaître quand les joueurs vont tirer dessus.

VehicleSimple

Forme la plus simple possible, si besoin, découper le véhicule en plusieurs colliders

Permet de gérer les collisions avec les véhicules et le terrain.

VehicleComplex

Forme simple, reprendre des bouts de 3D du véhicule comme sa base suffit.

Permet de gérer les collisions avec les autres véhicules et les objets, bâtiments...

ViewGeo

Doivent ressembler a ceux du FireGeo

Permet d'indiquer aux IA où tirer et les limites du véhicule.

Mine

Simple, cylindre. Au niveau des roues sur le modèle principal

Pour activer les mines.

Pour chaque collider, vous pouvez y affecter un Game Material et un Layer Presets.

image.png

Le Game Material n'est pas obligatoire sauf pour le FireGeo et ViewGeo.

Un collider est tout le temps nommé avec un préfix, chacun a son but précis et a un rôle dans l'optimisation:

image.png

Voici un graphique qui monte quel type de colliders est optimisé ou pas:

image.png

Les colliders VehicleSimple seront toujours en UCX ⚠️

Créer vos colliders:

Commencer par créer une nouvelle collection "Colliders".

Pour ce faire, vous devez au minimum faire un collider par Layer Presets (cf. plus haut). Pour les formes simples, utilisez un cube pour faire vos formes, vous pouvez sans soucis en utiliser plusieurs comme on peut le voir sur le screen en dessous.

image.png

Pour les colliders simple, ne pas ajouter ni de face, ni d'arêtes supplémentaire. Pour les colliders normaux, vous pouvez récupérer des bouts de votre modèle 3D.

ATTENTION: Pour le ViewGeo et le VehicleComplex, les bouts de 3D ne doivent pas être trop complexe.

image.png

(Exemple avec cette image: J'ai volontairement pas mis les détails pour le collider VehicleComplex)

Pour réaliser les colliders des roues, il faut un VehicleComplex, un FireGeo et un FireView (Cf. plus haut pour plus d'information).

3. Création du squelette

Un squelette va permettre de définir des positions et pourvoir animer notre véhicule.

Voici quelques règles importantes a respecter pour que le véhicule ne soit pas buggé:

image.png

@TODO: Exemple d'un squelette.

First Import of all 3D & Textures


Introduction

Pour exporter ce qu'il y a dans votre projet Blender vers ENFUSION, vous devez respecter quelques règles. On verra aussi comment importer & correctement configurer les textures.

1. Exporter les modèles 3D

Tout d'abord, supprimez ce qui ne vous sert pas ou qui est déjà présent dans un autre projet blender.

Par la suite, on va définir une liste de chose qu'on veut que Blender exporte et d'autres pas. Pour ce faire, a chaque fois que vous voudrez exporter votre projet Blender vers Enfusion, sélectionnez tout (en mode objet) avec la touche A ou CTRL+A puis, allez dans File/Export/FBX.

image.png

Une fois cela fait, on va définir ces paramètres:

image.png

Tips: Vous pouvez enregistrer ces paramètres en cliquant sur le petit + au niveau de Operator Presets pour enregistrer le preset de paramètre
image.png

Une fois cela fait, nommez le par le nom de votre véhicule. Puis exportez le dans:

{Le nom du dossier de votre véhicule}/Assets/Vehicles/{Le nom de votre véhicule}/

Pour les modèle 3D des lumières, nommez les {Type de lumière}_{Initial en Anglais du coté}01 ou 02 ou 03. Exemple: Headlight_L01 pour le phare gauche N°1. Puis exportez les dans::

{Le nom du dossier de votre véhicule}/Assets/Vehicles/{Le nom de votre véhicule}/VehParts/Lights

Pour les modèle 3D des vitres, nommez les Glass_{Initial en Anglais du coté}01 ou 02 ou 03. Exemple: Glass_L01 pour le phare gauche N°1. Puis exportez les dans:

{Le nom du dossier de votre véhicule}/Assets/Vehicles/{Le nom de votre véhicule}/Dst

Une fois cela fait, dans enfusion, faite clic droit sur un modèle et faite Register And Import puis cliquez sur As Model.

image.png

Conseil: Pendant l'import, Enfusion va créer les matériaux dans le dossier "Data". Il est possible qu'il y ai des duplicata, vous pouvez ré-utiliser.

Il est important que vos modèles 3D et vos matériaux ai des noms cohérant et logique pour être plus à l'aise avec leurs intégrations.

2. Importer les textures

Il vous suffit de déposer vos textures dans le dossier Data et cliquer sur Yes to all quand Enfusion va vous demander une autorisation:

image.png

Conseil: Créer un dossier "Textures" pour mettre vos .png

Quand vous allez importer, ENFUSION va créer des fichier textures (.edds), dans ces fichier, vous pouvez sélectionner un tas de paramètre d'import pour votre texture

Conseil: Ouvrez votre .edds puis allez dans la catégorie Import Settings et assurez vous que l'option "Color Space" est bien réglé sur SRGB. Si elle ne l'est pas, votre texture aura l'air pâle et sans beaucoup de couleur.

Une fois vos textures importés, vous devez configurer des matériaux (.emat -> Enfusion Mat). Ces matériaux servent a définir un tas de paramètre pour définir comment la texture va se comporter en jeu (Exemple: Réflexion de la lumière, Emissivité...).

Les matériaux sont crée que quand vos modèles sont importés, commencez par importer vos modèle avant de créer les matériaux.

Conseil: Pour éditer un matériaux et voir en temps réel les modifications sur votre modèle, vous pouvez ouvrir le .xob de votre modèle et cliquer sur le matériaux pour le modifier et voir en temps réel les modifications.
image.png

Il ne vous reste plus qu'a mettre aux bons emplacements les textures (BCR: Couleur, NMO: Réflexions et modification pour "les jeux de lumières") et régler votre matériaux:

image.png

Vous pouvez également changer le type de matériaux en cliquant sur "Change Class" en haut à droite. Il en existe beaucoup mais pour les véhicules, il y a MatPBRBasicGlass qui permet de réaliser les matériaux des vitres et de régler par exemple, la distorsion de la lumière. Pour chaque class de matériaux, il existe des paramètres propres a chacun.

Création des préfabs

Introduction

Dans cette partie, nous allons créer les préfabs de base pour faire en sorte que votre véhicule soit jouable.

1. Création du préfab du véhicule

Bohemia a mis à disposition aux moddeurs, des préfabs dis "base". Il permettent d'avoir une base tous le temps à jour avec tous les components (comportement) que le véhicule en lui même a besoin.

Il en existe plusieurs type qui remplissent des missions différentes:

Nom

Description

Wheeled_base.et

Préfab base pour créer un nouveau type de véhicule. Ne pas utiliser pour créer votre véhicule mais pour créer un nouveau type de véhicule

Wheeled_APC_base.et

Préfab base pour créer un véhicule de type Amphibie. Il a été utilisé pour le BTR70 par exemple.

Wheeled_Car_base.et

Préfab base pour créer un véhicule simple a quatre roues. Le plus commun.

Wheeled_Trunk_base.et

Préfab base pour créer un camion.

Helicopter_base.et

Préfab base pour créer un hélicoptère.

Bohemia a également mis à disposition aux moddeurs, des préfabs dis "base" pour ce qui va être attaché au véhicule comme les roues ou encore des fonctionnalités comme un module sur un camion par exemple. Il permettent d'avoir une base tous le temps à jour avec tous les components (comportement) que le module en lui même a besoin.

Pourquoi séparer des parties de mon véhicule 🤔

Cette possibilité est très pratique si votre véhicule possède plusieurs variantes que vous souhaitez également intégrer dans enfusion. Cela permet d'éviter comme dans Arma 3 d'avoir un modèle 3D par version et donc un préfab a refaire de 0 pour chaque version.

Il en existe plusieurs type qui remplissent des missions différentes:

Nom

Description

VehicleWheel_base.et

Permet de créer le préfab d'une roues quelconque (camion, voiture, hélicoptère...)

Vehicle_Part_base.et

Permet de créer un préfab d'un modèle 3D quelconque qui va être par la suite attaché au préfab du véhicule.

DestructibleVehicleGlass_Base.et

Permet de créer les vitres destructibles du véhicule.

Vehicle_Canvas_Base.et

Permet de créer des parties de toit sur les véhicules comme par exemple une bâche.

Vehicle_Cargo_Base.et

Permet de créer des sièges pour s'asseoir dans votre véhicule (il est utile sur des siège qui sont présent ou pas en fonction des versions de votre véhicule).

Vehicle_Rotor_Base.et

Permet de créer le préfab du/des rotors de votre hélicoptère.

Bien sûr, il en existe beaucoup d'autres mais il est impossible de tous les citer ici, vous pouvez les retrouver dans ici.

Il est également important de noter que des configurations sont également disponibles dans Core/Configs. On verra un peu plus tard comment les utiliser dans notre véhicule pour nous simplifier la tâche.


Une fois que vous avez fait vos sélections parmi les préfab base dont vous avez besoin, il suffit de faire clic droit et "Inherit in {YourAddon}" et de donner un nom a vos préfabs.

Si vous aller avoir plusieurs versions de votre véhicule dans ENFUSION, il est préférable de nommer votre préfab véhicule: THENAMEOFYOURVEHICLE_Base.et

Une fois cela fait, oubliez pas de déplacer vos préfabs dans la hiérarchie que vous avez crée précédemment ✅

2. Création du préfab des roues:

Pour ce faire, recherchez "VehicleWheel_base.et" dans le ressources explorer puis faites clique droit puis, "Inherit in {YourAddon}" et nommez le préfab de vos roues: "{YOURVEHICLENAME}_Wheel.et".

Une fois cela fait, ouvrez votre préfab de roues, puis allez dans le Component "Mesh Object" puis dans le paramètre object, faites les trois petit points puis sélectionnez la 3D de votre roue.

Après il faut configurer les dégâts, pour ce faire recherchez la roue d'un autre véhicule puis mettez la à côté de votre roue, puis dans votre roue, allez dans le component "SCR_DamageManagerComponent" puis dans le paramètre Addional hit zones", faites le + pour créer une nouvelle zone de dégâts puis nommez la Wheel. Une fois cela fait, allez dans le même component dans la roue que vous avez pris d'un autre véhicule puis faites clic doit, copier sur la Hit Zone de la roue du véhicule puis retournez dans votre roue puis faites coller dans la hit zone de votre roue.

Il ne vous reste plus qu'a supprimer la roue de l'autre véhicule et à sauvegarder.

Si tout s'est bien passé, la roue n'a plus de carré rouge autour de votre roue. Si c'est le cas, votre roue a correctement été crée ✅


A1 - Configuration de base et annexes d'un véhicule

Informations à propos de l'organisation du wiki sur la configuration des préfabs de véhicules

Le wiki à partir de cette page va être organisé en fonction d'un code simple pour vous repérer dans le niveau de difficulté et votre progression 🔧

A=Configuration de base pour un véhicule
B=Configuration pour un véhicule qui nécessite un minimum de réflexion et qui dépend de votre véhicule.
C=Configuration pour un véhicule qui est complexe et qui nécessite de la recherche personnelle et qui varie en fonction des véhicules.
D=Système complexe pour un véhicule qui n'est pas généralisé à tous les véhicules et qui n'est pas évident.

Il est important de savoir que tout est possible, mais ce système de code permet de vous donner une idée de la difficulté. La seule limite que vous avez est l'habitude ainsi que l'expérience avec le workbench et blender, on ne peut pas tout dévoiler car ENFUSION et Blender restent des logiciels complexes ✅

Tous les préfabs non commenté dans cette page ne sont pas a modifier pour l'instant (si vous suivez le fil rouge du wiki) ou simplement pas a modifier sur toute l'intégration de votre véhicule (potentiel exception a des systèmes personnalisés).

Introduction

Dans cette page, nous allons découvrir les components qui permettent de réaliser un véhicule de base. A la fin de cette page, votre préfab base véhicule aura votre modèle 3D assigné ainsi que des configurations de base pour votre véhicule.

Il faut savoir que dans l'intégration d'un véhicule, ça ne sert à rien de réinventer la roue, on vous conseil de vous baser sur les véhicules vanilla ainsi que sur les fichiers de configuration déjà existant.

Après cette page, le véhicule ne sera pas encore jouable.

MeshObjet

Cliquez pour en savoir plus

Ce component permet de gérer le rendu de votre modèle 3D dans le préfab.

Il vous suffit de définir dans le paramètre "Object", le chemin de votre modèle 3D de véhicule principal.

Vous pouvez ici régler un grand nombre de choses en lien avec l'affichage du modèle 3D en lui même.

Il y a également le menu des matériaux, ce menu va nous être utile pour créer des variants de votre véhicule en lui changeant de camouflage par exemple.

image.png

RigidBody

Cliquez pour en savoir plus

Le component RigidBody permet de régler tout ce qui est en lien avec le modèle 3D dans le jeu, cet à dire les collisions qu'il va avoir, sa masse, son centre de masse...

Avec les préfabs base, tout est déjà configuré pour un véhicule de son type. Vous pouvez déjà modifier le paramètre masse pour que la masse dans Arma Reforger correspondent avec celle dans la vraie vie.

ATTENTION: Le réglage du centre de la masse et du Massless inertia se font que une fois le véhicule fonctionnel ⚠️
Si vous grillez des étapes, vous risquez de définir une valeur biaisé qui fait bugger la simulation de la masse.

Les valeurs du centre de la masse et du Massless inertia doivent être ronde pour éviter tous soucis: 1.432 ➡️1.4

image.png

SCR_VehicleSoundComponent

Cliquez pour en savoir plus

Ce component va servir a assigner des sons à notre véhicule.

A part si vous voulez créer des sons personnalisés, je vous conseil de récuperer la même configuration que dans un véhicule vanilla, recherchez dans la barre de recherche un véhicule similaire qui existe dans Arma Reforger puis copiez collez les propriétés de ce component.

La liste Filenames permet de définir la liste des projets son que le véhicule va utiliser.

Les sound Points permettent de définir une position ou les sons vont apparaître. PS: c'est le même fonctionnement pour les positions wheels.

Et pour finir HitZoneStateSignalData permet de définir une liste de signaux a donner aux projets son en fonction de l'état du véhicule (Ex: Roue abîmé).

image.png

ActionManagerComponent

Cliquez pour en savoir plus

Ce component va nous servir à définir une liste d'actions disponibles pour notre véhicule.

Tips: Faites clic droit sur le component ActionManagerComponent puis cliquez sur toggle context(s) radius visualization et toggle context(s) visibility angle visualization pour rendre la tâche de créer des actions beaucoup plus simples.

Il faut savoir que les noms des actions ne sont que superficiel, vous pouvez très bien les nommer comme vous le voulez, mais dans tout le court de ce topic, les actions auront les noms définit plus bas.

image.png
Aperçu avec les aides activées

Ce component est découpé en deux parties:

image.png

Pour créer une nouvelle action, il vous suffit de cliquer sur le + à coté de la ligne "Action Contexts". Voici la description des options d'une action:

Pour le cas des actions sur un véhicule, ne mettez pas de titre ou de description aux actions depuis sur l'UI Info, on verra plus tard pour que l'action ai un texte traduis et une icône.

image.png


Une fois que vous savez tout ça, il ne vous reste plus qu'a créer ce minimum d'actions dans la catégorie Action Contexts:

Actions spécifique pour chaque compartiment:

Context Name

Position & description

driver

Action qui permet de changer de siège ou de monter si la porte est ouverte en place conducteur.

gunner

Action qui permet de changer de siège ou de monter si la porte est ouverte en place tireur. Placez cette action au niveau du siège tireur.

commander

Action qui permet de changer de siège ou de monter si la porte est ouverte en place chef de char. Placez cette action au niveau du siège chef de char.

passenger_l01,passenger_m01, passenger_r01, ...

Action qui permet de changer de siège ou de monter si la/les porte(s) est ouverte en place passager gauche, milieu ou droit. Placez cette action au niveau des sièges respectif de chaque action.

passenger_l02,passenger_m02, passenger_r02, ...

Action qui permet de changer de siège ou de monter si la/les porte(s) est ouverte en place passager arrière gauche, milieu ou droit. Placez cette action au niveau des sièges respectif de chaque action.

Actions extérieure pour les portes:

Context Name

Position & description

door_L01, door_L02 ...

Action pour une porte simple, dans ce cas des portes situés à la gauche du véhicule.

door_R01, door_R02 ...

Action pour une porte simple, dans ce cas des portes situés à la droite du véhicule.

door_back_left, door_back_right ...

Action pour une porte simple,

dans ce cas des portes situés à l'arrière du véhicule, soit à

gauche soit à droite


Actions intérieure pour les portes:

Context Name

Position & description

door_L01_int, door_R02_int ...

Action pour une porte simple, dans ce cas des portes situés à la gauche et à l'intérieur du véhicule.

door_R01_int, door_R02_int ...

Action pour une porte simple, dans ce cas des portes situés à la droite et à l'intérieur du véhicule.

door_back_int

Action pour une porte simple, dans ce cas des portes situés à l'arrière du véhicule et à l'intérieur. En général, une seule action suffit si vos deux portes sont proches.

Conseil: Définissez un Radius de visibilité pour les actions des portes. Par exemple, définissez un radius de 90°, vers l'intérieur pour les actions door_L01_int. Cela évite que l'action intérieur soit visible depuis l'extérieur.

Actions extérieure du véhicule:

Context Name

Position & description

push_front

Action qui permet de pousser le véhicule depuis l'avant. Il faut la placer à l'avant, au niveau d'une zone sur laquelle les joueurs peuvent pousser le véhicule.

push_rear

Action qui permet de pousser le véhicule depuis l'arrière. Il faut la placer à l'arrière, au niveau d'une zone sur laquelle les joueurs peuvent pousser le véhicule.

Unflipper

Action qui permet de retourner le véhicule depuis n'importe quel direction. Il faut la placer en x=0 y=1 z=0.

fuel_cap

Action qui permet de remplir le réservoir du véhicule. Placez la au niveau de la trappe à essence.

engine_lid

Action qui permet de réparer le moteur du véhicule. Placez la au niveau d'une zone accessible par les joueurs, au niveau du moteur.

hood_front

Action qui permet de réparer le véhicule en globalité (boîte de vitesse, transmission...). Placez la au niveau d'une zone accessible par les joueurs, au niveau du capot en général.

actions possibles réalisable par le conducteur:

Context Name

Position & description

starter_switch

Permet de démarrer le véhicule. Placez la au niveau du dispositif de démarrage du véhicule.

light_switch

Permet de contrôler les lumières du véhicule. Placez la au niveau du dispositif d'allumage des feux du véhicule. PS: Vous avez la possibilité de séparer l'action pour allumer les feux de route en créant une nouvelle action nommée:

light_HiBeam

light_hazard_switch

Permet de contrôler les feux de détresse du véhicule. Placez la au niveau du dispositif d'allumage des feux de détresse du véhicule.

handbrake

Permet d'activer ou désactiver le frein parking du véhicule. Placez la au niveau du frein parking du véhicule.

light_cabin_switch

Permet d'activer ou désactiver les lumières intérieures du véhicule. Placez la au niveau du bouton pour allumer les lumières intérieures.



Une fois ces actions créés, il faut qu'on leurs affecte une tâche qu'elle vont réaliser une fois actionné par le joueur. Pour ce faire on va utiliser les Additional Actions. Une additional Action est simplement un script qui va être assigné a une ou plusieurs actions et qui va remplir définir ce que font les actions quand elle sont activés, en cours de chargement ou encore annulé par le joueur. C'est également dans les additional Actions qu'on va définir une liste de paramètre pour l'apparence des actions (texte traduis, icône, temps de chargement...).

Pour affecter une/des action(s) qu'on a crée plus haut, il suffit de l'ajouter dans la liste Parent Context List en faisant + et en sélectionnant l'action(s) concernée(s)

image.png

Pour des raisons de cohérence entre les véhicules, il est fortement conseillé de prendre en modèle un véhicule d'Arma Reforger et de faire clic droit puis copier sur une additionnal action dans un véhicule vanilla puis clic droit et coller dans sur une additionnal action, dans votre véhicule. Cela permet d'éviter d'avoir des soucis de configuration ou encore une cohérence dans les apparences de vos actions et celle des véhicules déjà existants.

ATTENTION: Lors du copier/coller, les class dans ce que vous avez copiée ne sont pas copiée, il faut copier/coller l'addional action et les class dans l'addional action ⚠️

Les actions pour les portes et compartiments seront configurée plus tard dans un autre component.

Pour les véhicules, il en existe beaucoup, mais voici les plus importantes:

Action(s) a affecter

Nom de l'additional action

Description et informations

fuel_cap

SCR_RefuelAtSupportStationAction

Permet de remplir de carburant le véhicule.

Dans les préfabs de base pour les véhicules, ces additionals actions sont déjà crée, il vous suffit de changer l'action déjà affecté par une action similaire ou la même avec une syntaxe différente.

SCR_RepairAtSupportStationAction (x4)

Permet de réparer certaines parties du véhicule en fonction de l'affectation de l'action.

Unflipper

Unflipper

SCR_UnflipVehicleAction (x2)

Permet de retourner le véhicule si il se trouve sur le toit.

push_front, push_rear

SCR_PushVehicleAction

Permet de pousser le véhicule.

handbrake

handbrake

SCR_ToggleHandbrakeAction (x2)

Permet de tirer le frein parking du véhicule.

starter_switch

starter_switch

SCR_EngineAction (x2)

Permet de démarrer le véhicule.

Une action au choix au niveau d'une zone potentiel de stockage, exemple:

push_rear

door_back

SCR_OpenVehicleStorageAction

Permet d'ouvrir l'inventaire du véhicule.

Une action au choix au niveau d'une zone potentiel de stockage, exemple:

push_rear

door_back

SCR_ResourceContainerVehicleLoadAction (x2)

Permet en mode de jeu conflit, de placer du supply dans le véhicule. (Optionnel).

Vos actions sont désormais entièrement configurées et la plupart sont déjà prête à l'emploi ✅

A2 - Création des compartiments et suite de la configuration des actions

Informations à propos de l'organisation du wiki sur la configuration des préfabs de véhicules

Le wiki à partir de cette page va être organisé en fonction d'un code simple pour vous repérer dans le niveau de difficulté et votre progression 🔧

A=Configuration de base pour un véhicule
B=Configuration pour un véhicule qui nécessite un minimum de réflexion et qui dépend de votre véhicule.
C=Configuration pour un véhicule qui est complexe et qui nécessite de la recherche personnelle et qui varie en fonction des véhicules.
D=Système complexe pour un véhicule qui n'est pas généralisé à tous les véhicules et qui n'est pas évident.

Il est important de savoir que tout est possible, mais ce système de code permet de vous donner une idée de la difficulté. La seule limite que vous avez est l'habitude ainsi que l'expérience avec le workbench et blender, on ne peut pas tout dévoiler car ENFUSION et Blender restent des logiciels complexes ✅

Tous les préfabs non commenté dans cette page ne sont pas a modifier pour l'instant (si vous suivez le fil rouge du wiki) ou simplement pas a modifier sur toute l'intégration de votre véhicule (potentiel exception a des systèmes personnalisés).

Introduction

Dans cette page, nous allons découvrir comment créer une liste de porte et de compartiment (places assises). Pour par la suite, configurer le reste d'actions qu'on a pas encore configurée.

Il faut savoir que dans l'intégration d'un véhicule, ça ne sert à rien de réinventer la roue, on vous conseil de vous baser sur les véhicules vanilla ainsi que sur les fichiers de configuration déjà existant.

Après cette page, le véhicule ne sera pas encore jouable.

Pour ce qui est des places de tireur, cela ce passe dans le préfab de la tourelle.

SCR_BaseCompartmentManagerComponent:

Ce component va nous servir à définir une liste de compartiment et une liste de portes pour que des joueurs puissent s'installer dans votre véhicule.

A. Door Info List:

Dans ce component, on trouve deux catégories:

  1. Door Info List: Liste des portes disponibles.
  2. Compartment Slots: Liste des compartiments et des places disponibles pour votre véhicule.

image.png

Avant de créer une place dans le véhicule, il faut créer une porte, qu'elle soit réelle ou fausse.

Pour ce faire, cliquez sur le + de Door Info List et créez un "SCR_CompartmentDoorInfo":

Par la suite, on va définir une suite de class qui va permettre de configurer nos portes:

Open Door Action

Cette class va nous permettre de définir l'action qui va permettre aux joueurs de pouvoir ouvrir la porte. Pour ce faire, faites set class, puis SCR_OpenVehicleDoorUserAction.

Une fois cela fait, mettez les actions de votre nouvelle porte qui vont permettre aux joueurs d'ouvrir votre porte dans "Parent Context List" en cliquant sur le +, puis en sélectionnant les actions: Door_{code de la porte} et Door_{code de la porte}_int -> Exemple: Door_L01 et Door_L01_int.

Une fois cela fait, il faut donner une liste d'informations à propos de l'apparence de l'action. Pour ce faire, faites set class sur le paramètre UI Info puis choisissez la class "SCR_ActionUIInfo". Une fois cela fait, mettez les paramètres ci dessous pour que l'action ais l'apparence d'une action pour fermer la porte.

image.png

Après avec réglé l'UI, il ne vous reste plus qu'a régler le reste des actions, comme sur la capture d'écran si dessous.

Close Door Action

Cette class va nous permettre de définir l'action qui va permettre aux joueurs de pouvoir fermer la porte. Pour ce faire, faites set class, puis SCR_CloseVehicleDoorUserAction.

Une fois cela fait, mettez les actions de votre nouvelle porte qui vont permettre aux joueurs de fermer votre porte dans "Parent Context List" en cliquant sur le +, puis en sélectionnant les actions: Door_{code de la porte} et Door_{code de la porte}_int -> Exemple: Door_L01 et Door_L01_int.

Une fois cela fait, il faut donner une liste d'informations à propos de l'apparence de l'action. Pour ce faire, faites set class sur le paramètre UI Info puis choisissez la class "SCR_ActionUIInfo". Une fois cela fait, mettez les paramètres ci dessous pour que l'action ais l'apparence d'une action pour ouvrir la porte.

image.png

Après avec réglé l'UI, il ne vous reste plus qu'a régler le reste des actions, comme sur la capture d'écran si dessous.

Entry Position Info

Ce paramètre va permettre de définir la position à partir de laquelle le joueur va lancer l'animation d'entrée dans le véhicule. Pour ce faire, cliquez sur set class puis dans Pivot ID, mettez l'os qui correspond à votre porte.

AI Entry Position Info

Ce paramètre permet d'indiquer aux IA, où elle doivent se rendre pour se téléporter dans le véhicule quand elle doivent monter. Ce paramètre s'applique que pour les trappes qui se situent dans une zone que les IA ne peuvent pas accéder sans devoir monter. Placez ce point au niveau du point ou un joueur normal ferait espace pour monter sur le véhicule.

AI Exit Position Info

Ce paramètre permet d'indiquer aux IA, où elle doivent se rendre pour descendre du véhicule depuis le toit du véhicule. Ce paramètre s'applique que pour les trappes. Placez ce point au niveau du point ou un joueur normal ferait espace pour descendre du véhicule vers le sol.

Exit Position Info

Ce paramètre va permettre de définir la position à partir de laquelle le joueur va lancer l'animation de sortie depuis sa place. Pour ce faire, cliquez sur set class puis dans Pivot ID, mettez l'os qui correspond à la place que la porte.

Si votre porte couvre la sortie de plusieurs places dans le véhicule, en général, ne faites pas set class (si vous l'avez déjà défini, faites clic doit puis restore to prefab value).

Il ne vous reste plus qu'a configurer quelques options annexes puis votre porte sera correctement configurée pour la suite:

Une fois toutes ces étapes faites, votre première porte est crée. Il ne vous reste plus qu'a créer les autres.

B. Compartment Slots:

Cette partie du component va nous permettre de créer une place dans le véhicule. On ici configurer le reste d'actions qu'on n'a pas encore réglé.

Place du conducteur:

Pour configurer la place conducteur, il vous suffit de déployer le slot "PilotComponent".

image.png

Détails des paramètres importants

Default Occupant Name: Non utilisé en général. Nous vous conseillons de laisser vide.


Compartment Unique Name: Non utilisé en général. Nous vous conseillons de laisser vide.


Compartment Action -> Parent context list: Faites + à coté de Parent Context List et sélectionnez l'action qui va permettre au joueur d'accéder à la place depuis l'extérieur. PS: Ajoutez également l'action de la place que vous êtes en train de configurer, car si la porte est ouverte, les joueurs pourront monter dans le véhicule en visant vers l'action de la place. (Exemple: driver et door_L01).


Get Out Action -> Parent context list: Faites + à coté de Parent Context List et sélectionnez l'action qui va permettre au joueur de sortir du véhicule depuis sa place ("door_L01_int" par exemple).


Jump Out Action: Action qui va permettre au joueur de s'éjecter du véhicule.

Pour des raisons de gameplay et pour éviter des erreurs de clic de la part des joueurs, nous vous déconseillons d'ajouter une action dans ce paramètre pour éviter toutes éjections involontaires, ce qui peut détruire une partie de joueur ⚠️


Switch Seat Action -> Parent context list: Faites + à coté de Parent Context List et sélectionnez l'action de la place que vous êtes en train d'éditer ("driver" par exemple). Ce paramètre va définir sur quel place il faut mettre l'interaction pour pouvoir changer de siège vers la place que vous êtes en train de configurer.


Aditionnals Actions -> SCR_RemoveCasualtyUserAction N°1 -> Parent Context List: Ce paramètre permet de définir sur quel action le joueur va pouvoir retirer le corps d'un autre joueur mort sur le siège, depuis l'intérieur du véhicule. Mettez donc l'action du siège que vous êtes en train de configurer.


Aditionnals Actions -> SCR_RemoveCasualtyUserAction N°2 -> Parent Context List: Ce paramètre permet de définir sur quel action le joueur va pouvoir retirer le corps d'un autre joueur mort sur le siège, depuis l'extérieur du véhicule. Mettez donc les actions où les joueurs pourront retirer le corps d'un autre joueur depuis l'extérieur.


Passenger Position: Ce paramètre va nous permettre de définir, où le joueur sera dans le véhicule. Pour ce faire, dans Pivot ID, mettez l'os de la place que vous êtes en train de configurer.

ATTENTION: Ne mettez aucune coordonnées dans ce paramètre. Dans tous les cas, l'animation se fera depuis un os, si il n'y en a aucun de définis, l'animation du joueur qui change de siège se fera au 0 0 0 du véhicule ⚠️

Si vous devez faire des modifications sur la position du joueur dans le véhicule, faites vos modifications sur l'os dans Blender pour éviter tous soucis a propos des animations ✅

Forced Free Look: Permet d'activer la vue libre (laisser coché).


Mouse Steering: Si activé, les joueurs pourront tourner les roue qu'avec la souris ou en faisant double Alt (Sauf si hélicoptère, laisser désactivé).


Skip Character Door Animations From Seat: Si cette option est cochée, le joueur ne fera aucune animations d'ouverture ni de fermeture de porte si il l'ouvre ou la ferme depuis l'intérieur.


Eject Unconscious And Dead Characters: Si cette option est cochée et si le joueur tombe inconscient ou meurt, le cadavre sera automatiquement éjecté.


Characters Can Fall Out On Flip: Si cette option est cochée et si le véhicule se tourne sur l'axe Y de 90°, le joueur sera éjecté. PS: Vous pouvez régler l'angle avec un paramètre qui apparaît si cette option est coché pour y=1=90°.


Seat Type: Numéro d'indentification pour l'animation de repos du joueur dans le véhicule.

Conseil: Pour des places passagers, il est meilleur de varier cette valeur entre les sièges pour éviter que les joueurs soient tous alignés de façon non naturels.


Door Info List: Permet de relier une porte à un siège. 0 = 1ère porte dans la liste, 1 = 2ème porte dans la liste, 2 = 3ème porte dans la liste...


Override Entry/Exit Position Info: Permet de changer la position d'entrée/sortie sans prendre en compte les paramètres que vous avez définit dans la porte.


UI Info: Informations d'interface à propos du siège (ne pas changer en général).


Base Coverage: Permet de définir une valeur entre 0 et 1 inclus qui indique à quel point le joueur est isolé du monde extérieur pour le son. Pour donner un ordre de grandeur, la valeur d'un LAV25 est réglé à 0.300.


Can Occupant Equip Gadget: Es que le joueur pourra prendre en main des équipements comme les jumelles ou encore un autoinjecteur de morphine par exemple.

Restricted Item Types: Permet de bannir des équipements que le joueur pourrait prendre en main comme par exemple les jumelles.


Auto Connect To Turret: Inconnu.

Auto Connect Context Indices: Inconnu.


Can Turn Out: Es que le joueur peut sortir sa tête en dehors avec une trappe ?

Turn Out Door Idx: Index de porte de la trappe, si Can Turn Out n'est pas cochée, définir cette valeur à -1.


Context Name: Nom du siège dans le Workbench.


Compartment Section: Numéro d'indentification unique d'un compartiment dans le véhicule, si le joueur tente de changer de siège mais que ce numéro n'est pas égal a celui du siège où il tente de changer de siège, l'action n'apparaîtras pas.


Is Water Tight: Si cette option est cochée, le joueur ne mourra pas si le véhicule entre dans de l'eau.


Default Occupant Data: Préfab des personnages de bases qui vont apparaître si le véhicule est placée en GameMaster. Recherchez "Character_USSR_Rifleman.et" pour un soldat de l'armée rouge ou "Character_US_Rifleman.et" pour un soldat de l'armée américaine.


Tous les autres paramètres plus bas sont des paramètres très spécifiques et qui ne sont pas tous exploitée en version 1.3.76. Si vous n'avez pas de raison précise à modifier ces paramètres, nous vous le déconseillons.

Vous avez désormais configuré la place conducteur, il ne vous reste plus qu'a faire de même pour les places passagers.


2. Places passagers

Pour ce faire, on va partir d'une base, pour ce faire, dans le Ressource Browser, recherchez "CargoCompartment_Base" puis mettez le fichier de configuration dans la catégorie Compartment Slots, puis nommez votre nouvelle place assise (Exemple: passenger_r01):

image (5).gif

Une fois cela fait, vous avez crée une place passager. Il ne vous reste plus qu'a la configurer de la même manière que celle du pilote et de créer le reste de vos passagers.

Vous avez désormais crée vos places assises et votre place conducteur ✅

C1 - Paramètres de simulation du véhicule

Informations à propos de l'organisation du wiki sur la configuration des préfabs de véhicules

Le wiki à partir de cette page va être organisé en fonction d'un code simple pour vous repérer dans le niveau de difficulté et votre progression 🔧

A=Configuration de base pour un véhicule
B=Configuration pour un véhicule qui nécessite un minimum de réflexion et qui dépend de votre véhicule.
C=Configuration pour un véhicule qui est complexe et qui nécessite de la recherche personnelle et qui varie en fonction des véhicules.
D=Système complexe pour un véhicule qui n'est pas généralisé à tous les véhicules et qui n'est pas évident.

Il est important de savoir que tout est possible, mais ce système de code permet de vous donner une idée de la difficulté. La seule limite que vous avez est l'habitude ainsi que l'expérience avec le workbench et blender, on ne peut pas tout dévoiler car ENFUSION et Blender restent des logiciels complexes ✅

Tous les préfabs non commenté dans cette page ne sont pas a modifier pour l'instant (si vous suivez le fil rouge du wiki) ou simplement pas a modifier sur toute l'intégration de votre véhicule (potentiel exception a des systèmes personnalisés).

Introduction

Simulation Parameters (Brouillon, ne pas supprimer)

Learning to configure the simulation, which includes engine parameters, wheel simulation, suspension, and various other settings.

Some sections in this category are not covered due to limited knowledge and are marked (Not covered in this tutorial). For any parameter with this note, leave it at default for now unless otherwise indicated. If someone with expertise wants to share their knowledge, please submit a ticket on Discord.

The component managing the simulation is VehicleWheeledSimulation_SA, which is divided into several areas:
image.png



Engine:

When setting up engine parameters, it is possible to use real life values. Usually it's not that hard to find information about power & torque of engine with RPM data attached to it. Below is table containing example source data which will be used to configure vehicle in Workbench

Engine

Power

Torque

I4 16V

86 kW at 5,800 rpm

155 N⋅m at 4,400 rpm

Using that data, it is possible to fill following data in Engine section of VehicleWheeledComponent

Below is visualization of data https://www.desmos.com/calculator/j63rwoyvnh

armareforger-new-engine-diagram.png

Inertia parameter controls engine moment of inertia. In layman's term, it affects how fast engine gains or lose rpm. High inertia results in slower gain of rpm's but it also means that less rpm will be lost during i.e. changing of gears or when releasing thrust. Table below can be used as sort of guidance but it is still recommended to experiment with that value and tweak it till reaches desired state

armareforger-new-engine-inertia.png

Steepness parameter controls how fast engine can reach max torque. This parameter can be used to i.e. reduce the acceleration of the vehicle or to fine tune torque/rpm graph. Effect of that parameter can be observed below

armareforger-new-car-steppnes.gif

Rest of the RPM parameters, like Rpm Idle, Min Clutch, Redline & Max, can be also directly copied from source data if its available. In this example, following data was used

Last but not least, there is Output parameter, which controls where power produced by the engine is transferred. In this example Clutch is used as a Output.


Gearbox & Clutch parameters

armareforger-new-car-axle-setup.png

In Clutch section of the VehicleWheeledSimulation component there are two parameters available. Clutch Output should be kept to Gearbox & Max Clutch Torque - parameter controlling maximum torque that clutch can provide - should be tweaked. 1.6 * Max Torque can be a good starting point.

In Gearbox section gear that can be filled in. In this example, following data was used as source

Final drive

68 : 16 = 4.250

1st gear

38 : 11 = 3.455

2nd gear

35 : 18 = 1.944

3rd gear

37 : 27 = 1.370

4th gear

32 : 31 = 1.032

5th gear

34 : 40 = 0.850

Reverse gear

38 : 12 = 3.167

Forward parameter contains array of forward gears. New gears can be simply added by clicking on plus sign + on the right side of the parameter. Reverse parameter is used for reverse gearFinal drive is defined later in differential which is defined in one of the Axles. Depending on the configuration of the vehicle, it is possible to do various types of drive trains. In this example car is using simple forward wheels drive.



If you encounter trouble with the speed or the gearshift you need to set up the SCR_CarControllerComponent

image.png

You can copy all the parameter from an other prefab in the vanilla game to have something functional jsut right click on the category

image.png

and copy from vanilla to paste in your moded car


Suspension parameters

One of the most important part of the vehicle configuration is setting Axles & their Suspension values. First, it is necessary to add as many Axles as vehicle has. This can be done by clicking on plus + sign on the right side of the Axles property.

armareforger-new-car-suspension-setup.png


Wheels parameters

Differential and Torque Share

Each vehicle, whether it be FWD, RWD, AWD, or 4WD will have at least one differential on the drive axle. For each drive axle, choose the appropriate Type (Closed, Open, or Limited Slip Differential) and the Ratio of the differential's gear reduction.

Once you have set the axle's differential type, set Output0 and Output1 to the left and right wheel. If you are making a vehicle with more than 1 drive axle, you will also need to deliver power to each axle with a new differential under Simulation > Differentials. Set the outputs of that differential to each axle's diff, and set the Torque share value of each axle to 1/N where N is the number of axles. If you do not change the torque share from 0 for each axle, it will not be used as a drive axle.

Wheel

Here you can set the Radius in meters, Mass in kg, and Brake torque in N-m.

Tyre

Here you can set the friction coefficient multipliers. Longitudinal refers to the tangent direction of the wheel (grip when accelerating) and lateral refers to the perpendicular to the car (grip when turning).

Wheel Positions (to complete)

Aerodynamics

Aerodynamics affects maximum speed and acceleration of the vehicle. Furthermore, aerodynamics drag is especially noticeable at higher speeds, since drag increases with square of speed.

Reference Area & Drag Coefficient values can be obtained by using values of similar vehicles, which have already those values measured. Drag Area (Reference Area) & Typical drag coefficients (Drag Coefficient) sections of Auto mobile drag coefficient wiki page can be used as reference. This page contains data for quite wide array of vehicles and in most cases it is possible to pick data for something similar in size & shape. In this example, Reference Area was set to 0.62 & Drag Coefficient to 0.31.



Pacejka (to complete)



Debugging

The Diag Menu is accessible by holding Windows Key + Left Alt or Windows Key + Left Ctrl and if you are on Windows 11, hold all three keys simultaneously. While holding the aforementioned keys you can navigate the open menu using the Up and Down arrow keys. To modify the current selected setting use the Left and Right arrow keys. To enter a submenu use the Right arrow key and to leave the submenu use the Backspace key.

Name & location

Description

Vehicles

Show Entry points




Enable debugger trace


Show stats


Show vehicle debug

Need to be activate in order to see any other parameter

Player vehicle only


Show CoM

Toggles Center of Mass debug

Show inertia


Show forces


Show engine


Show raycast


Show suspension

show the travel between up and down position useful to see how their react

Show swaybar


Show wheels

Activate the diameter of the wheel (super useful for configure the radius of them)

Show bones

Activate the position of the bone

Reset vehicle


D1 - Nouveau système d'animations du train roulant pour un véhicule

C1 - Ancien système d'animations du train roulant pour un véhicule (Déconseillé)