本页目录

wipeout-rewrite:PSX 竞速游戏 wipEout 的 C 语言重写版

wipeout-rewrite · phoboslab/wipeout-rewrite

用 C 语言重新实现 1995 年 PSX 竞速游戏 wipEout 的开源项目,作者标注仍在开发中、可能有 bug。提供 SDL2 与 Sokol 两套后端:SDL2 支持手柄并使用 OpenGL 2.x,Sokol 使用 OpenGL 3.3 但不支持手柄,且仅支持 macOS、Linux、Windows...

动作游戏 平台跳跃 自研引擎 其他 角色控制 碰撞检测 物理系统 关卡管理 专家
★ Stars 3,010 Forks 268 License 未明确 更新 2026-11-10

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
官方声明支持
引擎 / 框架:自研引擎 暂无中文教程标记 未标记站长实测
国内访问 GitHub、Discord、Crowdin 可能不稳定;构建依赖和工具链需按官方文档准备,具体细节待核验;运行需自备合法 PS2 游戏副本,项目不包含原游戏资源。

中文项目介绍

OpenGOAL(仓库 open-goal/jak-project)是一个以“原生移植”为目标的逆向工程与反编译项目,对象是 Naughty Dog 在 PlayStation 2 时代推出的《Jak & Daxter》三部曲。它并不打算用模拟器或解释器去跑原版光盘,而是把原作中由 GOAL 语言编写的游戏逻辑反编译回人类可读的源代码,再用项目自行实现的编译器重新编译成 x86-64 原生程序。换句话说,最终产物是一个跑在 PC 上的本地应用,追求高性能,既不模拟也不逐条解释执行,更不是把字节码转译成别的语言。仓库首页同时提供文档站、Crowdin 本地化入口、Linux/Windows 构建徽章与 Discord 社区链接,说明这是一个长期维护、有社区协作的工程,而不只是一个实验性 Demo。

项目的核心前提是:原作超过 98% 的代码是用 GOAL 写的,这是 Naughty Dog 自研的一门 Scheme 系 Lisp 方言。因此整条技术路线的第一步是“把这门语言复活”——重新实现 GOAL 编译器,让它能把反编译出来的源码编译成 x86-64 机器码。README 明确列出了几条设计目标:编译器性能大致对标未优化的 C;尽量贴近原作开发体验,例如原版 GOAL 编译器支持在游戏运行时热修改代码,项目也照做,尽管单纯移植并不需要这个能力;同时要支持修改(mod),也就是改动一部分代码不会让其他部分崩掉。这种“保留可交互开发环境”的取向,是该项目区别于普通移植版的重要特征。

反编译的方法论在 README 中有具体描述:团队自建了一个反编译器,专门处理原版 GOAL 编译器的输出;由于反编译并非总能一次成功,开发者需要手工标注函数类型以及他们认为原代码中存在类型转换的位置,反复尝试直到反编译通过,然后清理输出——补注释、调整格式——再存入 goal_src/ 目录。因为反编译器是针对原编译器产物定制的,只要类型标注正确,它经常能直接产出可以喂回编译器并正常工作的代码,这一点由项目的单元测试持续验证。资产方面另有一条并行管线:先把 ISO 中的游戏资源提取出来,转成便于查看和修改的格式,再提供工具把这些资源重新打包成移植版所使用的格式。

核心功能

核心特性

关于合法性与素材来源,README 用醒目段落做了强调:使用该反编译项目必须自备合法购买的 PS2 游戏拷贝,OpenGOAL 本身不包含任何原游戏的资产。项目支持所有零售版 PAL、NTSC 与 NTSC-J 版本,包括 Greatest Hits 版本,但不包括后来在 PS3/PS4/PS5 上的再发行版本。这意味着使用者需要先从自己的光盘得到 ISO,再把内容解压到 iso_data/ 之类的目录中,才能继续后面的步骤。对于想直接“下载即玩”的人来说,这一条是必须先了解的门槛。

构建流程在 README 中被拆成四步:先编译 C++ 工具链,然后用 task 命令设定目标游戏与版本(例如 task set-game-jak1、task set-decomp-ntscv1 或 PAL 对应项),执行 task extract 抽取资产,接着在 REPL 中运行 (mi) 触发编译器构建游戏,最后另开终端 task boot-game 启动。REPL 是这个项目的一大特色:编译成功后执行 (lt) 可以把 REPL 连接到正在运行的游戏进程,提示符从 g 变为 gc,此时可以在游戏运行中检查和修改代码或数据,例如打印 target 查看与主角相关的基础信息。对熟悉 Lisp 交互式开发的人来说,这套工作流相当亲切;对不熟悉的人,则需要按文档一步步配置,README 也提醒若非默认版本,可能需要通过 gameVersionFolder 之类的配置字段告知路径,否则会遇到找不到 MUS 文件之类的报错。

平台支持方面,README 写明当前支持 Windows、Linux 与 macOS 上的 x86_64,其中 macOS 通过 Rosetta 转译运行,并且明确表示没有推出移动版的计划。仓库里还提供了 Visual Studio、VS Code、Zed 等编辑器的配置说明,以及 Windows、Linux、macOS、Docker 四种系统环境的搭建文档,方便想参与开发的人上手。但 README 开头也提醒:GitHub 仓库主要用于项目开发和问题跟踪,其中大部分内容是关于“如何为开发目的搭建项目”的,与终端玩家关系不大;想安装并游玩,应参考官网文档与官方提供的安装视频。

技术架构分析

技术要点

当前完成度按官方说法分为三档:Jak 1 已被认为处于打磨完善、可视为完成的状态多年;Jak 2 因仍有若干已知问题被标为 beta,但对休闲玩家而言基本等同完整;Jak 3 还有相当多的工作要做。由于各版本的修复进度会不断变化,具体可玩程度应以官方文档和仓库说明的最新内容为准。

从学习角度看,这个仓库的价值不在“照着做一个平台跳跃游戏”,而在于它展示了一整套罕见的工程组合:为一门已消亡的厂商自研 Lisp 方言重写编译器、针对特定编译器输出定制反编译器、设计资产提取与重打包格式、以及把一个 PS2 原生程序改造成 PC 原生应用并保留运行时热更新能力。适合对编译器实现、Lisp 方言、二进制逆向、游戏资源格式和原生移植感兴趣的中高级开发者研究;阅读 goal_src/ 中清理过的 GOAL 代码,也能一窥 3D 平台游戏在角色控制、碰撞、物理、动画、渲染与关卡管理等方面的组织方式。需要注意的是,这不是入门级项目:它要求使用者自己准备合法 ISO、配置 C++ 与任务运行器工具链,并具备一定的逆向工程耐心;国内环境下从 GitHub 拉取依赖和构建产物时可能遇到网络缓慢问题,建议提前准备镜像或代理,具体可用性待核验。

开源许可证与版权说明

许可证标识:未明确。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目