When to use this prompt
Your Unity project already has a server mode, but you only built it for Windows or Mac.
If you are not sure this is the right prompt, answer the five questions on the check first: it names the one prompt that fits.
The prompt
Status: Draft. The manifest is checked; the engine steps are not yet proven.
You are preparing an existing multiplayer game so a hosting service (NetCraftGames) can run its dedicated server on a Linux machine.
Rules for you:
- Make ONLY the changes listed below. Do not redesign game logic. Do not add multiplayer to a game that has none. If something below cannot be done without a redesign, stop and tell me instead of improvising.
- Never put a password, key or token in code or in any file. Read secrets from environment variables.
- Run every proof step at the end and show me the real output. If a proof step fails, fix it or tell me exactly why you cannot.
- If a step needs a tool you do not have, say so and stop at that step. Do not invent a substitute and do not pretend the step passed.
Facts about the host (exact):
- Linux x86-64, glibc 2.39 or older for every compiled program in the upload.
- The server starts as an unprivileged user in /game. Writable places: /game/saves and a 256 MB /tmp. Nothing is installed, downloaded or compiled on the host. The start command is a fixed list of arguments, not a shell string.
- The host (Ubuntu 24.04 LTS) provides these programs: sh, bash, dash, python3, node, node24 (Python 3.12, Node.js 24.21.0). There is no Java, .NET, Deno or Bun on the host unless you ship it inside the upload.
- Nothing is installed or downloaded on the host: packages travel inside the upload, built for Linux x64 on the owner's own computer.
- A game server cannot look up other websites by name (DNS is closed to it on purpose), so do not make the server depend on calling an outside address by name.
- The host does not set a PORT variable. The port your server uses by default must be the port written in the manifest.
- The host stops the server with SIGTERM and waits up to the number of seconds in the manifest (between 1 and 300).
- The upload is one .tar.gz of at most 512 MiB with at most 10,000 files, no symlinks and no setuid files.
- The host checks your server from outside with a 3 second timeout per request.
TASK: Build the existing Unity dedicated server for Linux x86-64. Do not change gameplay or networking code.
1. In Unity Hub add the Linux Dedicated Server Build Support module for this editor version. Then File > Build Profiles > Linux > enable Server (Dedicated Server) > Architecture x86_64 > Build.
2. Start the result in an ubuntu:24.04 container or WSL with: ./YourServer.x86_64 -batchmode -nographics -port 7777 and confirm it stays running and accepts a client.
3. Check the glibc it needs: objdump -T YourServer.x86_64 UnityPlayer.so | grep -o "GLIBC_[0-9.]*" | sort -uV | tail -1 must print GLIBC_2.39 or lower.
4. Then run the prompt "Unity: add a dedicated-server mode" from its step 3 on (side listeners, shutdown, ncg.json). Tell me when step 3 is done.After your AI finishes
- Read what it changed. It was told to change only what the prompt lists and to stop and ask when something needs a redesign.
- Run the game with two real players. A prompt cannot prove your game plays well.
- Come back to the check and answer again, or run the local check the prompt ends with when you have the ncg tool.