Pre-launch.NetCraftGames is not accepting customers yet. Launch happens only after its public checks pass.See launch statusJoin the waitlist

Check your game

Can NetCraftGames host my game?

We host multiplayer games that already work and have a server program that runs without a window. Five questions tell you which side of that line your game is on, and what to ask your AI to change. Nothing is uploaded and your answers stay in your browser.

By Charging Bull SoftwareLast updated:

The short answer

NetCraftGames hosts a multiplayer game that already works. It needs a server program, one that runs on its own machine without a window, on Linux. We do not write multiplayer, we do not turn a single-player game into a multiplayer one, and we do not host games that run on an online service such as Photon or PlayFab. If an AI built your game, read this page before you build anything else for hosting.

You get one of three answers:

  • Yes, ready. Your game has the pieces we need. Next you run a check on your own computer, then submit.
  • Almost. One change is missing. You get the change in one sentence and a prompt to give your AI.
  • Not yet. We cannot host this today. We tell you why now, instead of after you upload.

Check your game

Pick the answer that fits best. Not sure is always fine: it leads to a way to find out.

These are the five questions. Answer them in order, then find your result in the decision table below: read down it, and the first row that describes your game is your result. "Not sure" is always an honest answer, and there is a prompt for it.

  1. What is your game built with? Unity; Unreal Engine; Godot; A browser game (JavaScript or TypeScript); Python; Something else (Go, Rust, C#, C++, Java); I do not know. If you pick a browser game or Python, you are also asked which networking library the server uses.
  2. Can two people play together over the internet right now? Yes, and I tested it with two players; It is supposed to, but I never tested it; No, it is single-player; Not sure.
  3. How do players connect to each other? To a server program that I run (a dedicated server); One player hosts and the others join that player (host, listen server or peer to peer); Through an online service (Photon, PlayFab, Steam, Epic, Firebase, Supabase or a lobby service); Not sure.
  4. Does the game have a server mode that runs without opening a window? Yes, I already run it that way; Yes, but only on Windows or Mac; No, the server only runs inside the game window or the editor; Not sure. For a browser or Python game this question reads: is your server a Node.js or Python program that you start from a terminal?
  5. Which of these does your server already do? It listens on a port I can change with a setting; It answers a health check page; It saves and exits cleanly when told to stop. Asked only if you have a dedicated server that already runs without a window on Linux. If you picked Something else, a fourth tick asks whether your server sends a fixed hello line, or answers a simple web page, to prove a player could join.

Not sure? Ask your AI to find out

This prompt makes your AI read your project, change nothing and print one JSON answer. Paste that answer into the box above, and every "Not sure" is filled in. The answer is checked inside this page and never sent anywhere.

Find out what my project isClick inside the box to select it all, then copy.
TASK: Read this project and tell me what it is. Do not change any file.
Answer by printing ONE JSON object and nothing else, in exactly this shape (schema ncg.qualify-answers/1):
{
  "schema": "ncg.qualify-answers/1",
  "engine": "unity" | "unreal" | "godot" | "browser-js" | "python" | "other",
  "language": "<main language>",
  "networking": "none" | "dedicated-server" | "host-or-p2p" | "third-party-service",
  "networkingLibrary": "<name found in the code or package files, for example Mirror, Netcode for GameObjects, ws, socket.io, Colyseus, Photon, Steam, none>",
  "twoPlayerTestExists": true | false,
  "serverModeWithoutWindow": "yes-linux" | "yes-windows-or-mac-only" | "no",
  "hasHealthEndpoint": true | false,
  "readsPortFromSetting": true | false,
  "handlesSigtermAndSaves": true | false,
  "evidence": ["<file path and line for each answer, at most 12 items>"]
}
Rules: base every answer on files you actually opened. If you cannot tell, use the most cautious value (for example "none" or false) and say why in evidence.
Do not include secrets or file contents beyond one short line per evidence item.

What we host and what we do not

We would rather tell you now than after you have spent a weekend on it. The glossary explains any word you do not know.

  • We do not write multiplayer. NetCraftGames runs servers for games that already have multiplayer working. We never add networking to a game, and a single-player game is held when it is uploaded.
  • Games where one player is the server. The thing we run is a dedicated server program that you own, one that runs on its own machine without a window. A game where one player hosts the others (a listen server, host mode or peer to peer) needs a dedicated server mode first. The one exception is a browser game that already uses WebRTC: we offer room signaling for it, but we do not relay the game traffic itself.
  • Games built on an online service. Photon, PlayFab, Steam, Epic Online Services, Firebase and Supabase realtime run their own cloud. Our lane runs a server program that you wrote and own. If your game also has its own server code, that part can qualify.
  • Colyseus and other frameworks that need web requests before the WebSocket. Our gateway passes WebSocket connections only. Colyseus asks for a room over plain HTTP first, so it does not work through the gateway and we say so before you submit. socket.io does work, but only with WebSocket-only transport (long polling is not passed) and the fixed path you declare in the manifest.
  • Servers whose WebSocket path changes for every room or player. The gateway connects to your server at one fixed path: the root path "/" unless you declare a wsPath in the manifest (for example "/ws" or "/socket.io/?EIO=4&transport=websocket"). It cannot follow a path that changes for each room or each player, it does not forward anything a player puts in the address, and it passes WebSocket connections only, never plain web requests.
  • Other Node versions, Deno, Bun and servers that call other websites. Our servers run Node.js 24.21.0 and Python 3.12. Nothing is installed on our side, so your packages travel inside your upload, built for Linux x64 (ncg pack does this on your own computer). Another Node version, Deno or Bun must be shipped inside the upload as a Linux x86-64 program. A server cannot look up other websites by name: DNS is closed to game servers on purpose, so a game that calls an outside address by name will fail. Node.js 26 is planned after it becomes a long-term-support release, with no date and no promise.
  • Windows or macOS servers and servers that need a screen. Dedicated servers must be Linux x86-64 builds that run without a window or a graphics card. Windows, macOS and ARM server builds are not hosted.
  • A "Yes" here is not a certification. This page checks your answers. We have not seen your code and nothing has been run. A real server start and a real player join are checked only after you submit a build.

The decision table

This is the whole check as a table, for readers who skip the buttons and for search tools. Read down it: the first row that describes your game is your result.

RowIf this describes your gameResultThe one changePrompt
1You said the game is single-player.Not yetNone. We do not write multiplayer.Plan multiplayer for my game (a plan, not code) (planning only)
2Players connect through an online service such as Photon, PlayFab, Steam or Firebase.Not yetAdd a server program you own, or choose another host.Plan multiplayer for my game (a plan, not code)
3One player hosts or it is peer to peer, in Unity, Unreal or Godot, and two-player play is tested.Almost: one changeAdd a dedicated-server mode: same networking code, no local player.the prompt for your engine or language
4One player hosts or it is peer to peer, in a browser game, and two-player play is tested.Almost: one changeIf the players connect with WebRTC, our room signaling can host the rooms.Browser game with WebRTC: use NetCraftGames room signaling
5One player hosts or it is peer to peer in any other case.Not yetA dedicated server design comes first.Plan multiplayer for my game (a plan, not code)
6Browser game that uses Colyseus.Not yetMove to plain WebSocket rooms or choose another lane.Move from Colyseus (or python-socketio) to plain WebSocket
7Two-player play over the internet was never tested.Almost: one changeTest with two real players first.Prove two players can play together
8The server only runs inside the game window or the editor.Almost: one changeAdd a server mode that runs without a window.the prompt for your engine or language
9The server mode exists, but only on Windows or Mac.Almost: one changeBuild the server for Linux x86-64.the prompt for your engine or language
10Browser or Python game that uses socket.io.Almost: one changeJavaScript: switch to WebSocket-only transport and declare the socket.io path in the manifest. Python: move to plain WebSocket.Node.js with socket.io (WebSocket only) (JavaScript), Move from Colyseus (or python-socketio) to plain WebSocket (Python)
11You answered "Not sure" to any of questions 1 to 4 and nothing above decided it.Not sure yetFind out first: run ncg check, or give your AI the discover prompt.Find out what my project is
12You ticked every server basic in question 5.Yes, readyNext: run ncg check, then ncg pack.none
13One or more server basics in question 5 are missing.Almost: one changeAdd the missing server basics.the prompt for your engine or language

Prompts that set up your server

Each prompt tells your AI exactly what the host needs: a port that can be set, a health probe, a join probe, a clean stop on SIGTERM, no secrets in code, and an ncg.json file with the exact settings. Every setting in them is checked against the real validator before this site is built. A prompt marked "Manifest checked" has passed that check; none of them has yet been tried against a real AI, so read what your AI changes.

PromptWhat it makes your AI doStatus
Node.js WebSocket server (ws)Gets a Node.js server that uses the ws library ready: health page, clean stop, packaging with ncg pack, ncg.json.Manifest checked
Node.js with socket.io (WebSocket only)Makes a socket.io server work through the gateway: WebSocket-only transport and a fixed path in the manifest.Draft
Python WebSocket server (websockets or FastAPI)Gets a Python server ready: health page, clean stop, packaging with ncg pack, ncg.json.Draft
Unity: add a dedicated-server modeMakes your AI add a headless Linux server mode to a Unity project that uses Netcode for GameObjects or Mirror, and build it.Manifest checked
Unity: build the server I have for LinuxFor a Unity dedicated server that exists only for Windows or Mac: makes your AI build it for Linux x86-64.Draft
Unreal Engine: package a Linux dedicated serverMakes your AI package the Linux server target and add the health page and clean stop.Draft
Godot 4: run as a dedicated serverMakes your AI add a headless server start path for ENet or WebSocket, export it for Linux and add the health page.Draft
Go, Rust, C#, C++ or Java server with its own protocolPrepares a server with its own TCP or UDP protocol for the limited Custom native lane.Draft
Browser game with WebRTC: use NetCraftGames room signalingConnects a browser game that already uses WebRTC to our room signaling. We do not relay the game traffic.Draft
Node.js with Express or Fastify and WebSocketSame as the ws prompt, with the Express and Fastify details.Manifest checked

The prompts page lists them all, including one for socket.io (WebSocket only, with a fixed path in the manifest).

Test it with two players first

Prove two players can play togetherClick inside the box to select it all, then copy.
TASK: Prove that two real players can play together before anything is hosted. Do not change gameplay.
1. Add a script (an npm script, or the equivalent for this engine) that starts the server on your own computer and connects two clients, headless or scripted. Each client sends a move or an action, and the script checks that each client receives the other's state.
2. Run it and show me the real output. If it fails, tell me which part of multiplayer does not work yet. Do not paper over it.
3. Add the result to the project README in two lines.

Plan multiplayer, with no code

Plan multiplayer for my game (a plan, not code)Click inside the box to select it all, then copy.
TASK: Do not write multiplayer code yet. Write MULTIPLAYER-PLAN.md for this game covering:
1. Which parts of the game state must be shared, who is authoritative (the server), how often the server updates, and what a client may send (inputs, not positions).
2. Which networking library fits this engine and language, and how a dedicated server can run without a window on Linux.
3. What changes in the client: a list of files and a realistic size estimate in days of work.
4. A test plan with two real clients.
Be honest that adding multiplayer to a single-player game is a large change. Show me the plan and wait.

Move from Colyseus to plain WebSocket

Move from Colyseus (or python-socketio) to plain WebSocketClick inside the box to select it all, then copy.
TASK: This project uses Colyseus or python-socketio. The hosting service passes WebSocket connections only, to one fixed path. It cannot pass HTTP long polling or HTTP matchmaking, which Colyseus and the default python-socketio mode need before the WebSocket opens. (socket.io for JavaScript does not need this move: it has its own prompt.)
First write a short migration plan in MIGRATION.md: list every event, room and message the game uses, how rooms and reconnection will work on plain WebSocket (JSON messages with a "type" field), and which client files change. Show me the plan and WAIT for my approval before you edit any code.
After my approval: replace the realtime layer with the "ws" package on one HTTP server (JavaScript) or the "websockets" library (Python), keep the game rules unchanged, update the client to use new WebSocket(url), and add a test with two clients that proves two players see each other. Do not add features. Then ask me to run the hosting prompt for this stack.

What happens to your answers

Nothing. The check runs in your browser with the same code the dashboard and the command line use. The page tells your browser, through its security policy, that it may not make any network request, so even a bug could not send your answers away. There are no cookies, no analytics and no stored answers. The page also works with JavaScript turned off: the questions, the decision table and every prompt are plain text you can select and copy.

How to find out if your game qualifies

  1. Answer five questionsSay what your game is built with, whether two people can play together over the internet, how players connect, whether the server runs without a window, and which server basics it already has. The page gives Yes, Almost or Not yet.
  2. Make the one changeIf the answer is Almost, copy the prompt to your AI. It changes only what the prompt lists. Test the result with two real players.
  3. Check it on your own computerWhen you have the ncg tool, ncg check reads your files locally and tells you what the service would say. It uploads nothing.
  4. Submit when we openNetCraftGames is not accepting customers yet. Join the waitlist, keep your ncg.json, and submit when the doors open.

Frequently asked questions

Do you see my code or my answers when I use this check?

No. The check runs in your browser and the page is not allowed to make network requests, so nothing is uploaded, stored or sent. We only see the files you submit later, and only when you submit them. Without JavaScript the page still works as plain text.

Does a Yes mean you will host my game?

No. A Yes means your answers describe a game with the pieces we need. We have not seen your code and nothing was run. A real server start and a real player join are checked after you submit a build, and NetCraftGames has not hosted a customer game yet.

My game is single-player. What can I do?

We cannot host it, because we do not add multiplayer. If you want to build it later, the planning prompt makes your AI write a design document first, with no code. Adding multiplayer to a single-player game is a large change, and we promise nothing about hosting the result.

Why is my Node.js or Python game only "Almost"?

Our servers run Node.js 24 and Python 3.12, but they install nothing, so your packages have to travel inside your upload, built for Linux. The command ncg pack . --node --install (or --python) does that on your own computer, and the prompts for your stack add the health page, the clean stop and the manifest. If your WebSocket answers at a path such as /ws, one line in the manifest names it.