Skip to content

About

Project Zomboid Build 42 performance work: class overrides, harness, findings

Resources

Stars

216 stars

Watchers

6 watching

Forks

Repository files navigation

Project Zomboid without the stutter

Class overrides for Project Zomboid Build 42.22.2 (Windows, Linux, macOS): smoother frames, faster chunk loading, a faster boot, and optional modern graphics. projectzomboid.jar is never modified; every change has a switch.

Steam Workshop · Latest release · Discord · Live benchmark dashboard · Install guide

Stock vs PZ_Optimization, 120 km/h through Rosewood: 156 fps / p99 16.5 ms against 512 fps / p99 5.8 ms

Optimizations: 552 fps, p99 7.9 ms Optimizations, stock vs ours: driving, thunderstorms, hordes, fog, lightning, zoom, boot and load, smooth driving, house alarms, handhelds, low-end laptops, clean audio Enhancements: 297 fps, p99 14.2 ms Enhancements, each off by default: sun, moon and cloud shadows, god rays, per-pixel lighting, ambient occlusion, reflections, mirrors and windows, car glass, relief, foliage sway, colour grading, sharp sprites, HDR and upscaling

Desktop (Ryzen 7 9800X3D, RTX 4090, 5120x2160, Linux), 120 km/h through Rosewood at 19:00, uncapped. Optimizations: every optimization at its default. Enhancements: the experimental ones too and every Visuals option but remembered places, HDR and upscaling. The stock car waits for chunks; its side shows where it passed the same spot. Runs

Latest numbers

The daily re-measure of the newest release against the game as it ships, on the same desktop and routes (every scene and machine):

Desktop, uncapped Stock Optimized Faster Optimized: GPU / game thread
120 km/h drive 107 fps · p99 21.5 ms 663 fps · p99 3.3 ms 6.2x 97 / 70 %
120 km/h drive, thunderstorm + heavy fog 53 fps · p99 58.8 ms 504 fps · p99 4.4 ms 9.5x 96 / 85 %
Spinning walk through Rosewood, thunderstorm + heavy fog 31 fps · p99 95.6 ms 293 fps · p99 9.0 ms 9.3x 82 / 95 %
Horde shootout on the Riverside pier (150 zombies) 144 fps · p99 15.3 ms 333 fps · p99 6.4 ms 2.3x 92 / 83 %
Downtown Louisville horde (~2,000 zombies) 44 fps · p99 55.1 ms 133 fps · p99 16.9 ms 3.0x 40 / 96 %

Ryzen 7 9800X3D, RTX 4090, 5120x2160, Linux, Build 42.21, max zoom (the shootout at zoom 1), Enhancements off. Stock: the game as it ships; its 240 fps cap is never reached. Optimized: release a0cc7a4a (2026-10-15) at its defaults. Mean of two runs a side; stock 2026-10-02/04, Louisville stock 2026-10-15 (one run). With the experimental optimizations on too, Louisville runs at 222 fps (5.0x, below). Runs: drive · storm drive · storm walk · shootout · Louisville

Important

Windows and Mac players, Build 42.22 and later: one extra step, a Steam launch option. The game's jar is signed since 42.22.1, so PZ Optimization now loads through a Java agent, and on these two systems the game only starts it through a Steam launch option. After installing, in Steam: right-click Project Zomboid > Properties > General > Launch Options and paste the line the installer prints (it also copies it to the clipboard on Windows). Keep any options you had after %command%.

Windows (use your own game folder; both paths in full). Without it the game closes at once with the agent in ProjectZomboid64.json: Windows does not find the game's Java libraries for the agent when Steam starts the game. Found and fixed by tieeeeen1994, thank you.

"C:\Windows\System32\conhost.exe" --headless "C:\Program Files (x86)\Steam\steamapps\common\ProjectZomboid\pzopt-launch.cmd" %command%

macOS (the app has no launcher file; without it the game runs stock):

JAVA_TOOL_OPTIONS="-javaagent:'/Users/<you>/Library/Application Support/Steam/steamapps/common/ProjectZomboid/Project Zomboid.app/Contents/Java/pzopt/agent/pzopt-agent.jar'" %command%

