LinuxCommandLibrary

project-zomboid

Launch Project Zomboid game

TLDR

Start the server

$ [path/to]/start-server.sh
copy

Start a server with a specific name
$ [path/to]/start-server.sh -servername [server_name]
copy

SYNOPSIS

ProjectZomboid64 [JVM_OPTIONS] [-- [GAME_OPTIONS]]
or
steam -applaunch 108600 [GAME_OPTIONS]

PARAMETERS

-Xms<size>
    Sets the initial Java heap size. E.g., -Xms2g for 2 gigabytes. Crucial for performance.

-Xmx<size>
    Sets the maximum Java heap size. E.g., -Xmx8g for 8 gigabytes. Essential for preventing out-of-memory errors, especially with mods.

--
    A common separator used when directly invoking the Java wrapper script, indicating that subsequent arguments are for the game application itself, not the JVM.

-nosteam
    Launches the game without Steam integration, useful for troubleshooting or specific server setups.

-safemode
    Starts the game with default, safe graphics settings, often used to resolve display issues.

-debug
    Enables verbose debug logging, helpful for mod development or troubleshooting.

-windowed
    Forces the game to launch in windowed mode.

-fullscreen
    Forces the game to launch in fullscreen mode.

-userdir <path>
    Specifies a custom directory for game user data (saves, mods, logs) instead of the default.

-enableluadev
    Activates Lua debugging tools within the game, primarily for modders.

-Djava.awt.headless=true
    A JVM argument typically used when running a dedicated server without a graphical interface.

DESCRIPTION

The "project-zomboid" command typically refers to the executable for the popular survival horror video game, Project Zomboid, on Linux systems. This command is not a standard system utility but rather the entry point for launching the game itself.

Project Zomboid is an open-world sandbox game where players must survive a zombie apocalypse for as long as possible. It features deep crafting, base building, intricate survival mechanics like hunger, thirst, illness, and mood, and a strong emphasis on permadeath. The game is developed by The Indie Stone and is notable for its isometric perspective, pixel art style, and relentless difficulty.

On Linux, the game is commonly launched via Steam or by directly executing the `ProjectZomboid64` (or `ProjectZomboid32`) shell script found within the game's installation directory. This script acts as a wrapper, configuring and launching the underlying Java Virtual Machine (JVM) which runs the game's main Java application. Users often interact with this command to customize launch options, particularly adjusting memory allocation for the JVM or enabling specific game modes and debug features.

CAVEATS

The 'project-zomboid' command is specifically for launching the game and not a general-purpose Linux utility. Its behavior heavily depends on the game's internal Java application and the underlying Java Virtual Machine. Performance is highly dependent on allocated RAM and CPU. Direct execution requires Java Runtime Environment (JRE) to be correctly configured and accessible by the wrapper script. Issues often arise from insufficient memory allocation or graphics driver problems.

DEDICATED SERVER SETUP

When setting up a dedicated server for Project Zomboid, users often modify the `ProjectZomboidServer64` (or `ProjectZomboidServer32`) script. This typically involves adjusting -Xmx for maximum memory, using -Djava.awt.headless=true, and potentially running the server within a `screen` or `tmux` session for background operation and session persistence.

MEMORY OPTIMIZATION

Due to its Java foundation, Project Zomboid can be memory-intensive, especially with numerous mods. Users frequently need to manually adjust the -Xms and -Xmx JVM options in the launch script or Steam launch options to allocate sufficient RAM, preventing crashes and improving performance.

HISTORY

Project Zomboid was first released in alpha in 2011, making significant strides through early access. Its development has been characterized by continuous updates and community involvement. The game's reliance on Java has been a consistent aspect of its architecture, influencing its cross-platform compatibility and memory management. Over the years, the launch scripts for Linux have evolved to better manage JVM arguments and provide more robust direct execution options, catering to both desktop players and dedicated server administrators.

SEE ALSO

java(1), screen(1), tmux(1), steam(6)

Copied to clipboard