# re-plants-vs-zombies：反编译并现代化改造 Plants vs. Zombies 年度版

> 以 PopCap 开源的 SexyAppFramework 为基础重建 Plants vs. Zombies 的 C++ 源码：起点是社区早先对 0.9.9 版的反编译，再补入从年度版（GOTY）逆向得到的功能，并以 GOTY 版地址标注函数。项目同时以现代 C++ 改造引擎，并正将 DirectDraw 与 Direct3D 7 渲染器替换为 GLFW。它构建出在原版游戏目录中运行的同人可执行文件，目标是现代化、可扩展的游戏，而不是完全一致的二进制。

- 类型：案例
- 目标：游戏
- 类别：独立重建案例
- 关联：独立重建项目
- 来源复核于：2026-10-19
- 收录于：2026-10-28
- 原始资源：<https://github.com/Patoke/re-plants-vs-zombies>
- 一手来源：<https://github.com/Patoke/re-plants-vs-zombies/blob/c4692036c5e11d227c8fb7c593b734dac96da028/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/re-plants-vs-zombies-decomp-case/>
- 记录 JSON：<https://awesomerea.org/resources/re-plants-vs-zombies-decomp-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/re-plants-vs-zombies-decomp-case/index.md)

## 使用条件与局限

- README 介绍项目旨在反编译初代 PvZ 的最新功能，并扩展游戏及其引擎；它建立在 Miya（rspforhp）已删除的 0.9.9 版反编译之上，并感谢 ruslan831 将其存档。路线图将 x64 支持和成就标为部分完成，GLFW 渲染器与跨平台替换标为进行中，Zombatar 和模组 API 尚未完成。项目没有发布版；最后一次提交日期为 2026-07-11。
- 游玩需要购买所得副本中的原版游戏文件；README 链接 Steam 年度版，但未注明确切的可执行文件版本。构建出的可执行文件在该游戏目录中运行，音频代码在运行时加载 bass.dll 或 fmod.dll，而不是链接仓库内提交的副本。README 称仓库除开源引擎外不含 PopCap 的任何 IP；Resources.cpp/.h 重建了游戏生成的资源 ID 表，属于从游戏导出的数据，这在此类项目中很常见。
- 构建需要 CMake 3.16 及以上和 C++23。README 介绍了 Visual Studio Community（CMakeSettings.json 提供 x86 与 x64 的 MSVC 配置）或 CMake 搭配 Ninja 两种方式；toolchain.cmake 使用 x86_64-w64-mingw32 Clang 和 windres 交叉编译。所审构建产出 Windows 可执行文件，仓库没有 CI 工作流。
- 来源未记录测试、CI 或与原版可执行文件的比较；贡献者会为逆向出的函数和类成员标注其 GOTY 版地址。与原游戏的一致程度未经衡量。
- LICENSE 以 CC0 1.0 释出仓库。SexyAppFramework 代码源自 PopCap 公开的引擎，但仓库未附 PopCap 的许可证文本；ogg 代码保留 Xiph.org 的 BSD 式声明，FMOD 3（Firelight，1999–2002）与 BASS 2.4（Un4seen，1999–2022）的 API 头文件仍归各自厂商所有。原版游戏及其文件仍受其权利人的条款约束。README 表示项目不纵容盗版。

## 一手来源

1. <https://github.com/Patoke/re-plants-vs-zombies/blob/c4692036c5e11d227c8fb7c593b734dac96da028/README.md>
2. <https://github.com/Patoke/re-plants-vs-zombies/blob/c4692036c5e11d227c8fb7c593b734dac96da028/CMakeLists.txt>
3. <https://github.com/Patoke/re-plants-vs-zombies/blob/c4692036c5e11d227c8fb7c593b734dac96da028/SexyAppFramework/CMakeLists.txt>
4. <https://github.com/Patoke/re-plants-vs-zombies/blob/c4692036c5e11d227c8fb7c593b734dac96da028/CMakeSettings.json>
5. <https://github.com/Patoke/re-plants-vs-zombies/blob/c4692036c5e11d227c8fb7c593b734dac96da028/toolchain.cmake>
6. <https://github.com/Patoke/re-plants-vs-zombies/blob/c4692036c5e11d227c8fb7c593b734dac96da028/LawnApp.cpp>
7. <https://github.com/Patoke/re-plants-vs-zombies/blob/c4692036c5e11d227c8fb7c593b734dac96da028/Resources.cpp>
8. <https://github.com/Patoke/re-plants-vs-zombies/blob/c4692036c5e11d227c8fb7c593b734dac96da028/SexyAppFramework/sound/BassLoader.cpp>
9. <https://github.com/Patoke/re-plants-vs-zombies/blob/c4692036c5e11d227c8fb7c593b734dac96da028/SexyAppFramework/sound/fmod.h>
10. <https://github.com/Patoke/re-plants-vs-zombies/blob/c4692036c5e11d227c8fb7c593b734dac96da028/SexyAppFramework/sound/bass.h>
11. <https://github.com/Patoke/re-plants-vs-zombies/blob/c4692036c5e11d227c8fb7c593b734dac96da028/SexyAppFramework/ogg/COPYING>
12. <https://github.com/Patoke/re-plants-vs-zombies/blob/c4692036c5e11d227c8fb7c593b734dac96da028/LICENSE>

## 同分区更多条目：游戏

- [REDRIVER2：借助 PlayStation 兼容层重建 Driver 2](https://awesomerea.org/zh/resources/redriver2-case/index.md) · 案例
- [RSDKv3 Decompilation：在重建的 Retro Engine v3 上运行 Sonic CD（2011）](https://awesomerea.org/zh/resources/rsdkv3-sonic-cd-decomp-case/index.md) · 案例
- [RSDKv4 Decompilation：Retro Engine v4 与《索尼克》1、2（2013）菜单的反编译](https://awesomerea.org/zh/resources/rsdkv4-sonic-1-2-decomp-case/index.md) · 案例
- [RSDKv5 Decompilation：重建 Retro Engine v5 与 v5U](https://awesomerea.org/zh/resources/rsdkv5-engine-decomp-case/index.md) · 案例
- [Sonic Mania：面向 RSDKv5 引擎的游戏代码反编译重建](https://awesomerea.org/zh/resources/sonic-mania-decomp-case/index.md) · 案例
- [SpaceCadetPinball：将反编译游戏逻辑适配到 SDL2](https://awesomerea.org/zh/resources/space-cadet-pinball-case/index.md) · 案例

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
