Quick answer: The PCK file contains all of your game's resources. If the executable cannot find it, the game cannot load any scenes, scripts, or assets. This usually happens when the PCK file was not placed in the same directory as the executable, or when the executable name does not match the PCK file name.

Here is how to fix Godot pck file not found after export. You exported your Godot 4 project successfully, distributed it to testers, and they report that the game immediately crashes with an error about a missing PCK file. Or perhaps the executable launches but shows a blank screen because it has no resources to load. The PCK file is the heart of your exported game — it contains every scene, script, texture, and audio file — and if the executable cannot find it, nothing works.

The Symptom

When running your exported Godot 4 game, you see one of these errors in the console or log:

This typically happens after moving the exported files to a different directory, distributing them via a ZIP archive, or uploading them to a game distribution platform like itch.io or Steam.

What Causes This

When Godot exports a project, it produces two files by default: an executable (e.g., mygame.exe on Windows, mygame.x86_64 on Linux) and a PCK file (e.g., mygame.pck). The executable contains the Godot engine runtime, and the PCK file contains all of your project’s resources packed into a single archive.

The executable looks for the PCK file using a name-matching convention: it expects a .pck file with the same base name as itself, in the same directory. If you rename either file, or if you place them in different directories, the match breaks and the game cannot start.

A common scenario is exporting with one name and then renaming the executable for distribution. If you export as mygame.exe + mygame.pck and then rename the executable to My Game.exe, the engine will look for My Game.pck and fail to find mygame.pck.

The res:// path issue is a related but distinct problem. In the editor, res:// points to your project directory and is both readable and writable. In an exported build, res:// points to the contents of the PCK file and is read-only. Any code that tries to write files to res:// will fail silently or error out. Save files, config files, and user data must use the user:// path instead.

The Fix

Step 1: Ensure the PCK file is co-located with the executable and names match.

After exporting, verify that both files are in the same directory and share the same base name:

# Correct: names match
my_game/
  mygame.exe
  mygame.pck

# Incorrect: names don't match
my_game/
  My Game.exe     # renamed!
  mygame.pck      # still has old name

# Incorrect: different directories
my_game/
  mygame.exe
data/
  mygame.pck      # wrong location

If you need to rename the executable, rename the PCK file to match.

Step 2: Enable PCK embedding to eliminate the separate file.

The simplest way to avoid PCK path issues entirely is to embed the PCK into the executable. In your export preset, check the “Embed PCK” option (found under the Options or Resources section, depending on your platform). This bundles all resources directly into the executable binary:

# Export Preset → Options
# Check "Embed PCK" (or "Embed Pck" depending on version)

# Result: a single file
my_game/
  mygame.exe      # contains both engine and resources

This produces a single, self-contained executable that you can rename freely without breaking anything. The trade-off is that the executable is larger (it includes all resources), and you cannot patch the PCK separately for updates.

Step 3: Fix res:// vs user:// paths in your code.

Search your codebase for any place you write files using res:// and change them to user://:

# Wrong: res:// is read-only in exports
var file = FileAccess.open("res://save_data.json", FileAccess.WRITE)
# This works in the editor but fails in exported builds

# Correct: use user:// for writable files
var file = FileAccess.open("user://save_data.json", FileAccess.WRITE)
# user:// is writable on all platforms

# user:// resolves to platform-specific directories:
# Windows: %APPDATA%/Godot/app_userdata/YourProject/
# Linux:   ~/.local/share/godot/app_userdata/YourProject/
# macOS:   ~/Library/Application Support/Godot/app_userdata/YourProject/

You can customize the user:// path by setting Application → Config → Custom User Dir Name in Project Settings. This is recommended for shipped games so the save directory uses your game’s name rather than the generic Godot path.

Why This Works

Godot’s executable-to-PCK binding is intentionally simple: it uses filename matching because this works reliably across all operating systems without requiring registry entries, config files, or hardcoded paths. When you keep the names aligned, the binding just works.

PCK embedding eliminates the binding problem entirely by making the executable self-contained. The engine checks for an embedded PCK before looking for an external one, so embedded resources always take priority. This is the approach most commercial Godot games use because it simplifies distribution.

The res:// vs user:// distinction exists because the PCK is a sealed archive. Godot cannot modify files inside the PCK at runtime (doing so would corrupt the archive structure). The user:// directory provides a platform-appropriate writable location that persists between game sessions, making it the correct place for save data, settings, and any runtime-generated files.

Related Issues

If your PCK loads but specific resources inside it are missing, see Fix: Godot Exported Game Missing Resources or Showing Errors for guidance on export filters.

For custom fonts and assets that fail to load in exports, check Fix: Custom Fonts or Assets Not Loading in Godot Exported Build.

If the export itself fails before producing a PCK, you may have an export template mismatch — see Fix: Godot Export Template Version Mismatch Error.

Same name. Same folder. Game runs.