jak-project

open-goalISC活跃维护

用 Common Lisp 重写并复活《Jak & Daxter》系列游戏的自定义 Lisp 语言与运行时,让玩家能在现代平台编译运行这些 PS2 经典游戏。

Reviving the language that brought us the Jak & Daxter Series

v0.3.9发布于 2026-10-15 23:15 UTC3,641star +5 / 7 天267fork同步于 2026-11-10 23:41 UTC

怎么上手

由 README 提炼,执行前请确认
task set-game-jak1
task set-decomp-ntscv1
task extract
task repl
硬件要求按 README 说明

README 未说明具体硬件要求;仅说明支持 x86_64 的 Windows、Linux 和 macOS(macOS 通过 Rosetta 转译),无移动端计划。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

把 Jak & Daxter 三部曲的 GOAL 代码反编译并重编译到 PC 原生运行

用 Common Lisp 重写并复活《Jak & Daxter》系列游戏的自定义 Lisp 语言与运行时,让玩家能在现代平台编译运行这些 PS2 经典游戏。

核心能力

  • 反编译原版 GOAL 代码为可读源码
  • 自研 GOAL 编译器重编译到 x86-64
  • 提供资源提取与重打包工具链
  • 支持运行时 REPL 热改代码与数据
  • 支持玩家自制修改而不破坏其他部分

容易踩的坑

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

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.3.9
  1. v0.3.9最新正式版2026-10-15 · 2026-10-15 23:15 UTC

    What's Changed

    New Contributors

    Full Changelog: https://github.com/open-goal/jak-project/compare/v0.3.8...v0.3.9

  2. v0.3.82026-09-20 · 2026-09-20 04:27 UTC
    查看更新说明

    What's Changed

    New Contributors

    Full Changelog: https://github.com/open-goal/jak-project/compare/v0.3.6...v0.3.8

  3. v0.3.62026-08-25 · 2026-08-25 03:22 UTC
    查看更新说明

    What's Changed

    New Contributors

  4. v0.3.52026-07-04 · 2026-07-04 01:15 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/open-goal/jak-project/compare/v0.3.4...v0.3.5

  5. v0.3.42026-07-01 · 2026-07-01 21:20 UTC
    查看更新说明

    What's Changed

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    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:

    1. Build C++ tools (follow Getting Started steps above for your platform)
    2. Extract assets from the game
    3. Build the game
    4. 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 --list to 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 gameName JSON field in the decompiler config. For example if you are using Jak 1 PAL, it will assume iso_data/jak1_pal and decompiler_out/jak1_pal. Therefore, you can inform the REPL/compiler of this via the gameVersionFolder config 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