Sobre o projeto
Pokex é um projeto pessoal que demonstra como construir um sistema de automação confiável para um ambiente hostil e sem API, usando Elixir e OTP. Projetado para um MMORPG baseado em tiles 2D no macOS, ele percebe o estado do jogo por meio de capturas de tela e age via eventos sintéticos de mouse e teclado. A arquitetura depende de uma árvore de supervisão com 26 GenServers e 3 supervisores, enfatizando o isolamento de processos e a passagem de mensagens para lidar com restrições do mundo real, como latência de entrada, condições de corrida e contenção de sistema.
Principais desafios de engenharia abordados incluem:
- **Recursos Escassos:** A captura de tela é serializada por meio de um único GenServer para evitar contenção no macOS, garantindo tempo de execução consistente.
- **Atuação Destrutiva:** A entrada é gerenciada por um processo 'Body' dedicado e um 'InputGate' fechado por falha para evitar teclas perdidas quando o foco é perdido ou processos travam.
- **Lógica Pura:** Módulos de tomada de decisão são separados dos drivers de E/S, permitindo testes exaustivos da lógica do jogo sem um cliente em execução ou tela.
- **Segurança:** Um processo 'Guardian' externo monitora condições de parada de emergência (por exemplo, cursor em um canto de morte) e pode parar toda a frota independentemente dos estados dos trabalhadores.
O projeto usa Phoenix LiveView para um painel de controle local e inclui ajudantes nativos do Swift para entrada de baixa latência e captura de tela. Embora inclua ferramentas de calibração, não é empacotado como um produto de uso geral e requer configuração significativa para diferentes máquinas ou clientes de jogo. O repositório serve como um estudo de caso do OTP, com mais de 37 mil linhas de testes garantindo confiabilidade na camada de lógica.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.