必须自备合法购买的 PS2 原版游戏 ISO,项目不含任何游戏资源;非默认版本需在配置中设置 gameVersionFolder,否则 (mi) 会报找不到 iso_data 文件;GitHub 仓库面向开发构建,普通玩家应参考官网或视频安装指南。

jak-project
open-goalISC活跃维护用 Common Lisp 重写并复活《Jak & Daxter》系列游戏的自定义 Lisp 语言与运行时,让玩家能在现代平台编译运行这些 PS2 经典游戏。
Reviving the language that brought us the Jak & Daxter Series
task set-game-jak1
task set-decomp-ntscv1
task extract
task replREADME 未说明具体硬件要求;仅说明支持 x86_64 的 Windows、Linux 和 macOS(macOS 通过 Rosetta 转译),无移动端计划。
把 Jak & Daxter 三部曲的 GOAL 代码反编译并重编译到 PC 原生运行
用 Common Lisp 重写并复活《Jak & Daxter》系列游戏的自定义 Lisp 语言与运行时,让玩家能在现代平台编译运行这些 PS2 经典游戏。
核心能力
- 反编译原版 GOAL 代码为可读源码
- 自研 GOAL 编译器重编译到 x86-64
- 提供资源提取与重打包工具链
- 支持运行时 REPL 热改代码与数据
- 支持玩家自制修改而不破坏其他部分
容易踩的坑
- v0.3.9最新正式版2026-10-15 · 2026-10-15 23:15 UTC
What's Changed
- [jak3] logior! instead of set! HERO_MODE_FEATURES by @dallmeyer in https://github.com/open-goal/jak-project/pull/4425
- CI: Periodic Controller Database Update by @OpenGOALBot in https://github.com/open-goal/jak-project/pull/4432
- [jak3] polish translation by @rafalekkB in https://github.com/open-goal/jak-project/pull/4431
- jak1: Fix hint subtitles sometimes missing by @LuminarLight in https://github.com/open-goal/jak-project/pull/4440
- CI: Periodic Controller Database Update by @OpenGOALBot in https://github.com/open-goal/jak-project/pull/4437
- build(deps): bump mathieudutour/github-tag-action from 6.2 to 7 by @dependabot[bot] in https://github.com/open-goal/jak-project/pull/4433
- build(deps): bump hendrikmuhs/ccache-action from 1.2.23 to 1.2.24 by @dependabot[bot] in https://github.com/open-goal/jak-project/pull/4434
- [Jak 3] Fix Onin's Tent Minimap icon showing up in the desert by @Blake645 in https://github.com/open-goal/jak-project/pull/4435
- [jak3] Fix glider crash after playing sniper cannon mission by @dallmeyer in https://github.com/open-goal/jak-project/pull/4443
New Contributors
- @Blake645 made their first contribution in https://github.com/open-goal/jak-project/pull/4435
Full Changelog: https://github.com/open-goal/jak-project/compare/v0.3.8...v0.3.9
- v0.3.82026-09-20 · 2026-09-20 04:27 UTC
查看更新说明
What's Changed
- arm64: Apple Silicon support by @Parker-Aphelion in https://github.com/open-goal/jak-project/pull/4390
- ci: revert change to compilation check by @xTVaser in https://github.com/open-goal/jak-project/pull/4394
- [Jak 2 and Jak 3]: Fixing menu text boundaries and drawing alignments for Automatic and Custom aspect ratios by @Jakjm in https://github.com/open-goal/jak-project/pull/4380
- [jak3] Extend speedrun menus for selecting secrets by @dallmeyer in https://github.com/open-goal/jak-project/pull/4397
- CI: Periodic Controller Database Update by @OpenGOALBot in https://github.com/open-goal/jak-project/pull/4403
- Added missing header to fix compiler error. by @Jakjm in https://github.com/open-goal/jak-project/pull/4396
- d/jx: More files by @xTVaser in https://github.com/open-goal/jak-project/pull/4360
- Add imgui option to restart in retail mode by @dallmeyer in https://github.com/open-goal/jak-project/pull/4404
- [jak3] Add autosplits for side mission golds, orbs per level by @dallmeyer in https://github.com/open-goal/jak-project/pull/4398
- decompiler: fix missing merc and shrub texture replacements by @trippjoe in https://github.com/open-goal/jak-project/pull/4405
- d/jx: Disassemble and compare VU programs, add reference tests, create a diff report by @xTVaser in https://github.com/open-goal/jak-project/pull/4406
- [jak3]
game-scoredecomp cleanup, track minigame rank in autosplitter instead of task status by @dallmeyer in https://github.com/open-goal/jak-project/pull/4409 - CI: Periodic Controller Database Update by @OpenGOALBot in https://github.com/open-goal/jak-project/pull/4408
- ci: fix issues in offline test workflow when running for an untrusted author by @xTVaser in https://github.com/open-goal/jak-project/pull/4411
- fix(docs): Update path for project-overview iso_data-help file by @gogoasa-c in https://github.com/open-goal/jak-project/pull/4407
- CI: Periodic Controller Database Update by @OpenGOALBot in https://github.com/open-goal/jak-project/pull/4416
- cmake: point to correct draco_features.h location by @BreakPoints in https://github.com/open-goal/jak-project/pull/4410
- [decompiler] Extracting Sound Effects and Music by @Jakjm in https://github.com/open-goal/jak-project/pull/4401
- Time Of Day Colors for GLBs by @Jakjm in https://github.com/open-goal/jak-project/pull/4111
- jak2: fix language change not working through progress menu by @ManDude in https://github.com/open-goal/jak-project/pull/4418
- decompiler: limit level extraction workers to hardware concurrency by @trippjoe in https://github.com/open-goal/jak-project/pull/4417
- goalc: default to arm64 when built for ARM by @trippjoe in https://github.com/open-goal/jak-project/pull/4419
- ci: allow explicitly providing the release tag by @xTVaser in https://github.com/open-goal/jak-project/pull/4421
- extractor: dont default to x86 instructions on arm64 by @trippjoe in https://github.com/open-goal/jak-project/pull/4420
- ci: ensure explicit tag is pushed in release pipeline by @xTVaser in https://github.com/open-goal/jak-project/pull/4422
- ci: use
ghinstead ofgitin release-pipeline by @xTVaser in https://github.com/open-goal/jak-project/pull/4423
New Contributors
- @gogoasa-c made their first contribution in https://github.com/open-goal/jak-project/pull/4407
Full Changelog: https://github.com/open-goal/jak-project/compare/v0.3.6...v0.3.8
- v0.3.62026-08-25 · 2026-08-25 03:22 UTC
查看更新说明
What's Changed
- goalc: fix compilation error in arm64 code by @iHR4K in https://github.com/open-goal/jak-project/pull/4337
- [jak1] Patch autosave/progress lock in speedrun mode by @dallmeyer in https://github.com/open-goal/jak-project/pull/4340
- Update
def-actorto version 8 for jak3 by @dallmeyer in https://github.com/open-goal/jak-project/pull/4342 - [jak1] Prevent debug crash in subtitle code by @dallmeyer in https://github.com/open-goal/jak-project/pull/4348
- Jak 2 - Polish base game text translation + updating font db by @rafalekkB in https://github.com/open-goal/jak-project/pull/4332
- New Crowdin updates - July 2026 by @xTVaser in https://github.com/open-goal/jak-project/pull/4349
- fix(gfx): generate cloud mipmaps after unbinding the render FBO by @semeaj in https://github.com/open-goal/jak-project/pull/4344
- CI: Periodic Controller Database Update by @OpenGOALBot in https://github.com/open-goal/jak-project/pull/4351
- jak2: Add Brazilian Portuguese base game text by @rafaa-freitas in https://github.com/open-goal/jak-project/pull/4350
- game: ensure overwritten subtitle lines have the
mergeflag disabled by @xTVaser in https://github.com/open-goal/jak-project/pull/4352 - fix(runtime): add missing break after JakX goal_main (jakx) by @semeaj in https://github.com/open-goal/jak-project/pull/4356
- [jak3] fix missing Hfrag desert terrain on macOS by @trippjoe in https://github.com/open-goal/jak-project/pull/4353
- [jak1] Reinstate NaN check in nav code by @dallmeyer in https://github.com/open-goal/jak-project/pull/4359
- Jak 1: Add Galician base text translation as well as game_text.gp update by @SilversHotsuin in https://github.com/open-goal/jak-project/pull/4358
- goalc: add debug server by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4365
- CI: Periodic Controller Database Update by @OpenGOALBot in https://github.com/open-goal/jak-project/pull/4368
- fix: Windows toolchain compatibility (curl 8.21 re-vendor, endless reconfigure loop) by @semeaj in https://github.com/open-goal/jak-project/pull/4355
- Jak1: Changed one line to fit the screen in 4X3 (Galician) by @SilversHotsuin in https://github.com/open-goal/jak-project/pull/4363
- custom levels: fix potential use after free in custom region generation on windows by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4369
- fix: typo in decompression error checking by @trippjoe in https://github.com/open-goal/jak-project/pull/4370
- decompiler: misc gltf exporter fixes by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4371
- CI: Periodic Controller Database Update by @OpenGOALBot in https://github.com/open-goal/jak-project/pull/4374
- cmake: look in
/usr/lib64for libraries as well by @xTVaser in https://github.com/open-goal/jak-project/pull/4379 - Fixed mirror world hud alignment. by @Jakjm in https://github.com/open-goal/jak-project/pull/4373
- goalc: replicate tests for the majority of ARM64 non-simd cases by @xTVaser in https://github.com/open-goal/jak-project/pull/4377
- CI: Periodic Controller Database Update by @OpenGOALBot in https://github.com/open-goal/jak-project/pull/4382
- goalc: arm64 vector float ops were not float ops by @Parker-Aphelion in https://github.com/open-goal/jak-project/pull/4384
- goalc: arm64 SIMD encoders emitted the wrong instructions by @Parker-Aphelion in https://github.com/open-goal/jak-project/pull/4385
- goalc: arm64 vector loads and stores with a register offset were wrong by @Parker-Aphelion in https://github.com/open-goal/jak-project/pull/4386
- [Jak 3]: Fixing spelling of precursor in french. by @Jakjm in https://github.com/open-goal/jak-project/pull/4381
- ci: install
brotliexplicitly on macOS runners by @xTVaser in https://github.com/open-goal/jak-project/pull/4392 - ci: fix another macOS dependency (http2) by @xTVaser in https://github.com/open-goal/jak-project/pull/4393
New Contributors
- @iHR4K made their first contribution in https://github.com/open-goal/jak-project/pull/433
- v0.3.52026-07-04 · 2026-07-04 01:15 UTC
查看更新说明
What's Changed
- build(deps): bump actions/checkout from 4 to 7 by @dependabot[bot] in https://github.com/open-goal/jak-project/pull/4329
- CI: Periodic Controller Database Update by @OpenGOALBot in https://github.com/open-goal/jak-project/pull/4327
- cmake: disable
libpslwhen building libcurl by @xTVaser in https://github.com/open-goal/jak-project/pull/4335 - goalc: Finish converting all load/store instructions to ARM64 by @xTVaser in https://github.com/open-goal/jak-project/pull/4334
- game: fall back to english splash screen before accessing map by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4336
Full Changelog: https://github.com/open-goal/jak-project/compare/v0.3.4...v0.3.5
- v0.3.42026-07-01 · 2026-07-01 21:20 UTC
查看更新说明
What's Changed
- CI: Periodic Controller Database Update by @OpenGOALBot in https://github.com/open-goal/jak-project/pull/4262
- Update Jak 1 Portuguese (pt-pt) translations by @luis-gmonkey in https://github.com/open-goal/jak-project/pull/4263
- jak3: fix dark eco vent powerup anim by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4269
- decomp: resolve first batch of trivial files by @xTVaser in https://github.com/open-goal/jak-project/pull/4266
- game: fix missing event.type comparison in joystick axis motion handler (pressure sensitive axii) by @trippjoe in https://github.com/open-goal/jak-project/pull/4286
- jak1: fix mole crash on foot by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4294
- jak2: add missing inline declaration in
vector*!by @trippjoe in https://github.com/open-goal/jak-project/pull/4287 - jak1: clean up
control-infonames and other misc cleanup by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4295 - build-actor: set
shader-cntto 0 for dummymerc-fragmentby @Hat-Kid in https://github.com/open-goal/jak-project/pull/4296 - decompiler:
extract_animmodel name remap by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4297 - jak3: make actor LOD setting affect lightning quality in elec gates by @ManDude in https://github.com/open-goal/jak-project/pull/4292
- CI: Periodic Controller Database Update by @OpenGOALBot in https://github.com/open-goal/jak-project/pull/4273
- jak3: Dev commentary subtitles by @Aloqas in https://github.com/open-goal/jak-project/pull/4281
- libco: Update to latest version from ares by @Ziemas in https://github.com/open-goal/jak-project/pull/4282
- custom levels: support custom regions in jak2/3 by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4300
- deps: update to SDL 3.4.10 by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4301
- [jak2/3] Fix dark/light eco HUD not flashing after save file is X hours old by @dallmeyer in https://github.com/open-goal/jak-project/pull/4285
- jak2/3: implement ocean envmap by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4303
- loader: allow manual reload of fr3 data by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4304
- jak3: fix zoom blur flashbang in retail by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4305
- CI: Periodic Controller Database Update by @OpenGOALBot in https://github.com/open-goal/jak-project/pull/4306
- decompiler: reduce memory usage during texture pack installation by lazily loading texture replacements and serializing level building by @trippjoe in https://github.com/open-goal/jak-project/pull/4278
- [jak3] proofreading & correcting FR subtitle lines by @YohanDFN in https://github.com/open-goal/jak-project/pull/4272
- ci: init offline runner allowlist by @xTVaser in https://github.com/open-goal/jak-project/pull/4307
- ci: move offline tests to a GHA self-hosted runner by @xTVaser in https://github.com/open-goal/jak-project/pull/4308
- [jak3] Include orbs in crates for track skill debug option by @dallmeyer in https://github.com/open-goal/jak-project/pull/4275
- [jak1] Show max of flying-lurker distances on HUD by @dallmeyer in https://github.com/open-goal/jak-project/pull/4309
- custom levels: support camera entities and custom keyframe values by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4310
- [jak3] track-skill: Better check for orbs collected from crate by @dallmeyer in https://github.com/open-goal/jak-project/pull/4312
- d/jx: Another round of files by @xTVaser in https://github.com/open-goal/jak-project/pull/4311
- CI: Periodic Controller Database Update by @OpenGOALBot in https://github.com/open-goal/jak-project/pull/4313
- decompiler: export blerc data to glb by @Hat-Kid in https://github.com/open-goal/jak-project/pull/4316
- decompiler: detect
light-trail-tracker-spawnmacro by @Hat-Kid in
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Please read first
[!IMPORTANT] Our repositories on GitHub are for development of the project and tracking active issues. Most of the information you will find here pertains to setting up the project for development purposes and is not relevant to the end-user.
For a setup guide on how to install and play the game there is the following video that you can check out: https://youtu.be/K84UUMnkJc4
For questions or additional information pertaining to the project, we have a Discord for discussion here: https://discord.gg/VZbXMHXzWv
Additionally, you can find further documentation and answers to frequently asked questions on the project's main website: https://opengoal.dev
[!WARNING] Do not use this decompilation project without the use of your own legally purchased copy of the game. OpenGOAL does not include any assets from the original games, so you must provide your own legitimately obtained PS2 copy of the game. OpenGOAL supports every retail PAL, NTSC, and NTSC-J build, including Greatest Hits copies. Please note that does NOT include any of the later releases (PS3/PS4/PS5).
Project Description
The project's goal is to port the original trilogy (Jak 1 -> Jak 3) to PC. Over 98% of the games were written in GOAL, a custom LISP language developed by Naughty Dog. Our strategy is:
- decompile the original game code into human-readable GOAL code
- develop our own compiler for GOAL and recompile the game code for x86-64
- create a tool to extract game assets into formats that can be easily viewed or modified
- create tools to repack game assets into a format that our port uses.
Our objectives are:
- make the port a "native application" on x86-64, with high performance. It shouldn't be emulated, interpreted, or transpiled.
- Our GOAL compiler's performance should be around the same as unoptimized C.
- try to match things from the original game and development as possible. For example, the original GOAL compiler supported live modification of code while the game is running, so we do the same, even though it's not required for just porting the game.
- support modifications. It should be possible to make edits to the code without everything else breaking.
At the moment we support x86_64 on Windows, Linux and macOS (via Rosetta translation). There are no plans to ever make a mobile release.
Current Status
- Jak 1 has been considered in a polished, complete state for years at this point.
- Jak 2 is considered in beta due to a few issues we are aware of that need fixing, however to the casual user, the game is essentially complete.
- Jak 3 has a good amount of work left to do.

