PZ Studio (VS Code)


PZ Studio is a powerful environment designed to streamline the creation, management, and building of Lua mods for Project Zomboid. This extension brings the capabilities of the PZ Studio CLI directly into VS Code, providing a seamless workflow for modders.
⚠️ This extension has moved to pzstudio42.
The PZ Studio VS Code extension now lives at its new marketplace listing:
PZ Studio (pzstudio42).
Version 0.42200.1 is published to both the old listing
(escapepz.pzstudio)
and the new one, so this notice can point you to the new home.
Install from the new listing — after 0.42200.1 the old listing stops
receiving updates and this notice is removed.
🚀 Features
- Instant Project Creation: Initialize a full modding project structure with templates in seconds.
- Multi-Mod Support: Manage multiple mods within a single project workspace.
- Automated Building: Build your workshop-ready folders with one click, including
mod.info generation and dual-branch support (Main & Dev Branch).
- Project Explorer: A dedicated tree view mirroring your projects and mods — build, clean and configure mods with inline buttons.
- In-Place Documentation: Automatically clones the latest modding docs and guides into your project.
- Integrated Output Logging: Standardized timestamps and labels (
[INFO], [WARN], [ERROR], [DEBUG]) in the VS Code output channel for easier troubleshooting.
- Actionable Errors: Failures raise a localized notification with Show Details opening the PZ Studio output channel; verbose runs reveal it automatically.
- Multilingual UI: Ships in 25 languages —
pzstudio.language overrides the VS Code display language and applies live.
- Version Compatibility: Optimized for Project Zomboid build 42.x and later versions.
🛠 Commands
Access these commands via the Command Palette (Ctrl+Shift+P / Cmd+Shift+P):
| Command |
Description |
PZStudio: New Project |
Create a new project from the project template. |
PZStudio: New Project Here |
Create a new project inside the opened workspace folder. |
PZStudio: Add Mod |
Add a new mod to a project. |
PZStudio: Build |
Build the project and deploy to the Workshop folder. |
PZStudio: Clean |
Clean the output directories. |
PZStudio: Delete Mod |
Remove a mod from the project. |
PZStudio: New Language |
Add a new translation template to a mod. |
PZStudio: Rename Mod ID |
Safely rename an existing mod (folder + project.json key). |
PZStudio: ModInfo Generate |
Generate mod.info files in your source tree. |
PZStudio: Update |
Refresh the cached templates (libraries and documentation). |
PZStudio: Run Diagnostics |
Check a project (project.json, mods, output folder, template cache, build target) and list every finding with a hint. The same report pzstudio doctor prints. |
PZStudio: Toggle Development Sync |
Keep the workshop outputs synced while you edit: saved files apply incrementally, mod.info/.pzstudioignore edits re-sync their mod, project.json edits trigger a full rebuild. Run again to stop. |
Commands that always act on one specific row — Edit Mod Configuration, the per-mod build-state toggles, explorer refresh and the All/Essential files toggle — are intentionally not in the Command Palette: they live in the PZ Project Explorer, where their target is unambiguous.
🌲 PZ Project Explorer
The activity-bar view mirrors the real folder structure: every project found in the workspace (workspace roots and first-level subfolders) with its mods.
- Project rows carry inline Build and Clean buttons; both ask for confirmation first (disable with
pzstudio.confirmBeforeRun). Right-click a project for Run Diagnostics — the row description also shows the finding counts (✗ 1 ⚠ 2) with the full list in the tooltip.
- Mod rows show their build state right in the row (
included / dev builds only / excluded from build) with inline buttons: include/exclude toggle, dev_branch-only toggle, generate mod.info, rename and delete.
- Right-click a mod for Edit Mod Configuration (author, description,
build.modInfo, build inclusion, …).
- Every command that needs a mod resolves the project first — the active editor's project, then the only discovered project, then a quick-pick labeled with the workshop title — so multi-root workspaces and projects in subfolders always target the right files.
⚙️ Configuration
You can configure PZ Studio directly through VS Code settings (settings.json). These settings override the global ~/.pzstudio/config.json but can be overridden by project-specific settings in your project.json where applicable.
| Setting |
Description |
pzstudio.outdir |
The directory where your built workshop files will be deployed (overrides global config, but overridden by project.json's outdir). |
pzstudio.useSymlinks |
Whether to use symlinks (junctions) when scaffolding templates (overrides global config). |
pzstudio.verbose |
Enable verbose/diagnostic output for all commands (--verbose) — [DEBUG] lines in the PZ Studio output channel. |
pzstudio.offline |
Skip remote template refresh and use cached/legacy data (--offline). Applies to New Project and Add Mod. |
pzstudio.forceUpdate |
Force refresh of cached templates (--force-update). Applies to New Project and Add Mod. |
pzstudio.build.target |
Build target mode — default, production, development or both. Controls whether the main or dev_branch workshop output is built. An explicit task target replaces this setting. |
pzstudio.gameBuild |
Game build the diagnostics compatibility check compares the project's pzBuildCompatibility against (e.g. 42.20.1). Leave empty to disable the check. |
pzstudio.confirmBeforeRun |
Ask for confirmation before running Build or Clean (protects against misclicks while the game is debugging the output). |
pzstudio.templates.project.url |
Repository URL for the default project template (overrides global config). |
pzstudio.templates.project.ref |
Git ref (branch, tag, or commit) for the project template. |
pzstudio.templates.mod.url |
Repository URL for the default mod template (overrides global config). |
pzstudio.templates.mod.ref |
Git ref (branch, tag, or commit) for the mod template. |
pzstudio.templates.workshop.url |
Repository URL for the default workshop template (overrides global config). |
pzstudio.templates.workshop.ref |
Git ref (branch, tag, or commit) for the workshop template. |
pzstudio.templates.language.url |
Repository URL for the default language template (overrides global config). |
pzstudio.templates.language.ref |
Git ref (branch, tag, or commit) for the language template. |
pzstudio.language |
Display language for the extension UI. auto (default) follows the VS Code display language. |
pzstudio.newProject.defaultLocation |
Preferred default folder for new projects (user setting): the New Project picker opens at this location; cancelling the picker aborts project creation without selecting a fallback destination. |
Precedence Order:
project.json (Project-specific, highest precedence)
- VS Code Workspace Settings (
.vscode/settings.json)
- VS Code User Settings
- Global CLI Config (
~/.pzstudio/config.json, lowest precedence)
🌐 Language
The extension UI (explorer tree, prompts, notifications) ships in 25 languages. By default it follows the VS Code display language; set pzstudio.language to a specific language code (e.g. vi, ja, zh-cn) to override it independently of VS Code. The setting applies live — no window reload needed.
Command titles and setting descriptions rendered by VS Code itself (Command Palette, Settings UI) always follow the VS Code display language — the VS Code extension API does not allow an extension to localize manifest strings independently.
📂 Project Structure
A typical PZ Studio project looks like this:
my-project/
├── .docs/ # Cloned modding documentation
├── .libraries/ # Umbrella Lua libraries for IDE support
├── my_mod/ # Your mod's Lua source and assets
│ ├── media/
│ └── mod.info # Managed by PZ Studio
├── project.json # Project-wide configuration
└── workshop/ # Workshop assets (preview.png, etc.)
📦 Automated Workshop Deployment
When you run the Build command, PZ Studio creates two versions of your mod in your Zomboid Workshop folder:
- Main Workshop: The production-ready mod.
- Dev Branch: An unlisted version with the
_dev suffix, allowing you to test changes in multiplayer without affecting your live subscribers.
📝 Requirements
- Node.js: Required to run the underlying engine.
- Git: Required for cloning documentation and libraries.
🔗 Links
☕ Support
If you find this tool useful, consider supporting the developers:
Based on the original Project Zomboid Studio.