Optimiser l'automatisation d'Onmyoji avec un assistant scriptable : Guide multi-scénarios pour une efficacité accrue

Présentation technique : L'architecture et les capacités du framwork d'automatisation

Lors de l'initiation à un outil d'automatisation de jeu, les interrogations principales portent sur sa conception et sa portée. Pour Onmyoji, un jeu au rythme exigeant, la répétition des tâches quotidiennes constitue une charge importante. Le framework OnmyojiAutoScript (OAS) vise à alléger cette charge via l'automatisation intelligente.

Son fonctionnement repose sur trois composants fondamentaux coordonnés :

  • Le moteur d'ordonnancement : Il gère la file d'attente des actions (exploration, événements, collecte de ressources) selon des priorités configurables, permettant une exécution parallèle et fluide des routines.
  • Le module de vision par ordinateur : Cet élément analyse en continu les captures d'écran du jeu grâce à des techniques de reconnaissance d'image et d'OCR. Il identifie les boutons, l'état du jeu et les résultats de combat, avec une adaptation possible aux différentes résolutions.
  • Le contrôleur de périphérique : Ce module transmet les commandes (clic, glissement) à l'appareil via des protocoles comme ADB. Il assure la compatibilité avec une large gamme d'émulateurs Android et d'appareils physiques.

L'interface graphique, conçue pour être intuitive, organise les fonctions en panneaux distincts : navigation, configuration, état d'exécution et surveillance des ressources.

Gestion avancée des comptes et adaptation aux scénarios de jeu

Pour gérer plusieurs comptes simultanément, OAS propose un système de multicomptes. La configuration initiale nécessite l'installation de l'environnement.

# Récupération du code source
git clone https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript
cd OnmyojiAutoScript

# Installation des dépendances
python deploy/installer.py

Après l'installation, il est possible d'enregistrer plusieurs profils de jeu. Chaque profil peut se voir attribuer une séquence de tâches et une stratégie d'exécution spécifiques. Le mode multi-comptes permet alors d'alterner automatiquement entre les sessions pour exécuter les routines définies.

Les paramètres d'automatisation s'ajustent en fonction du scénario :

Scénario Mode recommandé Paramètres clés Optimisation
Tâches quotidiennes Équilibré intervalle=300s, tentatives=3 Activer le cache d'images
Événements limités Performance intervalle=100s, tentatives=5 Désactiver les logs détaillés
Exécution nocturne Économie intervalle=1000s, tentatives=2 Augmenter les délais d'action

Ces configurations se modifient dans le fichier module/config/argument/override.yaml.

Personnalisation et développement de tâches spécifiques

Pour s'adapter aux misses à jour de l'interface du jeu, le processus consiste à remplacer les images de référence. Les nouvelles captures d'écran sont placées dans module/tasks/[nom_tache]/res/, puis les seuils et régions de reconnaissance sont mis à jour dans le fichier assets.py de la tâche correspondante.

OAS supporte l'extension par des scripts Python personnalisés. L'exemple ci-dessous illustre la création d'une tâche pour automatiser le mode "Bris de Barrière" :

from tasks.base_task import BaseTask

class BreachAssaultTask(BaseTask):
    def __init__(self):
        super().__init__("Assaut de Brèche")
        self.priority_level = 3
        self.max_tries = 8
        self.victory_counter = 0
        
    def run(self):
        self.logger.info("Démarrage de l'assaut sur les brèches")
        
        if not self.navigate_to("breach_assault_interface"):
            self.logger.error("Échec de navigation vers l'interface cible")
            return False
            
        for attempt in range(self.max_tries):
            if not self.locate_image("targetable_breach.png"):
                self.logger.info("Aucune brèche disponible")
                break
                
            self.perform_click("initiate_breach_btn.png")
            
            if self.wait_for_image("combat_initiated.png", timeout=15):
                self.resolve_combat()
                
                if self.locate_image("victory_screen.png"):
                    self.victory_counter += 1
                    self.logger.info(f"Brèche #{self.victory_counter} neutralisée")
                else:
                    self.logger.warning("Échec de l'assaut")
                    
                self.perform_click("back_to_list_btn.png")
                self.pause(3)
            else:
                self.logger.warning("Timeout d'initiation du combat")
                
        self.logger.info(f"Terminé : {self.victory_counter}/{self.max_tries} brèches conquises")
        return self.victory_counter > 0

Ce fichier est ensuite intégré au système via le dossier tasks/ et la configuration.

Pour les machines aux ressources limitées, des réglages de performence sont disponibles : ajuster le seuil de reconnaissance (ex: recognition_threshold: 0.80), augmenter l'intervalle entre les captures (screenshot_interval: 300), activer le cache et réduire la verbosité des logs. Une surveillance intégrée des ressources peut ajuster dynamiquement la charge.

Dépannage et résolution des problèmes courants

Un taux de reconnaissance d'image faible nécessite une vérification systématique. S'assurer que la résolution du jeu est standard (1920x1080 ou 1280x720), que les effets graphiques réduits sont activés et que la qualité est réglée sur "Normale". Mettre à jour les ressources d'image via python deploy/patch.py --update-assets et ajuster les seuils dans module/config/argument/gui.yaml ou dans les fichiers de tâche.

Les problèmes de connexion à l'appareil (ADB) sont fréquents. Vérifier que le débogage USB est activé. En cas de déconnexions, essayer un autre câble ou configurer la connexion sans fil : adb tcpip 5555 puis adb connect <IP_APPAREIL>:5555. Pour les émulateurs, vérifier le port ADB configuré et s'y connecter manuellement si nécessaire.

L'analyse des logs en temps réel (filtres "ERROR", "WARNING") aide à diagnostiquer les erreurs d'exécution, comme les timeouts de combat. Ajuster les paramètres de timeout et de délai dans la configuration peut résoudre ces instabilités. Il est conseillé de sauvegarder régulièrement les fichiers de configuration.

Étiquettes: OnmyojiAutoScript automatisation Python ADB emulateur-android

Publié le 7 juillet à 04h29