Patoke/re-plants-vs-zombies

GitHub: Patoke/re-plants-vs-zombies

通过逆向工程完整重建《植物大战僵尸》年度版,并将老旧引擎迁移至现代 C++ 和 GLFW 跨平台渲染架构的开源重制项目。

Stars: 169 | Forks: 33

# re-plants-vs-zombies 一个专注于反编译初代 PvZ 最新功能,并在此基础上扩展该游戏及其引擎的项目 可追溯至 2005 年的 SexyAppFramework 是一款非常古老的游戏引擎,它既不符合现代标准的 C++ 规范,也没有使用现代的渲染器后端 本项目旨在通过引入最新 C++ 标准的特性来使该引擎现代化,同时将老旧的 DirectDraw 和 Direct3D7 渲染器替换为现代的 [GLFW](https://www.glfw.org/) 跨平台封装库;此外,本项目还扩展了由 [Miya aka Kopie](https://github.com/rspforhp) 制作的(现已删除的)PvZ 0.9.9 版本旧反编译项目,旨在为模组开发者和玩家提供尽可能完美的 PvZ 体验 # 免责声明 本项目不支持盗版行为 本项目不包含任何来自 PopCap 的知识产权(其开源游戏引擎除外),本项目的输出仅为反编译后的 PvZ 粉丝版本的执行文件 要使用本项目运行游戏,您需要通过[购买](https://store.steampowered.com/app/3590/Plants_vs_Zombies_GOTY_Edition/)获取原始游戏文件的访问权 ## 路线图 #### 当前专注于 - [x] 为基础游戏添加 x64 支持 **(部分完成)** - [ ] 将旧渲染器后端替换为 GLFW **(进行中)** - [ ] 将所有 Windows 专属代码替换为跨平台的 GLFW 对应实现 **(进行中)** #### 待完成事项(当基于 GLFW 的 x64 版本构建可用后) - [ ] 添加游戏 GOTY 版本的所有功能 - [x] 成就系统 **(部分完成)** - [ ] Zombatar #### 未来的可能功能 - [ ] 为游戏创建易于使用的模组 API - [ ] 从文件中解析僵尸 - [ ] 从文件中解析植物 - [ ] 从文件中解析地图 - [ ] 添加用于自定义序列的脚本功能 ## 安装说明 ### Visual Studio Community 打开包含 `CMakeSettings.json` 的文件夹,等待缓存生成完毕,然后构建项目 ### 其他(Sublime, Visual Studio Code 等) 在包含 `CMakeSettings.json` 文件的目录下运行以下命令(假设您已安装带有 Ninja 的 CMake) `cmake -G Ninja -B cmake-build` `cmake --build cmake-build` 如果运行这些命令未能成功构建,请[创建一个 issue](https://github.com/Patoke/re-plants-vs-zombies/issue) 并详细描述您的问题 构建完成后,输出的执行文件应位于 `SexyAppFramework` 内的 `Debug` 或 `Release`(取决于您的构建目标)文件夹中 然后,您需要将该执行文件复制到原始游戏的根目录中(或者将原始游戏文件夹的内容复制到上述文件夹中) 之后,您应该就能直接打开构建好的执行文件,尽情享受 re-pvz 了! ## 参与贡献 参与贡献时,请遵循以下指南:
SexyAppFramework 编码理念 #### 摘自 SexyAppFramework 文档:
该框架与许多其他 API 的不同之处在于,某些类属性没有被封装在访问器方法中,而是允许作为公共成员数据直接访问。例如,要设置应用程序的窗口标题,只需在创建应用程序窗口之前,为应用程序对象中的 std::string mTitle 赋值即可。我们认为在许多情况下,这减少了实现一个类所需的代码量。另一个值得注意的是变量使用的前缀表示法:“m”表示类成员,“the”表示传递给方法或函数的参数,“a”表示局部变量。
贡献者标记
当您需要留下注释供其他开发者查看时,请遵循以下语法: * 始终包含贡献者的名称,例如: * `@Contributor` * 对于待办事项,需包含 todo 标记,例如: * `@Contributor todo` * 始终添加一个冒号,以表示注释内容从此处开始 * `@Contributor todo: 出现了错误!` * 如果您反编译了一个新函数,并在最新版本的游戏中找到了其地址(或者反编译了某个类成员的偏移量),请按以下格式进行标注: * `@Contributor GOTY: 0xADDRESS`
## 特别感谢 - [@rspforhp](https://www.github.com/octokatherine) 对反编译 PvZ 0.9.9 版本所做的出色工作 - [@ruslan831](https://github.com/ruslan831) 对 [PvZ 0.9.9 反编译项目](https://github.com/ruslan831/PlantsVsZombies-decompilation) 的归档 - GLFW 团队的杰出贡献 - PopCap 创造了出色的 PvZ 系列(并将其游戏引擎开源) - 所有曾参与或正在积极参与这个了不起的项目的贡献者
标签:Bash脚本, C++, D3D7, DirectDraw替代, DNS解析, GLFW, URL提取, Windows到跨平台迁移, x64架构, 代码重构, 反编译, 图形渲染, 开源复刻, 开源项目, 数据擦除, 植物大战僵尸, 游戏Mod, 游戏修改, 游戏开发, 游戏引擎, 游戏逆向工程, 现代C++, 跨平台开发, 逆向分析