Skip to main content
Documentation
PalMods

Updated

Docs/Creating Mods for Palworld/Package, Test & Publish a Mod
Creator releasePalworld 1.0Advanced

Package, Test & Publish a Mod

Turn finished files into a portable PalMods release: author Info.json, declare dependencies and server rules, test the installed result, version updates, and publish responsibly.

20 min read Researched for 1.0 Sources included

A Palworld 1.0 release is more than a zip of files. The official loader recognizes a package by the single Info.json at its root, then uses PackageName, Version, Dependencies, MinRevision, Tags, and one or more InstallRules to decide whether and where it can deploy. Good packaging turns installation and server operation into deterministic metadata instead of prose that every user interprets differently.

Design that manifest alongside the mod. Choose a stable identity, keep runtime targets in dedicated source folders, declare the complete dependency graph, and test the final archive through PalMods’ upload and install path. The artifact users receive—not your development tree or a storefront—is the product.

01Release root

Canonical package layout

EntryPurposeRule
Info.jsonMachine-readable package identity and deployment rulesExactly one at package root; valid JSON
thumbnail.pngPortable package art when named by ThumbnailShip the referenced file with suitable readable artwork
Scripts/Lua runtime contentTarget from a Lua InstallRule
Paks/Resource pak/ucas/utoc setsTarget from a Paks InstallRule
LogicMods/Cooked LogicMod package filesTarget from a LogicMods InstallRule
PalSchema/PalSchema JSON/JSONC mod contentTarget from a PalSchema InstallRule
02Info.json

A complete client Lua manifest

Replace dependency identities and revision with values verified for your release. Keep PackageName to ASCII letters and digits for broad package-tool compatibility.

Info.jsonjson
{
  "ModName": "Example Runtime Utility",
  "PackageName": "ExampleRuntimeUtility",
  "Thumbnail": "thumbnail.png",
  "Version": "1.0.0",
  "DebugMode": false,
  "MinRevision": 82182,
  "Author": "YourName",
  "Dependencies": ["UE4SS"],
  "Tags": ["Utilities", "UE4SS"],
  "InstallRule": [
    {
      "Type": "Lua",
      "Targets": ["./Scripts"]
    }
  ]
}
03Manifest reference

Every Info.json field has a job

FieldUseAuthor decision
ModNameHuman-readable display nameClear and recognizable; it may contain spaces.
PackageNameActivation, dependency, deployment-folder identityStable, distinctive, alphanumeric only; changing it creates a new identity.
ThumbnailPackage image used by compatible tools and game surfacesReference an included package-relative image.
VersionPlain-string redeployment comparisonChange on every update; semantic versioning is optional but helpful to humans.
DebugModeForces reinstall every launch when trueUse for local iteration, ship false unless perpetual redeployment is intentional.
MinRevisionMinimum Palworld revision; last five title-screen digitsSet from the oldest build you actually tested.
AuthorAttribution metadataUse the publishing identity users can verify.
DependenciesRequired PackageName identitiesDeclare every runtime/framework package, not display titles.
TagsPortable package classificationUse recognized tags: PalSchema, UE4SS, Model Replacement, Utilities, Gameplay, User Interface.
InstallRuleType, Targets, and optional server applicationOne or more precise rules matching real package folders.
Sponsored
Indifferent Broccoli Palworld server hosting with fast setup, low latency, and an easy control panel.
Sponsored
Indifferent Broccoli Palworld server hosting with fast setup, low latency, and an easy control panel.
04Dedicated server

Add an explicit server rule

The server rule is separate even when it deploys the same source. This makes client and server intent machine-readable.

Info.json (InstallRule excerpt)json
{
  "InstallRule": [
    { "Type": "Lua", "Targets": ["./Scripts"] },
    { "Type": "Lua", "IsServer": true, "Targets": ["./Scripts"] }
  ]
}
05Independent publishing

