LLMvsZ 是一个利用大语言模型(LLM)来玩《植物大战僵尸》(PVZ)的自动化项目。与传统的基于规则或启发式算法的 AI 不同,LLMvsZ 将游戏状态编码为自然语言描述,并利用 LLM 的推理能力来做出战略性的种植决策。
- 双循环异步架构:
- ⚡ 快速循环 (20ms): 负责实时读取内存状态、执行动作以及处理紧急情况(如僵尸进家)。
- 🧠 LLM 决策循环 (0.8s - 2s): 负责将复杂的战场状态发送给 LLM,并解析其返回的战略决策。
- 智能状态编码: 将僵尸位置、植物布局、阳光数量和卡槽状态转化为精简的 Prompt。
- 多级防御机制: 包含
EmergencyHandler和EnhancedReflex层,在 LLM 响应延迟时自动处理即时威胁。 - 内存直接交互: 通过
ProcessAttacher和AsmInjector直接与游戏进程通信,实现毫秒级的读取与操作。 - 延迟补偿: 内置
AdaptivePredictor,根据 LLM 响应延迟自动预测僵尸未来的位置,确保决策的超前性。
目前项目原生支持以下供应商,可在 llm/config.py 中配置:
| 供应商 | 模型 | 优势 |
|---|---|---|
| DeepSeek | deepseek-chat (V3) |
官方原生支持,推理能力强 |
| SiliconFlow (硅基流动) | deepseek-ai/DeepSeek-V3 |
国内访问速度快,延迟低 |
LLMvsZ/
├── llm/ # 核心逻辑:Prompt 生成、客户端、响应解析、决策验证
├── game/ # 游戏对象模型:植物、僵尸、网格、状态管理
├── memory/ # 内存工具:进程附加、读写器、汇编注入器
├── judge/ # 裁判系统:碰撞预测、伤害计算、威胁评估
├── engine/ # 动作执行引擎
├── data/ # 游戏数据:植物/僵尸属性、内存偏移量
└── main.py # 项目启动入口
- Windows 操作系统
- Python 3.8+
- 正在运行的《植物大战僵尸》游戏进程 (原版/年度版)
pip install -r requirements.txt在 llm/config.py 中填入您的 API Key,或通过命令行参数传入:
# llm/config.py
api_key: str = "您的_API_KEY"
provider: LLMProvider = LLMProvider.SILICONFLOWpython main.py --api-key YOUR_API_KEY --provider siliconflow- 状态编码 (State Encoding):
StateEncoder扫描内存,生成战场的文本描述。 - 延迟预测 (Prediction):
AdaptivePredictor根据历史延迟预测 LLM 响应时的僵尸位置。 - Prompt 构建: 结合系统提示词和预测状态,构建请求。
- LLM 推理: 调用 DeepSeek/SiliconFlow 获取下一步动作。
- 动作验证 (Validation):
ActionValidator确保动作合法(阳光足够、冷却完成)。 - 执行 (Execution):
MemoryWriter将指令注入游戏。
本项目采用 MIT LICENSE 许可。