Headless Clients are versions of Neos that lack a graphical user interface, allowing them to run efficiently in scenarios where rendering is not needed (such as when used as a server). It is common to use a Headless Client to run events or servers for large volume applications within Neos. Headless Clients can run on Windows and Linux servers wherever they may be, including your own computer.
Access to Headless Client Builds
The Headless Client feature is currently in preview and due to this you will need to have a Neos Pro License or to be a Neos Patreon at the Gunter level or higher. Once this is done, check the pins in the #headless-client channel in the Neos Discord server, or contact a Neos administrator to get your access code.
Getting the Headless Client Files
There are two options for getting the files required to run a headless client:
- Using Steam's Graphical Interface
- Using Steam's Command Line Interface - Common for within Docker files and Linux servers.
Using Steam's Graphical Interface
- Open Steam
- Find Neos in your Installed Games list
- Right Click Neos and select "Properties"
- Click the "Betas" option in the window which appears
- Enter your code from the pinned message on the "#headless-client" channel into the "beta access code" field.
- This will grant you access to the headless-client build.
- Switch to the headless-client build
Using Steam's Command Line Interface
- install SteamCMD
- Run Steam CMD with:
- Paste the following command into SteamCMD:
app_update 740250 -beta headless-client -betapassword <beta access code>
Running a Headless Client
First, look for the files you've installed. Look for Neos.exe:
- For SteamCMD it will be in the location which you downloaded the files to with SteamCMD
- For Steam's GUI it will be in the regular Steam installation folder for Neos inside a folder called "HeadlessClient"
Once you've found them you can try running the "Neos.exe" file in there:
- For Windows just double click it
- For Linux you'll need mono:
This will run a default Neos Headless, as we haven't specified any configuration properties it will just open a default world using a non-logged in user. This isn't that useful but it does verify that everything is installed and setup correctly. After it starts up you should see "World Running" and something along the lines of "<your computers name> World 0>_".
If you see this, you're good to go!
You've got a running Headless Client. You'll probably want to create a Configuration File next.
Saving Headless Worlds
When you're running a headless client, you may wish to save changes to the world for things like collaborative building. When doing this keep in mind:
- You must have save access to the world you are trying to save.
- Simply loading someone else's world via your configuration file might not give you this permissions.
- Saving must be configured or invoked, saving is not automatic.
- For Cloud saving (saveAsOwner:"CloudUser"), you must:
- Ensure the headless is logged into a user account
- Ensure the logged in user has cloud storage space for the world and any changes
For a smooth experience if you want to save a world from a headless it is recommended to:
- Copy worlds you might want to save changes to, to the headless user's account using Save As
- You'll need to log in as the headless user on regular Neos to do this
- Utilize Groups, and load the headless world from a group's storage
- This let's your group work on and save a headless' world without interacting with the headless. The next time it restarts it'll pickup the changes from the group storage.
- When doing this make sure to disable saving on the headless, make all changes outside it.
- Experiment: Create a headless, add a cube to the world, save it, make sure the cube stays there. Don't do a lot of work without validating your setup.
It is also possible to run Headless Clients within Docker or even a Kubernetes setup. A few community members have publicly available files to help setup your Docker instance. Please review any of the following to see which one will fit your needs: