Notes from the work.
findings, decisions and measurements, in the order they happened · nothing here is a promise
Everything before that, one landing at a time.
a filled node is a post, linked to its page · a hollow one is a landing no post covers, dated the day it landed
Launcher 0.2.1 is here, and the beta opens
The launcher's first proper release is out, full of small things that make it nicer to live with. It also opens a beta, where a few invited players try each night's newest build and get online play first.
Bringing Jak X online, the direct way
Jak X's online menu has been a dead end on Phaethon since the first build. Its racing code starts as the disc has it, the layer under it is new, and on October 22nd two machines raced over LAN for the first time.
What the next release carries
The runtime the launcher installs today was cut on September 26th. Since then 243 trains have landed, and the next release carries every one of them.
Jak X, start to finish
Jak X: Combat Racing now plays from its first race to its credits. It began as a game that would not boot, and the work to get it there grew into Phaethon.
One subtitle system for all four games
The retail preset now shows Jak II's and Jak 3's cutscene subtitles exactly as the discs do, and under the remastered preset all four games share one subtitle system, one overlay and a size slider.
Sixty ticks, at your display's rate
Every preset now runs the games at the console's 60 ticks a second. On a fast display the remastered preset draws the frames between ticks instead of speeding the game up.
Retail by default
Start a game with no options and you get the PlayStation 2 game. Remastered is a preset you choose, a speedrun preset locks every setting to the console's, and one registry names every setting once.
How a change lands
No fix-later notes without a ticket, no change merged alone, and every change judged on the same tracks as the ones beside it. The rules behind roughly a hundred commits a day.
Water that moves the way the disc says
Animated textures like water, lava and the HUD's arrows are now drawn by running the disc's own little drawing programs, instead of hand-written imitations. It began with Jak X's flat teal stadium water.
Far away, the way the console drew it
The PlayStation 2 drew distant things simpler and blended their detail in as you came closer. OpenGOAL chose to draw everything at full detail. All four games now draw distance the console's way.
Why Phaethon moved to Vulkan
In under a month the whole renderer moved from OpenGL to Vulkan, checked frame by frame against the old one, and the old one was deleted. What drove it was the graphics card itself.
When the console settles the argument
Two versions of Jak and Daxter's ocean code disagreed in a third of their cases. A capture of the console decided it, and by October 13th no hand-translated vector code was left in the game.
The phantom second controller
Upstream told every game a controller was always plugged in, so choosing two players with one pad left the game stuck waiting for a player who did not exist.
Four games, three sound drivers
Jak X booted silent, the trilogy's mix was off in ways nobody had pinned down, and the console's echo was never built. Five weeks of work traced it all to one surprise in the discs.
The compiler console opens with the Seal of Mar
goalc, the console where the games' code is compiled and sent into the running game, still opened with upstream's orange logo. Now it opens with the Seal of Mar, and its messages read like the runtime's.
playphaethon.com
The project has its own domain. Within two hours of registering it, the website, the docs, the download store and the sign-in page were all running on it.
Accounts, sessions and the saves to come
The launcher can sign in to a Phaethon account and report what you play, summed across every PC you play on. The account service can keep saves too; the launcher's side of that is next.
The launcher is signed
From release candidate three, the installer and the updater carry Phaethon's signature, so Windows names who made them instead of calling the publisher unknown.
The kernel learns to wait
Where the PlayStation 2 waited quietly, the PC kernel spun whole processor cores asking whether it was done yet. Nineteen changes in three days taught it to wait the console's way.
The repository, restructured
The source tree takes the shape it keeps: the compiler, the runtime, the shared code and the tests each in a folder of their own, with every tool reading the new places.
Traced shadows, sharper edges, bigger movies
Within a week of the first Vulkan frame, the remastered preset gained sun shadows traced against the real scene, DLSS, DLAA and FSR, and a neural upscaler for Jak X's movies.
A name of its own
The debug window needed a product name for its header line. Eight candidates went through three trademark registers, six were crossed out, and the fork became Phaethon.
DLSS, DLAA and FSR arrive
The remastered preset gains modern anti-aliasing and upscaling: TAA, NVIDIA's DLAA and DLSS, and AMD's FSR 3.1, which runs on any vendor's card.
Where a race frame's time goes
A cost map of a Jak X race frame: how many milliseconds each part of the picture takes, on both renderers, read on the eighth frame so the first frame's warm-up does not count.
Whole frames match
Whole frames drawn with Vulkan match OpenGL's, and the Vulkan window shows the game. A frame that drops a single draw is refused.
Lighting and ray tracing foundations
The game's lights become data the renderer can reason about, and the first pieces of ray tracing land: asking the graphics card what it supports, and building the structures rays are traced through.
The first Vulkan device
The renderer's Vulkan side draws its first picture on real hardware, built to refuse any graphics card older than Vulkan 1.3 rather than work around it.
Death Race, drones and all
Death Race spawns its drones and draws its own HUD, and cars can drop oil slicks and set their wheels on fire.
Three numbers out of four
Every time one of the games' processes paused, the kernel kept one number of each four it was holding and lost the rest. Upstream patched the symptoms where they showed. Phaethon fixed the pause.
A race gets a session master
A race now has a session master, the part that runs it from the start to the results. The results screen clears the HUD, wrecked cars throw their wheels, and walls do damage.
Tutorials, death race and training
The first tutorial, Death Race's network code and the first part of training mode come in, with the particle effects the weapons fire.
Weapons on the road
Weapon pickups appear on the track, and every car feels for the road beneath it as it spawns.
The fork goes its own way
It started as a staging copy for fixes meant to go back to OpenGOAL. By September 3rd nothing went back, Jak X was the mission, and the fork stood on its own.
The race start chain
The first half of what starts a race, everything but the cars, is in place, and the game can boot straight onto a track.
Bring-up joins develop
The first weeks of Jak X work join the main line of the code. From here each piece of work arrives on its own branch, one theme at a time.
The track streams
A race track loads piece by piece as the race moves along it, the way the console streamed it from the disc, and the game can start from a checkpoint with its camera in place.
The first real level
The boot reaches brdroom, the first level with real world geometry in it, and a debug camera flies onto it.
The first windowed boot
Jak X runs for thirty seconds in a window, the renderer drawing, without falling over.
A live kernel dispatcher
Jak X's level code is decompiled, and for the first time a Jak X boot reaches the kernel's dispatcher, the loop that hands work to everything running in the game.
Where the news comes from.
Community
Testers and players compare notes, share captures and report what a disc did.
The Discord server is on its way.Get posts by email
No account needed: pick the kinds of post you want, and confirm from your inbox.
You are signed in, so your news emails are set in your account.