Before or right after uninstalling, clear that box again: with the line there and the files gone, the game does not start. (Install guide)

Install (once, about two minutes)

Read before subscribing

  • Subscribing is not enough. This replaces game classes; it needs the one-time install below.
  • Mods: untested, unsupported. Other mods may work alongside it; nobody checks them and problems with them are not fixed.
  • Multiplayer: untested, unsupported. It installs on your client only; joining a server may work, may not.
  • Something wrong? main menu > PZ OPTIMIZATION > "Stock game" preset, restart, then tell us on Discord.

2 minute install: subscribe, enable the mod, copy the command, paste it, quit, play Manual install: find the mod's files, copy them into the game folder

  1. Subscribe to PZ_Optimization on the Workshop, let Steam download it.
  2. Mods (main menu): enable PZ_Optimization; a window shows your install command.
  3. Copy the command, paste it into PowerShell (Windows) or a terminal (Linux, macOS), Enter.
  4. Quit the game; the installer copies the files when it has closed.
  5. Start the game, disable the mod again. The main menu has a new PZ OPTIMIZATION item.

No window? Windows (PowerShell):

irm https://github.com/xD3I/PZ_Optimization/releases/latest/download/install.ps1 | iex

Linux, macOS:

curl -fsSL https://github.com/xD3I/PZ_Optimization/releases/latest/download/install.sh | bash

