wszqkzqk/PvZ-Portable
游戏用合法游戏资源在多个平台上重玩《植物大战僵尸年度版》的 C++20 社区重实现。
项目定位
PvZ-Portable 是《植物大战僵尸:年度版》的社区净室重实现,用 C++20 编写,目标是把这款经典游戏带到现代桌面、移动设备、主机和浏览器。它用 SDL3 + OpenGL ES 2.0 替代原版的固定分辨率和平台绑定代码,同时加入跨架构存档、确定性回放等现代化能力。仓库不包含 PopCap/EA 的任何美术、音频或字体资源,玩家需要自备正版年度版的 main.pak 和 properties/ 目录。
快速开始
- 准备资源:从已购买的年度版中获取
main.pak和properties/目录(Steam 或 EA)。推荐基于 GOTY 1.2.0.1073 英文版;其他官方版本可玩,但可能出现少量 UI 文本差异。非 1.2.0.1073 资源可运行python3 scripts/make-compat-overrides.py "/path/to/main.pak"生成兼容覆盖文件。 - 安装或运行:从 Releases 下载对应平台的原生包,或直接打开 WebAssembly 在线版 在浏览器中运行。
- 桌面端:把
main.pak和properties/放到pvz-portable可执行文件同目录,启动即可。存档和缓存写入系统应用数据目录下的io.github.wszqkzqk/PvZPortable。 - Android:安装
arm64-v8aAPK,首次启动时导入包含资源的 ZIP 或目录,然后点击 Start Game。iOS 需侧载未签名 IPA,再通过「文件」App 把资源复制到应用文稿目录。
存档与工具
默认的中局存档格式 .v4 使用字段级序列化,可在 Windows、Linux、macOS、Android、iOS、网页和 Switch 之间跨 32/64 位及不同 CPU 架构直接迁移。旧版 .dat 存档仍可读取,并会自动迁移为 .v4。仓库自带 scripts/pvzp-v4-converter.py,提供 info、export、import 子命令,可查看存档统计或转换成 YAML 后编辑。命令行参数包括 -resdir、-savedir、-record 和 -play,可录制和回放确定性的 .dmo 对局。
使用约束
必须自备正版游戏资源,否则无法启动。从源码构建需要 C++20 编译器、CMake 3.12+、Ninja、SDL3(>= 3.2.12)、SDL3_mixer、libopenmpt、libpng、libjpeg-turbo 和 zlib。Android 需要 7.0+,iOS/iPadOS 需要 16.4+ 且为 arm64,使用免费 Apple ID 签名时 7 天后过期。大端架构有设计支持但未在实体硬件上测试;Haiku 支持不完整(无音乐);Switch 真机可用,但 Kenji-NX 启动会崩溃。代码采用 LGPL-3.0-or-later,游戏资源版权仍归 PopCap/EA。
HotRepo 点评
在 2026 年 11 月 13 日的 C++ 日榜中,该项目位列第 3,累计 896 Star、206 Fork,当天新增 7 Star。对 C++ 游戏重实现来说这是不错的名次,但只有单次快照,不能据此判断长期热度走向。技术上更值得注意的是 WebAssembly 在线运行、多架构存档和引擎与资源分离这三项组合,它们直接关系到已经拥有正版、想在现代硬件上重玩的用户。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。