Skip to main content

Progress Report - January 2024

· 6 min read

New year, new game.

Release Info

This month's OpenGOAL Tooling (jak-project repo) release is 0.2.7.

Translation Contributions

Games

Translation Progress for January

Launcher

Translation Progress for January

Community Spotlight

Modding Community Event: No OoJ ("No Off of Jetboard")

Are you interested in learning more about the programming language that powers Jak and Daxter or just want to experiment?

The modding community is currently hosting an event where they collaboratively work on a Jak 2 mod that permanently forces Jak to be on the jetboard. The idea is to help more people get into modding. There's a bunch of issues that can be worked on and are assigned difficulties, ranging from very easy to hard. Anybody interested is welcome to join, learn and help out.

Join the Unofficial OpenGOAL Modding Discord server for more details.

No Off of Jetboard

General Changes

Fix Remapping Bug with Analog Triggers

Fix Custom Screenshots and Move Screenshot Directory

A bug with taking custom resolution screenshots using the ImGui menu (accessed by pressing Alt) was fixed. The screenshots directory was also moved. It can now be found under ~/.config/OpenGOAL/game_name/screenshots on Linux and AppData\Roaming\OpenGOAL\game_name\screenshots on Windows.

Support for Jak 2/3 Collision Extraction

Collision for Jak 2/3 levels can now be extracted in .obj format and there is now a rip_collision flag in the decompiler config for this.

Custom Levels

Support .glb Files Exported with glTF 2.0/Blender 4.0

Previously, only .glb files that were exported using versions of Blender older than 4.0 would be supported for custom levels due to the way the GLB exporter for Blender 4.0 would store vertex colors.

Enum Support in Lumps

Some actor properties use numeric values, be it as a bitfield to toggle certain flags or a number to specify e.g. what type of collectable it is.

In the code, we have enums (such as pickup-type) for this that map to a specific number to make it easier to identify what the value means. When defining actors in custom levels, you had to use the corresponding numeric value for this, so instead of e.g. (pickup-type fuel-cell), it would be 6.

This change allows you to use enums inside of the custom level JSON and adds more lump types for special cases that use enums.

Automatically Sort Actors by ID

You can manually specify actor IDs when creating actors, but when giving actors IDs out of order, entity lookups would fail because the underlying code does a binary search that expects the entity list to be sorted.

Now, you can specify IDs in whatever order you like and the actor list will automatically be sorted and checked for duplicate IDs before the level is built.

Many New Lump Types

In addition to the enum-int32, enum-uint32, water-height, eco-info and vector3m lump types that were added with enum support, a good chunk of other new types were added:

  • cell-info: Like eco-info, but automatically fills in the pickup type and amount, so you only need to define the game-task.
  • buzzer-info: Like eco-info, but automatically calculates the required amount value for the scout fly based on the scout fly ID (starting from 0) and the game-task given.
  • symbol: Allows you to define a list of symbols.
  • type: Like symbol, but defines a list of types instead.
  • string: Like symbol and type, but defines a list of strings instead.

Examples for all of these and more can be found in test-zone.jsonc.

Jak 2

Fix Volume Falloff for VAG Streams

Voice lines that play will now properly have their volume lowered depending on the camera's distance to the sound origin.

Fix Shadow Bug on Precursor Orbs

Due to a small bug in the decompiler output, orb shadows were broken.

New PC Cheats Added to Menu

The new cheats that were teased back in the August 2023 report have now been fully integrated into the game's menu! You can find them at the bottom of the secrets menu. Some of them will just require a specific number of orbs, others will require you to complete certain challenges, just like Ratchet and Clank's skill point system.

PC Cheats Menu

Statistics Tracker

Another miscellaneous feature that we're adding is a tracker for a bunch of statistics like total kills with all weapons and types of attacks like spins, punches, uppercuts, etc.

There is no menu for it yet, but a lot of the groundwork is in place.

Jak 3

Final Prep Work for Decompilation

Earlier this month, we started cleaning up the last remaining loose ends preventing us from fully getting started on decompiling Jak 3, most crucial of which was the decompilation of the C kernel, required for setting up the game's runtime and bootstrapping the GOAL kernel in order to build and load GOAL code.

Jak 3 Decompilation Has Officially Started

With all the loose ends tied up, we wasted no time getting back into decomp:

Graph of Jak 3 Decompilation Progress from 1/19/24 to 1/28/24

(As a comparison, reaching 20k lines of code in Jak 1 took about 167 days and Jak 2 took a few weeks.)

Jak 3 has just about 1000 files we need to go through, compared to Jak 2's 811 files. In less than 10 days, we already finished over 100 of the early engine files. This, however, doesn't mean the rest of the files will be done as quickly because the majority of these files were extremely similar, if not identical to Jak 2 thus far. Once we're done with the engine files (which is ~440 files), most of the mission and gameplay code will be completely new.

It will be a while before the game can actually "boot", as we still need to go through a bunch more files to get the main game loop up and running. Once we get there, though, there is some hope that we will be able to reimplement the main foreground and background renderers much more quickly than we did for Jak 2, as a lot of the code appears to be basically unchanged, with the exception of one new renderer added in Jak 3 (hfrag) used to draw the desert dunes.

The website has not yet been set up to track Jak 3 decompilation progress, but we should hopefully have that in place soon so you can follow along.