librairie python pour modifier/enrichir les missions
Publié : dim. août 30, 2020 2:04 pm
Hello,
Histoire de me former à l'usage des classes en python, j'ai engagé la realisation d'une librairie python permettant de lire/modifier/sauvegarder les missions d'IL2GB.
L'idée est de concentrer dans l'éditeur 3D tout ce qui concerne la création/placement d'objets et autre mise à jour de propriétés nécéssitant l'IHM, et de pousser dans l'usage de la libraire toute la mécanique de la mission, basée sur l'usage des MCU qui est très lourdingue à la longue.
L'idée est d'avoir une mission définie en 2 composants:
* La partie 3D dans l'éditeur de mission ne contenant que le strict necessaire
* La partie python faisant toute la logique de la mission.
La selection des objets se faisant par critères, on peut espérer que la maintenabiltié et la re utilisabilité sera grandement améliorée.
J'ai pu valider que la base fonctionne : je sais lire et sauvegarder et accéder aux objets d'une mission générée par le mode carrière d'IL2, contenant ce genre de chose:
Map : "moscow-autumn"
Total number of objects : 7934
MCU_CheckZone : 30
MCU_Icon : 19
MCU_Timer : 90
MCU_TR_MissionBegin : 26
Vehicle : 24
MCU_TR_Entity : 42
MCU_CMD_AttackArea : 19
Block : 5438
MCU_Spawner : 12
MCU_Delete : 12
MCU_CMD_ForceComplete : 14
MCU_Deactivate : 51
MCU_Activate : 36
MCU_TR_CameraOperator : 1
MCU_H_PresetDescription : 1
MCU_Waypoint : 8
MCU_CMD_Land : 4
Plane : 11
MCU_CMD_Formation : 9
MCU_TR_Subtitle : 3
MCU_TR_MissionObjective : 2
MCU_Counter : 1
MCU_CMD_Cover : 2
Airfield : 2
MCU_Proximity : 4
Flag : 5
Group : 867
Ground : 167
Bridge : 1033
Je vais maintenant engager la rédaction des fonctions permettant de faire ceci :
selection d'objet par critère
application d'operation de modification sur l'ensemble des objets selectionnés.
La partie mise à jour des éléments clé/valeur et l'ajout de Targets ou d'Objects est deja quasi faite, mais j'aurai besoin de "use case" haut niveau pour mieux cibler ce qu'il faudrait faire.
Exemple :
pouvoir definir / ajouter les objets à activer au démarrage de la mission sans avoir à créer un seul timer
pouvoir transformer un avion en un "flight", en lui associant un ensemble de waypoint qui seront aussi visibles sur la carte (il faudra juste repositionner les avions 'fils' une fois la mission générée)
definir les critères de succès et d'echec de la mission
charger un groupe contenant les objets (blocks) de la carte en supprimant automatiquement ceux en dehors d'une zone geographique
Je n'ai jamais créé de mission autres que basiques, donc je ne sais ce qu'il faudrait viser pour atteindre une cible visant à grandement simplifier la vie des créateurs de mission...Votre avis sera le bienvenu.
Bien sur, je vais mettre tout le code dans GitHub afin que tout un chacun puisse le faire vivre et l'enrichir, je n'aurai pas le temps d'assumer la vie courante de ce bouzin.
Histoire de me former à l'usage des classes en python, j'ai engagé la realisation d'une librairie python permettant de lire/modifier/sauvegarder les missions d'IL2GB.
L'idée est de concentrer dans l'éditeur 3D tout ce qui concerne la création/placement d'objets et autre mise à jour de propriétés nécéssitant l'IHM, et de pousser dans l'usage de la libraire toute la mécanique de la mission, basée sur l'usage des MCU qui est très lourdingue à la longue.
L'idée est d'avoir une mission définie en 2 composants:
* La partie 3D dans l'éditeur de mission ne contenant que le strict necessaire
* La partie python faisant toute la logique de la mission.
La selection des objets se faisant par critères, on peut espérer que la maintenabiltié et la re utilisabilité sera grandement améliorée.
J'ai pu valider que la base fonctionne : je sais lire et sauvegarder et accéder aux objets d'une mission générée par le mode carrière d'IL2, contenant ce genre de chose:
Map : "moscow-autumn"
Total number of objects : 7934
MCU_CheckZone : 30
MCU_Icon : 19
MCU_Timer : 90
MCU_TR_MissionBegin : 26
Vehicle : 24
MCU_TR_Entity : 42
MCU_CMD_AttackArea : 19
Block : 5438
MCU_Spawner : 12
MCU_Delete : 12
MCU_CMD_ForceComplete : 14
MCU_Deactivate : 51
MCU_Activate : 36
MCU_TR_CameraOperator : 1
MCU_H_PresetDescription : 1
MCU_Waypoint : 8
MCU_CMD_Land : 4
Plane : 11
MCU_CMD_Formation : 9
MCU_TR_Subtitle : 3
MCU_TR_MissionObjective : 2
MCU_Counter : 1
MCU_CMD_Cover : 2
Airfield : 2
MCU_Proximity : 4
Flag : 5
Group : 867
Ground : 167
Bridge : 1033
Je vais maintenant engager la rédaction des fonctions permettant de faire ceci :
selection d'objet par critère
application d'operation de modification sur l'ensemble des objets selectionnés.
La partie mise à jour des éléments clé/valeur et l'ajout de Targets ou d'Objects est deja quasi faite, mais j'aurai besoin de "use case" haut niveau pour mieux cibler ce qu'il faudrait faire.
Exemple :
pouvoir definir / ajouter les objets à activer au démarrage de la mission sans avoir à créer un seul timer
pouvoir transformer un avion en un "flight", en lui associant un ensemble de waypoint qui seront aussi visibles sur la carte (il faudra juste repositionner les avions 'fils' une fois la mission générée)
definir les critères de succès et d'echec de la mission
charger un groupe contenant les objets (blocks) de la carte en supprimant automatiquement ceux en dehors d'une zone geographique
Je n'ai jamais créé de mission autres que basiques, donc je ne sais ce qu'il faudrait viser pour atteindre une cible visant à grandement simplifier la vie des créateurs de mission...Votre avis sera le bienvenu.
Bien sur, je vais mettre tout le code dans GitHub afin que tout un chacun puisse le faire vivre et l'enrichir, je n'aurai pas le temps d'assumer la vie courante de ce bouzin.