A real-time cooperative multiplayer mod for shapez.io.
Note: This mod is currently in Alpha. While core synchronization logic is robust, edge cases may occasionally trigger desyncs. Use at your own risk.
Disclaimer: This mod was completely vibecoded by AI! Expect bugs, weird sync issues, and funny behavior.
Share a single factory map with friends, build cooperative infrastructure, and deliver shapes to a shared hub. The project consists of a client-side mod injected into the game and an Electron-based Launcher that serves as both the installer and the embedded relay server.
- Co-op Factory Building: Place and delete belts, miners, and buildings together in real time.
- Hub Synchronization: Shape deliveries and hub upgrade goals sync perfectly between all connected clients.
- Live Player Presence: View colored cursors indicating exactly where other players are actively working.
- In-Game Chat Overlay: Press
Jto open the Player Panel and communicate with your room. - Room Security: Create private, password-protected rooms and limit maximum player capacity.
- Spectator Mode: Join games as a read-only spectator to observe factory growth.
- Auto-Healing State: Advanced packet sequencing and deep synchronization logic handles network lag gracefully, recovering instantly from dropped packets.
The standalone server.js is DEPRECATED. The relay server is now inside launcher/main.js
| Path | Description |
|---|---|
launcher/ |
Electron Launcher app — installs the mod and runs the embedded relay server |
launcher/main.js |
Main process: mod installer, WebSocket relay server, auto-updater |
launcher/index.html |
Launcher UI |
launcher/renderer.js |
Launcher renderer process logic |
launcher/preload.js |
Electron preload bridge |
shapez-multiplayer.js |
Client-side mod injected into shapez.io |
server.js |
Deprecated — standalone relay server kept for reference only |
package.json |
Root package metadata |
The multiplayer ecosystem is entirely managed through the Shapez Multiplayer Launcher. This Electron application automatically installs the mod into your local game directory and runs an embedded WebSocket relay server — no separate server setup is required.
- Navigate to the Releases page of this repository.
- Download the appropriate executable for your Operating System (
.exefor Windows,.AppImagefor Linux). - Run the Launcher application.
- Click Install / Update Mod. The launcher will automatically locate your shapez.io installation and inject the latest mod code.
- If you intend to host the session, click Start Server directly within the Launcher. The relay server starts on port
3005by default.
Caution Regarding Mod Conflicts: All players joining a session must have identical mods installed. If the host is running additional mods (e.g.,
usage_statistics.js) and guests are not, the game will critically desync when attempting to build the factory state.
If you are playing on a local network (LAN), players can connect using your local IPv4 address (e.g., 192.168.1.50). To play over the internet, the host must expose the server port.
- Access your home router's administration panel.
- Locate the Port Forwarding configuration.
- Create a rule forwarding TCP port 3005 to the local IPv4 address of the host machine.
- Provide your Public IP Address to your guests.
If router configuration is unavailable, utilize a tunneling service:
- Ngrok: Execute
ngrok tcp 3005to generate a public TCP tunnel URL. Guests will input the provided URL and dynamic port. - Hamachi / Radmin VPN: The host and guests join the same virtual network, allowing guests to connect via the host's VPN-assigned IP address.
- Start the server via the Multiplayer Launcher.
- Launch shapez.io.
- Press "Host MP" under the save file that you wish to host.
- Enter your connection details. If the Launcher is running on your machine, use
localhostand port3005. If not enter the servers's Public IP, VPN IP, or Tunnel URL. - Configure a password and player limit if desired, then click Host Game.
- Distribute the generated 6-character Room Code to your guests.
- Launch shapez.io and select Multiplayer from the Main Menu.
- Enter the host's Public IP, VPN IP, or Tunnel URL.
- Enter port
3005(or the specific port provided by your tunnel service). - Input the Room Code and click Join.
Messages follow { type: string, payload: any, from?: string }.
J— Toggle Player Panel. Hosts can utilize this panel to kick disruptive players or transfer host privileges.