这个项目能做什么

Pokex 展示了如何使用 Elixir 和 OTP 构建一个可靠的自动化系统,用于处理没有 API 的敌对环境。该项目针对 macOS 上的 2D 瓦片式 MMORPG,通过屏幕捕获来读取游戏状态,并通过合成鼠标和键盘事件来执行操作。其架构基于一个监督树,包含 26 个 GenServer 和 3 个监督器,重点是进程隔离和消息传递,以处理输入延迟、竞争条件和系统争用等现实问题。 主要工程挑战包括: - **资源稀缺:** 屏幕捕获通过一个 GenServer 序列化,以避免 macOS 争用,并确保一致的定时。 - **破坏性执行:** 输入由一个专门的“Body”进程和一个失效关闭的“InputGate”管理,以防止在失去焦点或进程崩溃时出现误操作。 - **纯逻辑:** 决策模块与 I/O 驱动分离,允许在没有运行客户端或屏幕的情况下对游戏逻辑进行全面测试。 - **安全性:** 一个外部“Guardian”进程监控紧急停止条件(例如,光标在杀戮角),并可以独立于工作进程状态来停止整个舰队。 该项目使用 Phoenix LiveView 构建了一个本地控制面板,并包含用于低延迟输入和屏幕捕获的 Swift 助手。虽然它包括校准工具,但并没有作为通用产品打包,并且需要针对不同的机器或游戏客户端进行大量重新配置。该仓库是一个 OTP 的案例研究,拥有超过 37k 行的测试,确保了逻辑层的可靠性。