Quelques scripts maisons
Publié : lun. nov. 30, 2020 11:53 pm
J'ai fait quelques scripts dont on se sert à la VEAW et je me suis dit que ça pourrait éventuellement intéresser du monde.
Ce post est pour les initiés du .lua même si je n'ai pas un gros niveau en .lua.
Ces scripts sont commentés et s'appuient sur moose.
Avant de documenter et créer des exemples etc, je vous les présente simplement, j'irai plus loin si ça intéresse.
Je commence donc par un premier script:
Il y a quelques temps pour notre usage nous voulions que des bateaux circulent ici où là, sur PG, un peu a la façon de RAT:
J'ai donc crée "RST" pour random sea trafic , voici son fonctionnement.
Des templates de groupe de bateau sont définis.
Des zones sont définis.
Une zone de départ est tirée au sort, puis un point dans cette zone.
Idem pour le point d'arrivée.
Bien sur il y a un contrôle pour savoir si ces points sont bien en mer et il faut qu'il y ait une distance minimal entre ces points.
Les bateaux vont aller du point de départ au point d'arrivée.
Bien sur il y a un mais: Les bateaux vont tout droit entre les deux points même s'il y a de la terre entre, donc pour corriger ça j'utilise un code lua de pathfindig A*, qui demande a ce qu'on définisse des Nodes ( carrefours, nœud de réseau..) le script va tester la liaison entre les nodes via une ligne droite, regarder s'il y a un obstacle sur la route puis une fois la cartographie faite il va définir le trajet le plus optimal.
Les nodes sont défini par un point au hasard dans chaque zone "RST Node X" dans l'éditeur, pour chaque bateau il y a un nouveau tirage du point aléatoire, ceci pour ne pas retrouver des bateaux sur une même ligne droite.
Le script est un peu lourd, il met environ 5 secondes pour calculer toutes les routes mais il ne le fait qu'une fois, au lancement du serveur. Une fois les points calculés la charge du script est nulle, les points étant déjà calculés même pour un bateau qui spawnera bien plus tard.
En dernier ajout, j'ai fait en sorte qu'aucune bateau géré par le script n'apparaisse a moins de 40Nm du Pa pour éviter de retrouver un tanker au milieu du groupe aéro.
Pour ce script on a donc en paramétrable:
Définition du pa et la taille de la zone d'exclu
une définition des zones de départ et d'arrivée
une définition des "nodes"
une définition des templates
une définition de la relation template, zones possibles de départ, zones possibles d'arrivée, quantité de bateau, probabilité, nom du bateau ( le dernier est pour du debug)
Je ne suis pas un pro des scripts, mais je n'en ai vu aucun qui y ressemble et je ne pense pas aller plus loin dessus.
Il est a utiliser avec moose
Voici le script:
RST.lua
A savoir qu'il est associé a une mission lourde que je ne partage donc pas ici mais si ça intéresse du monde, j'éditerai pour faire une démo légère éventuellement des tacview etc.
Ce post est pour les initiés du .lua même si je n'ai pas un gros niveau en .lua.
Ces scripts sont commentés et s'appuient sur moose.
Avant de documenter et créer des exemples etc, je vous les présente simplement, j'irai plus loin si ça intéresse.
Je commence donc par un premier script:
Il y a quelques temps pour notre usage nous voulions que des bateaux circulent ici où là, sur PG, un peu a la façon de RAT:
J'ai donc crée "RST" pour random sea trafic , voici son fonctionnement.
Des templates de groupe de bateau sont définis.
Des zones sont définis.
Une zone de départ est tirée au sort, puis un point dans cette zone.
Idem pour le point d'arrivée.
Bien sur il y a un contrôle pour savoir si ces points sont bien en mer et il faut qu'il y ait une distance minimal entre ces points.
Les bateaux vont aller du point de départ au point d'arrivée.
Bien sur il y a un mais: Les bateaux vont tout droit entre les deux points même s'il y a de la terre entre, donc pour corriger ça j'utilise un code lua de pathfindig A*, qui demande a ce qu'on définisse des Nodes ( carrefours, nœud de réseau..) le script va tester la liaison entre les nodes via une ligne droite, regarder s'il y a un obstacle sur la route puis une fois la cartographie faite il va définir le trajet le plus optimal.
Les nodes sont défini par un point au hasard dans chaque zone "RST Node X" dans l'éditeur, pour chaque bateau il y a un nouveau tirage du point aléatoire, ceci pour ne pas retrouver des bateaux sur une même ligne droite.
Le script est un peu lourd, il met environ 5 secondes pour calculer toutes les routes mais il ne le fait qu'une fois, au lancement du serveur. Une fois les points calculés la charge du script est nulle, les points étant déjà calculés même pour un bateau qui spawnera bien plus tard.
En dernier ajout, j'ai fait en sorte qu'aucune bateau géré par le script n'apparaisse a moins de 40Nm du Pa pour éviter de retrouver un tanker au milieu du groupe aéro.
Pour ce script on a donc en paramétrable:
Définition du pa et la taille de la zone d'exclu
une définition des zones de départ et d'arrivée
une définition des "nodes"
une définition des templates
une définition de la relation template, zones possibles de départ, zones possibles d'arrivée, quantité de bateau, probabilité, nom du bateau ( le dernier est pour du debug)
Je ne suis pas un pro des scripts, mais je n'en ai vu aucun qui y ressemble et je ne pense pas aller plus loin dessus.
Il est a utiliser avec moose
Voici le script:
RST.lua
A savoir qu'il est associé a une mission lourde que je ne partage donc pas ici mais si ça intéresse du monde, j'éditerai pour faire une démo légère éventuellement des tacview etc.