À propos du projet
Pokex est un projet personnel démontrant comment construire un système d'automatisation fiable pour un environnement hostile sans API en utilisant Elixir et OTP. Conçu pour un MMORPG basé sur des tuiles 2D sur macOS, il perçoit l'état du jeu à travers des captures d'écran et agit via des événements de souris et de clavier synthétiques. L'architecture repose sur un arbre de supervision avec 26 GenServers et 3 superviseurs, mettant l'accent sur l'isolation des processus et le passage de messages pour gérer les contraintes du monde réel telles que la latence d'entrée, les conditions de course et la contention du système.
Les principaux défis techniques abordés comprennent :
- **Ressources rares :** La capture d'écran est sérialisée via un seul GenServer pour éviter la contention de macOS, garantissant une synchronisation cohérente.
- **Actuation destructive :** L'entrée est gérée par un processus 'Body' dédié et une 'InputGate' fermée pour empêcher les frappes de touches errantes lorsque la focalisation est perdue ou que les processus s'effondrent.
- **Logique pure :** Les modules de prise de décision sont séparés des pilotes d'E/S, permettant des tests exhaustifs de la logique de jeu sans client en cours d'exécution ni écran.
- **Sécurité :** Un processus 'Guardian' externe surveille les conditions d'arrêt d'urgence (par exemple, le curseur dans un coin de kill) et peut arrêter l'ensemble de la flotte indépendamment des états des travailleurs.
Le projet utilise Phoenix LiveView pour un panneau de contrôle local et comprend des aides natives Swift pour une entrée à faible latence et une capture d'écran. Bien qu'il comprenne des outils d'étalonnage, il n'est pas emballé en tant que produit à usage général et nécessite une reconfiguration importante pour différentes machines ou clients de jeu. Le référentiel sert de cas d'étude OTP, avec plus de 37 000 lignes de tests garantissant la fiabilité de la couche logique.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.