LUCY - GdC-Framework/GdC_lib GitHub Wiki

Présentation

LUCY est une librairie de fonctions permettent de faire spawn des IAs via scripts et de les mettre en mouvement. L'utilisation de ces fonctions pourra permettre une optimisation et une amélioration des performances grâce à l'utilisation du HC, ainsi qu'en limitant le nombre d'IA en simultané sur la carte (on ne spawn pas ce que les joueurs ne voient pas). Attention, ce n'est pas un module miracle qui va solutionner tous vos problèmes, notamment de performance ! Pour en tirer le meilleur, il faut réfléchir et comprendre ce que l'on scripte. Les avantages entraînent aussi quelques inconvénients :

Avantages :

  • utilisation du HC simplifiée
  • remplir une zone d'ennemis peut se faire très rapidement
  • peut servir de base pour créer des scripts plus complexes (vagues de renforts, ...)
  • réutilisation de scripts d'une mission à l'autre (car oui, quand on scripte, on est fainéant !)

Inconvénients :

  • ennemis non visibles directement sur Eden (vu qu'ils vont spawn en direct pendant la mission, vous devrez lancer la mission pour les voir), ainsi que leurs waypoints (qui seront représentés par des marqueurs généralement)
  • nécessite de faire pas mal de scripts et de comprendre comment ça fonctionne
  • complexité de certaines fonctions (oui GDC_fnc_lucyReinforcement, c'est toi qu'on regarde)

Chaque fonction est fournie avec une multitude de paramètres afin de coller au maximum à ce qu'il est possible de faire dans l'éditeur. Il est très vivement recommandé de s'inspirer très fortement des exemples de cette page : copié/collé de la fonction, puis modification des paramètres pour s'adapter à ce que vous souhaitez faire, notamment pour certaines fonctions que même le créateur de la librairie copie/colle d'une mission à l'autre.

La librairie embarque aussi des fonctions qui ne seront pas documentées ici et qui sont utilisées dans la mécanique interne du système. Pour plus de précisions, n'hésitez pas à contacter les développeurs.

Les bases de LUCY

Afin d'utiliser Lucy, vous devez tout d'abord l'initialiser. Pour se faire, appelez la fonction GDC_fnc_lucyInit dans votre script init.sqf. La fonction peut prendre en paramètre des configurations spécifiques pour modifier le comportement des autres fonctions.

init.sqf : [] call GDC_fnc_lucyInit;

La deuxième fonction que vous allez utiliser est la fonction magique qui vous permettra d'exécuter du code sur le HC sans vous poser de question, depuis un script (init.sqf au hasard), depuis un trigger, depuis où vous voudrez : GDC_fnc_lucyExecVMHC. Elle permet d'exécuter un script sqf uniquement sur le HC. Le système est prévu pour que lorsque vous êtes dans l'éditeur, les scripts soient exécutés en local. Cela permet de se passer de HC pendant l'édition afin de faire des tests sur le mode Solo. Elle est pas belle la vie ? Utilisation :

["mon_super_script.sqf"] call GDC_fnc_lucyExecVMHC;

Utilisation de LUCY

C'est un peu comme dans l'éditeur. On va faire spawn des IA, puis leur donner des ordres de mouvements. Sauf que sur l'éditeur, on va poser des marqueurs qui vont nous servir de points de références pour déterminer des positions où l'on souhaite qu'il se passe de choses (position de spawn ou de waypoint). J'espère que vous aimez les marqueurs, parce que vous allez potentiellement en mettre beaucoup !

Note : vous ne pouvez pas appeler les fonctions de spawn et de déplacement de Lucy par call car la bibliothèque utilise le scheduler du moteur de jeu (cf. https://community.bistudio.com/wiki/Scheduler). Il faut donc les appeler par la fonction [] spawn{} (cf. https://community.bistudio.com/wiki/spawn).

Vous avez des fonctions de spawn :

  • GDC_fnc_lucySpawnGroupInf : pour faire spawn un groupe d'infanterie
  • GDC_fnc_lucySpawnVehicle : pour faire spawn un véhicule

Et des fonctions d'ordres de mouvement :

  • GDC_fnc_lucyAddWaypoint : crée un waypoint pour un groupe
  • GDC_fnc_lucyAddWaypointListMoveCycle : crée un chemin de waypoints cyclique (qui boucle) pour un groupe à partir d'une liste de marqueurs
  • GDC_fnc_lucyGroupRandomPatrol : déplace un groupe sur des waypoints définis (représentés par une liste de marqueurs) de façon aléatoire
  • GDC_fnc_lucyGroupRandomPatrolInArea : déplace un groupe de manière aléatoire dans une zone définie par un marqueur de zone
  • GDC_fnc_lucyTransportReinforcement : Ordonne à un véhicule donné de transporter un groupe d'infanterie donné (fonction de renfort)
  • GDC_fnc_lucyReinforcement : Ordonne à un groupe donné de se déplacer sur une position en suivant un itinéraire donné (fonction de renfort)

Il y a aussi des fonctions de spawn plus spécifiques :

  • GDC_fnc_lucySpawnStaticInf : pour faire spawn une unité "statique" seule qui ne doit pas bouger, comme un soldat dans un bunker, dans un mirador, dans un bâtiment... Attention, chaque unité a son propre groupe,
  • GDC_fnc_lucySpawnVehicleReinforcement : pour faire spawn un groupe de renfort véhiculé qui viendra débarquer des troupes à un endroit spécifique. Cette fonction fait déjà bouger les unités, il n'est pas nécessaire de rajouter des ordres de mouvements (mais vous pouvez le faire pour les troupes qui seront débarquées si vous le souhaitez).

Documentation des fonctions

Fonctions globales

Fonctions de déplacements

Fonctions de spawn

Fonctions utiles