
简介(Intro)
在这个仓库中,你可以找到 GTA III 和 GTA Vice City 的完整逆向源代码:
- GTA III:
master分支 - GTA Vice City:
miami分支
项目已经经过测试,可以运行在:
- Windows
- Linux
- macOS
- FreeBSD
同时支持以下 CPU 架构:
- x86
- amd64(x86-64)
- ARM
- ARM64
图形渲染
图形渲染可以使用:
- 原版 RenderWare(D3D8 / Direct3D 8)
- re3 重新实现的 librw
其中 librw 支持:
- D3D9(Direct3D 9)
- OpenGL 2.1 或更高版本
- OpenGL ES 2.0 或更高版本
音频
音频系统可以使用:
- MSS(Miles Sound System)
使用的是原版 GTA 中的 DLL 文件;
或者:
- OpenAL
目前,我们还无法构建 PS2 或 Xbox 版本。
如果你有兴趣进行 PS2 或 Xbox 移植,请与我们联系。
安装(Installation)
- reVC 需要游戏资源才能正常运行,因此你必须拥有一份 GTA Vice City。
也就是说,reVC 本身并不包含完整的 Vice City 游戏资源,它需要使用你自己的 GTA Vice City 游戏文件。
编译 reVC 或下载最新编译版本
可以自行从源代码编译 reVC,也可以直接下载最新的编译版本:
- Windows D3D9 + MSS 32 位
- Windows D3D9 64 位
- Windows OpenGL 64 位
- Linux 64 位
- macOS 64 位 x86-64
安装方法
下载对应的 ZIP 压缩包之后:
将下载的 ZIP 文件解压到你的 GTA Vice City 游戏目录中,然后运行 reVC。
压缩包中包含:
- reVC 的可执行程序
- 更新后的游戏文件
- 额外的游戏文件
- 如果使用 OpenAL,还会包含运行所需要的 DLL 文件
简单来说就是:
准备 GTA Vice City → 下载 reVC → 把 reVC 压缩包解压到 GTA VC 根目录 → 运行 reVC。
截图(Screenshots)