YouTube playlist showcasing some of the early progress for Jak 1: https://www.youtube.com/playlist?list=PLWx9T30aAT50cLnCTY1SAbt2TtWQzKfXX
Methodology
To assist with decompiling, we've built a decompiler that can process GOAL code and unpack game assets. We manually specify function types and locations where we believe the original code had type casts (or where they feel appropriate) until the decompilation succeeds, then we clean up the output of the decompiled code by adding comments and adjusting formatting, then save it in goal_src/.
Our decompiler is designed specifically for processing the output of the original GOAL compiler. As a result, when given correct casts, it often produces code that can be directly fed into a compiler and works perfectly. This is continually tested as part of our unit tests.
Setting up a Development Environment
The remainder of this README is aimed at people interested in building the project from source, typically with the intention of contributing as a developer.
If this does not sound like you and you just want to play the game, refer to the above section Quick Start
OS Setup
Editor Setup
You can of course use whatever editor you want, but here is some documentation that should help you get started on some of the editor's we have used and have written about:
Building and Running the Game
Getting a running game involves 4 main steps:
- Build C++ tools (follow Getting Started steps above for your platform)
- Extract assets from the game
- Build the game
- Run the game
Extract Assets
First, we have to setup our environment so we know which game and version we are operating with. For the black label version of Jak 1 we would run the following:
task set-game-jak1
task set-decomp-ntscv1 # or for example for PAL, `task set-decomp-pal`
Run
task --listto see the other available options
Next, ensure you extract your ISO file contents into the relevant iso_data/<game-name> folder. In the case of Jak 1 this is iso_data/jak1.
Once this is done, open a terminal in the jak-project folder and run the following:
task extract
Build the Game (Running the Compiler)
The next step is to build the game itself. To do so, in the same terminal run the following:
task repl
You will be greeted with a prompt like so:
_____ _____ _____ _____ __
| |___ ___ ___| __| | _ | |
| | | . | -_| | | | | | | |__
|_____| _|___|_|_|_____|_____|__|__|_____|
|_|
Welcome to OpenGOAL 0.8!
Run (repl-help) for help with common commands and REPL usage.
Run (lt) to connect to the local target.
g >
Run the following to build the game:
g > (mi)
IMPORTANT NOTE! If you're not using the non-default version of the game, you may hit issues trying to run
(mi)in this step. An example error might include something like:
Input file iso_data/jak1/MUS/TWEAKVAL.MUS does not exist.This is because the decompiler inputs/outputs using the
gameNameJSON field in the decompiler config. For example if you are using Jak 1 PAL, it will assumeiso_data/jak1_palanddecompiler_out/jak1_pal. Therefore, you can inform the REPL/compiler of this via thegameVersionFolderconfig field described here
Run the Game
Finally the game can be launched. Open a second terminal from the jak-project directory and run the following:
task boot-game
The game should boot automatically if everything was done correctly.
Connecting the REPL to the Game
Connecting the REPL to the game allows you to inspect and modify code or data while the game is running.
To do so, in the REPL after a successful (mi), run the following:
g > (lt)
If successful, your prompt should change to:
gc>
For example, running the following will print out some basic information about Jak:
gc> *target*
Running the Game Without Auto-Booting
You can also start up the game without booting. To do so run the following in one terminal
task run-game
And then in your REPL run the following (after a successful (mi)):
g > (lt)
[Listener] Socket connected established! (took 0 tries). Waiting for version...
Got version 0.8 OK!
[Debugger] Context: valid = true, s7 = 0x147d24, base = 0x2123000000, tid = 2438049
gc> (lg)
10836466 #xa559f2 0.0000 ("game" "kernel")
gc> (test-play)
(play :use-vis #t :init-game #f) has been called!
0 #x0 0.0000 0
gc>
Technical Project Overview
Some more detail about the various components of the project can be found here