By hand, no command: Steam: right-click the game, Manage > Browse local files. Go up to steamapps, then workshop\content\108600\3805285544\mods\PZ_Optimization\42\pzopt-classes. Copy everything in it into the game folder (where projectzomboid.jar is); an older version installed there? Uninstall it first (double-click Uninstall-PZ-Optimization.cmd in the game folder), its old files would stay beside the new ones. Then, since Build 42.22, open ProjectZomboid64.json in that folder with a text editor and add "-javaagent:pzopt/agent/pzopt-agent.jar", as the first line inside "vmArgs": [ (comma included), and on Windows set the launch option above; macOS: only the launch option. Uninstalling by hand: remove that line and the launch option first. Details: Install guide, Method C.

Every method, checking that it loaded, building from source: Install guide.

New! A built-in benchmark, one menu for everything

The main menu's PZ OPTIMIZATION item, the full-screen settings, Benchmark Setup with the five runs, a horde shooting pass, the report of the desktop's A/B run (Rosewood spin 142 to 481 fps, score 576 to 1,636) and the run comparison

New! Voxel lighting

A night lot at 01:00, stock against voxel lighting: street lamps and room lights traced through walls, windows and fences light the facades instead of a pale patch on the ground

Lamps and room lights traced through walls, windows and fences. Off by default: PZ OPTIMIZATION > Enhancements > Lighting and shadows > Per-pixel lighting.

Up to 5x faster in a Louisville horde

5x faster Louisville: stock 63 fps against optimized 281 fps on the recorded race Louisville horde on four devices: desktop 44 to 222 fps, Ayaneo Flip 32 to 82, MacBook Pro 29 to 56, Dell laptop 9 to 19

Downtown Louisville, population maxed (~2,000 zombies), uncapped, Enhancements off. Stock: the game as it ships. Optimized: every optimization on, the experimental ones included (2026-10-15). The race: desktop (Ryzen 7 9800X3D, RTX 4090, 5120x2160, Linux), both sides recorded, each counter from its own run's frame log on the route clock.

Features

Fast boot and load: launch to walking 17.6 s stock, 7.8 s enhanced Handheld efficiency: 82 fps at 302 mJ a frame on the Ayaneo Flip

Fast boot and load: desktop (Ryzen 7 9800X3D, RTX 4090, Crucial T705 NVMe, 5120x2160, Linux), launch to the world on screen, caches warm, means of two runs per side: 17.6 → 7.8 s (boot 7.4 → 5.3 s, load 10.3 → 2.5 s). Runs Handheld efficiency: Ayaneo Flip (Ryzen AI 9 HX 370, Radeon 890M, 1920x1080, Linux), thunderstorm, 120 fps cap: 34 → 78 fps, energy per frame 618 → 315 mJ (defaults + efficient cores). Runs

macOS on OpenGL 4.1: 115 fps with the Enhancements on Low-end hardware mode on a 4-core laptop

macOS on OpenGL 4.1: MacBook Pro M1 Pro, a walk round a pond. Stock on Apple's OpenGL 2.1 (113 fps); ours on OpenGL 4.1 with lighting, shadows, ambient occlusion, reflections and god rays on (115 fps). Runs Low-end hardware mode: Dell laptop (Core i5-6300HQ 4 cores, GTX 960M, 1920x1080, Linux), 120 km/h highway drive: the "Low-end hardware" preset + dynamic resolution held to 60 fps, 29 → 42 fps, p99 93 → 50 ms. Runs

Every feature with its before / after card (driving, hordes, weather, zoom, sound, the UI; per-pixel light, the real sky, reflections, mirrors, car glass ...): Features.

Against the other performance mods

5.8x vs other mods: stock 58 fps, Zed's Better FPS KA 67 fps, PZ_Optimization 386 fps in a storm with heavy fog Nine Workshop performance mods against stock and PZ_Optimization on a drive, a storm and a horde

Desktop (Ryzen 7 9800X3D, RTX 4090, 5120x2160, Linux), Build 42.21, uncapped; every side of a route ran back to back (2026-10-06/07). On the drive every other mod is within 3 % of stock; the two that gain in the horde do it by changing the launcher's garbage collector and heap. Runs · The whole comparison

Updates, uninstall

Updates arrive in the main menu (PZ OPTIMIZATION > UPDATE, one click; the item reads "UPDATE AVAILABLE" when one is offered). After a game update the game runs stock (the overrides only load for the revision they were built for) until you run the install command again for a matching release. Updating from Build 42.21 to 42.22 with an older PZ Optimization installed: the game stops before the main menu (42.22 signs its jar and refuses the old build's files); run the install command (or the uninstall command below) once and it starts again.

To remove it: main menu > PZ OPTIMIZATION > Uninstall PZ Optimization. Game does not start, or already unsubscribed? Steam > Project Zomboid > Manage > Browse local files, double-click Uninstall-PZ-Optimization.cmd (Linux, macOS: bash uninstall-pz-optimization.bash there), or paste irm https://github.com/xD3I/PZ_Optimization/releases/latest/download/uninstall.ps1 | iex into PowerShell (Linux, macOS: curl -fsSL https://github.com/xD3I/PZ_Optimization/releases/latest/download/uninstall.sh | bash). Unsubscribing and "Verify integrity of game files" leave these files in the game folder; the uninstaller removes them. On a Mac, clear the Launch Options line in Steam first (above).

More

Page What is in it
Install guide requirements, the four install methods, checking that it loaded, uninstall, the updater, game updates
Benchmarks every scene on every machine (desktop, Windows, macOS, handheld, old laptop), the other mods, boot and load, frame pacing, latency, audio
Features every optimization and enhancement with its before / after card
Settings the PZ OPTIMIZATION screen, frame caps, upscaling and DLSS, the performance overlay, pzopt.properties
How it works what each optimization changes in the game, the install without touching the jar, what was measured and dropped
Limitations and roadmap what is not tested, known issues, what is next
Benchmark harness the hands-off run rig, the run queue, Jev's verdicts, the repository layout
Every run, in order the run log since 2026-09-24 (earlier runs); every edit to a game class in prose

Build 42.22.2, game revision 3d39148846 (the jar is signed: the overrides load through a Java agent, one launcher argument). They refuse to run against any other revision: they log one line and the game behaves as stock. Project Zomboid is by The Indie Stone. This repository contains no game assets; the edited class sources under src/overrides/ are derived from the shipped jar for the sole purpose of these patches.

About

Project Zomboid Build 42 performance work: class overrides, harness, findings

Resources

Stars

216 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages