Comment fonctionne le catalogue de scripts d'automatisation de Genshin Impact
Quiconque a joué à Genshin Impact connaît cette routine : collecter 168 curiosités pour l'ascension des personnages, dégager les gisements de minerai, compléter les donjons quotidiens. Le processus se transforme en un deuxième travail. La communauté résout ce problème à sa manière. Le projet BetterGI utilise la vision par ordinateur et l'émulation d'entrées pour automatiser le grind, et le dépôt 4 sert en quelque sorte de gestionnaire de paquets central pour cela.
Je suis devenu curieux de voir comment les développeurs ont organisé le dépôt de scripts utilisateur. Quand des centaines de personnes soumettent des routes de farming, des rotations de combat et des macros JS personnalisées, un projet peut facilement devenir un désordre. Ici, les auteurs ont construit un système strict de modération et de structure par le biais de Pull Requests régulières.
Ce qu'il y a à l'intérieur du dépôt
Le dépôt alimente une vitrine web 5. Les utilisateurs lancent le client BetterGI, sélectionnent le scénario souhaité dans le catalogue, et l'application récupère les données directement depuis Git. Pas de base de données complexe côté serveur — GitHub agit comme la seule source de vérité.
Le catalogue est divisé en quatre zones principales :
- 6 — scripts de rotation de combat. Ils décrivent les timings des capacités des personnages, les pauses et les conditions de complétion des donjons.
- 7 — routes de navigation. Ce sont des fichiers JSON avec les coordonnées de déplacement des personnages, des téléports aux points de collecte des ressources.
- 8 — scénarios d'automatisation JavaScript complexes avec reconnaissance de motifs et une interface personnalisée.
- 9 — logique pour le mode de jeu « Summon of the Seven ».
Architecture des scripts de navigation
La plus grande partie du catalogue est constituée par les routes de collecte de ressources (10). Pour garder des milliers de fichiers lisibles, la communauté a introduit un standard de nommage strict :
0Exemple du dépôt : 11 (Cristaux, Liyue, Cloud Retainer, 6 pièces). Les numéros de routes ne sont pas arbitraires. Les routes sont triées soit par ordre de téléportation pour réduire les temps de chargement, soit par densité de ressources pour farmer les spots les plus riches en premier.
Les conflits sont gérés de manière intéressante. Supposons que deux auteurs aient créé des routes de collecte pour la même fleur, mais pour des configurations de personnages différentes :
1Si le joueur possède un personnage qui collecte les ressources à distance, il télécharge un preset. Si la collecte est effectuée par un personnage standard à épée à deux mains pour briser le minerai — un autre. La structure du catalogue isole ces variantes en utilisant des dossiers avec le suffixe 12.
Scénarios JavaScript complexes
Les mouvements simples ne couvrent pas toutes les tâches. Pour les choses complexes comme le farming automatique de lignes ley ou les runs de matériaux d'ascension, des scripts JS sont utilisés. Structure typique d'un dossier dans 13 :
2Dans 14, les développeurs lient la correspondance d'images de模板 (Template Matching via OpenCV) et la simulation de clics. Si l'icône requise du dossier 15 apparaît à l'écran, une branche logique est déclenchée.
Pour la configuration des paramètres, les auteurs de scripts peuvent attacher des overlays HTML personnalisés. Les règles du dépôt ont des exigences claires pour ceux-ci : les bundles SPA lourds sans code source sont interdits, donc le moteur web de l'overlay ne consomme pas de RAM supplémentaire pendant le jeu.
3Contributeurs et support
Le projet est maintenu par une communauté chinoise active. La majeure partie des modifications provient de PRs GitHub, où les auteurs adhèrent à des règles strictes de commentaires et de formatage.
À qui le projet sera utile
Si vous écrivez des bots de jeu ou créez des automatisations basées sur la vision par ordinateur, 16 est un excellent exemple de comment organiser une base de données de scripts collaborative :
- Comment faire de GitHub un registre de paquets sans écrire de backend.
- Comment stocker les assets de reconnaissance d'images aux côtés du code exécutable.
- Comment construire un schéma de nommage de fichiers qui élimine la duplication et la confusion entre des dizaines d'auteurs.
La source est ouverte, et la documentation sur les formats de scénarios est disponible sur le site web du projet. Même si vous êtes loin de Genshin Impact, les solutions architecturales pour l'organisation des fichiers et les normes de contribution peuvent être empruntées pour vos propres utilitaires.
Projets similaires