Skip to main content

Progress Report - Sept. 2022

· 5 min read

It's been quite a while since we've done a progress report, but we figured as part of the Jak 2 process it would be nice to make a return to doing them. It's nice to be able to look back on what's been accomplished as well as let people that are interested know where we are at.

With that said, there's a lot to talk about that's happened over the last month or so.

Jak 2 Decompilation

Lots of Core Engine Files

Over the last month or so, hundreds of core files have been completed or partially started. While they aren't the most flashy thing to talk about (no screenshots to share!) it's obviously an important part of the process.

They make up a large portion of the currently 140,000 lines of code decompiled (and counting)

Texture Support

Texture support was added for Jak 2, this means we can finally see something.

2 years later, and we're back to where we started with Jak 1

Shrubbery Decompiled

One of the last renderers in Jak 1 has been one of the first to be brought over to Jak 2. Thankfully the VU program (the most difficult part about porting this kind of code) ended up being identical to Jak 1.

Background and TFrag

While it currently lacks time of day support, it's great to see some parts of the actual levels already being rendered.

A good chunk of Jak's code has already been done and will be ready to test when the time is right.

TIE partially implemented

With the TIE renderer being even partially implemented, the game's levels start to really take shape.

This is the core logic behind how the game keeps track of what you have and have not completed.

With this data, a graph was created that shows in great detail how all the tasks are interconnected, and eventually we'll probably add this to the website in a more consumable form as the full graph is massive. In the meantime, enjoy this gigantic SVG.

Progress menu (aka the "pause menu") is largely completed

Not tested yet due to being blocked by a few things, but all of the code directly related to the pause menu has been completed!

Decompilation Tooling

Automatic type casting is working well!

The progress pages now show the most used manual type-casts we have to do. If you compare Jak 1 with Jak 2, many of the biggest offenders in Jak 1 are no where to be found now. There is always room for improvement but this is a huge boost to speed (and consistency) already!

Another nice improvement this time around is better editor tooling to help with the decompilation effort. If you've seen the LSP inside the jak-project releases and wondered what the hell it is, it's a small program that provides metadata to an IDE like VSCode. It's what provides auto-completions, on-hover text, sometimes syntax highlighting, etc. If you're interested, see the spec.

Related documentation is (/docs/developing/decompiling/editor_tools) for those interested.

Docstring support

In an effort to better document the code this time, as well as eventually support auto-generated documentation, the decompiler supports docstrings on most of the relevant areas.

This also is gradually being supported by the LSP to provide on-hover explanations of functions:

Jak 1

Speedrunner Mode

If you are a speedrunner you are probably already well aware of this feature, but if you are not you may have noticed a new menu option related to it.

This mode does a few things:

  • When creating a new game file, you will immediately spawn at Geyser Rock
  • The autosave prompt will never appear
  • The game will keep track of various progress indicators to support automatically timing your speedrun via LiveSplit

The associated leaderboard can be found here if you are interested - https://www.speedrun.com/jak1og

And the associated auto splitting LiveSplit integration (and maybe other tools in the future) can be found here - https://github.com/open-goal/speedrunning

Cutscene Skips

Most cutscenes can now be skipped in Jak 1, if you don't want to accidentally skip a cutscene there is a menu option to disable this feature

Brazilian Portuguese Translation

Thanks to Lightbell18 and Himham for adding this translation. There are a lot of partially done translations that hopefully will be completed and make it into the game soon!:

Screenshot Hotkey

A hotkey was added to take a screenshot, by default it is F2

Launcher and Releases

Launcher releases are now automatic

A launcher release will now be built and released automatically after the main project releases.

Future launcher releases should work on Linux

The launcher should now work on Linux, and the next release should support it. When that finally drops, let us know if you run into any issues.

Work continues on an improved Launcher experience

There is lots of active work to fix up the faults of the current launcher, most notably to:

  • Improve the process of reporting issues such as game crashes
  • Better decide where you want to install the game
  • Easily apply texture replacements
  • etc