Build a PalMods release

  1. 01

    Stage a clean release candidate

    Create a fresh package folder outside the development tree. Keep Info.json at root and include only final runtime files, documentation, and referenced artwork—never build caches, logs, source-only assets, or secrets.

  2. 02

    Author or generate Info.json

    Write the manifest directly or use Mod Uploader’s local-package mode as a template. Select the real Lua, Paks, LogicMods, or PalSchema layout without creating a Workshop item.

  3. 03

    Inspect every package claim

    Set a stable PackageName, real Version, minimum tested revision, dependencies, tags, and exact install types. Add separate server rules only when the server artifact was actually tested.

  4. 04

    Zip the portable artifact

    Place Info.json at the archive root and confirm every InstallRule target exists inside the zip. The archive should not depend on a storefront-owned folder or metadata file.

  5. 05

    Upload and review on PalMods

    Upload the final zip, review the detected manifest fields and scanner results, then complete the human metadata: summary, description, compatibility, save impact, permissions, requirements, and removal notes.

  6. 06

    Test what users will receive

    Install the uploaded artifact in a clean setup with only declared dependencies. Verify first install, update, disable, removal, client/server behavior, and the logs users will need for support.

06PalMods publishing

What Info.json can safely prefill

PalMods treats manifest values as reviewable suggestions, preserves explicit author choices, and shows conflicts instead of silently guessing.

Manifest signalSafe PalMods useDo not infer
ModNameSuggest title when emptyLong description, summary, permissions
VersionPrefill release/file versionSemantic ordering beyond the author’s string
InstallRule.TypeSuggest loader type(s) and validate archive layoutOne loader when several rules are present
IsServer: trueSuggest dedicated-server compatibilityServer-only side; the package may also contain client rules
TagsSuggest recognized taxonomy tags for confirmationClaims not represented by official tags
PackageName / Dependencies / MinRevisionPersist identity, dependency graph, collision check, and build floorSigned-in author identity, crossplay safety, or save safety
07No shortcuts

Release gate

  • Clean-package install

    A separate clean game can install and run only the release artifact plus declared dependencies.

  • Update tested over prior public version

    The new Version redeploys, settings migrate or preserve correctly, and stale files do not survive unexpectedly.

  • Client/server matrix tested

    Every claimed side and platform was actually run, including mismatched-client behavior and server restart where relevant.

  • Persistence and removal tested

    New world, copied existing world, save–exit–reload, disable, uninstall, and dependency removal have documented outcomes.

  • Package contents audited

    No credentials, personal paths, source-only assets, editor cache, crash dumps, or unrelated executables are included.

  • User documentation complete

    Requirements, loader, supported revision, install, configuration, conflicts, removal, support/log location, license, and change notes are present.

08Stewardship

Publish for maintainability

Before making a PalMods release public, have another person install the exact uploaded artifact in a clean setup. Author machines often contain undeclared frameworks, development files, or stale configuration that can hide a broken release.

Change Version before updates, retain the previous artifact and manifest, name the supported Palworld revision, document breaking config or save changes, and provide a rollback statement. When you cannot update promptly, mark compatibility honestly instead of leaving users to discover a native crash.

09Continue

Primary release references

10Verification

Research sources

The claims in this guide were checked against these current references. Primary sources are marked first.

Comments

Loading discussion...

FAQ

Frequently asked questions

Is Info.json required for Palworld’s official loader?

Yes. A package is recognized by its root Info.json, which supplies identity, compatibility metadata, dependencies, and deployment rules.

Does Version have to use semantic versioning?

No. The official loader compares Version as a plain string and reinstalls when it differs. Semantic versioning still helps users and release tooling understand changes, but you must change the string for every update.

Can the same package support client and server?

Yes. Add separate InstallRules and mark the server rule with `IsServer: true`; Targets may be the same or different. Document whether players also need the client rule.

Do I need to publish on Steam Workshop to release on PalMods?

No. PalMods accepts an independent release artifact. Info.json is a portable package contract, not a requirement to create or maintain a Workshop listing.

Should PalMods import Info.json automatically?

Yes, as reviewable suggestions and first-class package metadata. ModName, Version, rules, server flag, tags, PackageName, dependencies, and MinRevision are valuable; author, side, crossplay, permissions, description, and save safety should not be guessed.

Sponsored
Indifferent Broccoli Palworld server hosting with fast setup, low latency, and an easy control panel.
Advertisement