改进(Improvements)
我们对原版游戏进行了大量修改和改进。这些功能可以在 core/config.h 中进行配置。其中一些功能可以在游戏运行时切换,而另一些则不能。
-
修复了大量大大小小的 Bug
-
用户文件(存档和设置)储存在 GTA 游戏根目录中
-
游戏设置储存在
reVC.ini文件中,而不是原版的gta_vc.set -
增加调试菜单,可以执行和修改各种内容(按 Ctrl-M 打开)
-
增加调试摄像机(按 Ctrl-B 切换)
-
支持旋转摄像机
-
支持 XInput 手柄(Windows)
-
不同岛屿之间不再需要加载画面
- 相关选项可以在菜单中的 **“map memory usage”(地图内存使用量)**进行设置
-
渲染方面:
- 支持宽屏(HUD、菜单和 FOV 均会正确缩放)
- PS2 MatFX(车辆反射效果)
- PS2 Alpha Test(改善透明材质的渲染效果)
- Xbox 车辆渲染
- Xbox 世界光照贴图渲染(需要 Xbox 地图)
- Xbox 行人边缘光(Rim Light)
- Xbox 屏幕雨滴效果
- 更加自由、可自定义的颜色滤镜
-
菜单方面:
- 更多选项
- 手柄配置菜单
- ……
-
可以加载来自其他平台的 DFF 和 TXD 文件,但可能会带来一定的性能损失
-
……
待办事项(To-Do)
以下功能如果能够实现会非常不错:
-
修复高 FPS 下的物理问题
-
改善低端设备上的性能,尤其是 Raspberry Pi 上的 OpenGL 图形层
- 如果你有相关经验,请与我们联系
-
PS2 移植版
-
Xbox 移植版(重要性相对较低)
-
逆向剩余的未使用/调试函数
-
将 CodeWarrior 编译版本与原始二进制文件进行对比,以获得更加准确的代码
- 这项工作非常繁琐
Mod 制作(Modding)
资源方面的修改,例如:
- 模型
- 纹理
- 车辆操控参数(Handling)
- 脚本
- 等等
在绝大多数情况下,都应该与原版 GTA 的 Mod 制作方式相同。
但是,会修改游戏代码的 Mod 无法工作,例如:
- DLL / ASI
- CLEO
- Limit Adjuster(限制调整器)
有些这类 Mod 所实现的功能已经直接集成到了 reVC 中,例如:
- SkyGFX 的大量功能
- GInput
- SilentPatch
- Widescreen Fix
其他一些功能则可以很容易地实现,例如提高游戏的各种限制,具体可以查看 config.h。
还有一些功能则必须重新编写,然后直接整合进 reVC 的代码中。
对于因此带来的不便,我们深表歉意。
从源代码编译(Building from Source)
使用 Premake 时,如果希望通过编译后的脚本自动将可执行文件移动到 GTA Vice City 游戏根目录,可以将环境变量:
GTA_VC_RE_DIR
设置为你的 GTA Vice City 游戏根目录。
然后使用以下命令克隆仓库:
git clone --recursive -b miami https://github.com/GTAmodding/re3.git reVC
这里的 -b miami 表示直接克隆 miami 分支,也就是 reVC 的代码。
然后进入克隆下来的目录:
cd reVC
项目支持:
- Linux
- Windows
- macOS
- FreeBSD
Premake
如果希望使用 **Link Time Optimization(LTO,链接时优化)**来编译项目,可以使用 Premake 的:
--with-lto
选项。
另外,config.h 中存在各种各样的设置,建议查看这个文件。
librw
reVC 使用的是一个完全自行开发的 RenderWare 替代渲染引擎:
librw
librw 作为 re3 项目的 Git 子模块存在。
不过,你也可以使用 LIBRW 环境变量,指定自己使用的 librw 路径。
使用 CodeWarrior 7 编译
如果有需要,也可以使用 CodeWarrior 7,通过项目提供的:
codewarrior/reVC.mcp
工程来编译 reVC。
但是,这需要:
- 原版 RW34 库
- DX8 SDK
与 MSVC 编译版本相比,CodeWarrior 版本的构建过程并不稳定。
它主要是作为参考用途存在的。
贡献代码(Contributing)
只要不是 Linux / 跨平台框架 / 兼容层代码,仓库中所有没有被预处理器条件(例如 FIX_BUGS)包起来的代码,都是:
从原始游戏二进制文件中完整逆向得到的代码。
我们不接受自行编写的自定义代码,除非这些代码:
- 使用预处理器条件进行封装;
- 或者属于 Linux / 跨平台框架 / 兼容层代码。
我们只接受以下类型的 Pull Request(PR):
-
GTA 系列至少一个游戏中已经存在的新功能
- 如果 GTA III / Vice City 原本没有该功能,则不要求必须通过反编译得到
-
游戏、UI 或 UX 的 Bug 修复
- 如果是对原始游戏代码的修复,则应该放在
FIX_BUGS条件下
- 如果是对原始游戏代码的修复,则应该放在
-
尚未完成逆向的平台专用代码和/或未使用代码
-
让逆向代码更加容易理解或更加准确
- 例如研究“什么样的代码能够产生与原始汇编代码相同的结果”
-
新的跨平台框架/兼容层,或者对现有框架/兼容层进行改进
-
对原版游戏支持的语言进行翻译修正
-
能够提高代码可维护性的代码
项目拥有一份 Coding Style(代码风格)文档,不过实际上并没有很好地遵守或强制执行。
不要使用 C++11 或更高版本的功能。
历史(History)
re3 项目大约于 2018 年春季开始。
最初,它只是一个用来测试逆向出来的碰撞和物理代码的项目。
当时的做法是:
使用 DLL,将游戏中的单个函数替换成逆向得到的对应函数。
经过一段时间的开发后,项目沉寂了大约一年。
随后项目重新启动,并于 2019 年 5 月被上传到 GitHub。
当时,作者 aap 已经逆向了大约 1 万行代码,并估计最终完整游戏大约会有 20~25 万行代码。
之后其他开发者迅速加入了项目,包括:
- Fire_Head
- shfil
- erorcun
- Nick007J
- Serge(稍晚加入)
2019 年夏季期间,项目进展非常迅速,之后开发速度有所放缓。
由于新冠疫情开始时大家都待在家里,开发者们再次拥有了大量时间投入 re3。
最终在 2020 年 4 月,re3 成功获得了一个可以独立运行的 EXE。
当时项目已经拥有大约 18 万行代码。
在最初的兴奋期结束后,开发者继续修复 Bug、完善和打磨代码。
随后在 2020 年 5 月初开始了 reVC 项目。
reVC 并不是从零开始,也不是继续使用 DLL 替换单个函数的方式开发,而是直接以 re3 的代码为基础开始开发。
经过几个月基本稳定的开发后,开发者们在 2020 年 12 月认为 reVC 已经完成。
之后,他们又开始了 reLCS 项目。
当时 reLCS 仍然处于开发阶段。
许可证(License)
我们认为目前自己还没有资格为这些代码制定一个正式的许可证。
这些代码只能用于以下用途:
- 教育
- 文档
- Mod 制作
我们不鼓励盗版或商业用途。
如果你基于本项目制作衍生作品,请:
- 保持衍生作品开源
- 正确注明原作者和来源













