Home
Headless Mode
Linux
unity5
Unity Linux Headless Mode [INFO]

 
 
What does the headless build option do?

Headless mode means the player is built without any reference to X11 and friends, meaning that you can run a headless player on a server that doesn't have X installed. In all other respects, behavior is identical to a normal player with -batchmode and -nographics.

Textures and sounds are still included in the build, and loaded in the player as normal - Unity doesn't know what you want to do with your player - just because you're not displaying a texture doesn't mean you don't want to do something with it. 
 

How to remove unneeded references (texture, audio) when doing headless server builds?

You can add conditional compilation symbols in project settings which could be used to cause code to compile or not. e.g. define HEADLESS, then do something like...
  1. #if HEADLESS
  2. // my code to do stuff when HEADLESS is defined
  3. #endif
Now, I don't know if PostProcessScene allows you to strip out assets, but if so then you could choose to strip them or not by using conditional compilation.

Another option would be to do something with assset bundles - just don't load certain bundles when in headless mode.

You can potentially do something in PostProcessBuild as well, but again, I don't know if you can cause assets to be stripped or not.

Hopefully that gives you enough info to do some more research. 
 
 
Headless linux server problem:
 
Hey, I can start server in -batchmode and Putty console just hangs there.
  1. Set current directory to /server_linux/sl
  2. Found path: /server_linux/sl/server_linux.x86
  3. Mono path[0] = '/server_linux/sl/server_linux_Data/Managed'
  4. Mono path[1] = '/server_linux/sl/server_linux_Data/Mono'
  5. Mono config path = '/server_linux/sl/server_linux_Data/Mono/etc'
And it's all ok.
But how can I start 3 instances of unity application?


Answer:
As normal user, cd to your game location and try this command to see if working:

$ xvfb-run --auto-servernum --server-args='-screen 0 640x480x24:24' ./server_linux.x86 > ./server_linux.log &

To run multiple instances of Unity Editor:
  • open project once and set Edit -> Project Settings -> Player -> Per-Platform Settings - Settings for PC, Mac & Linux Standalone -> check "Run In Background"
  • close the project and copy it (full) in diferent locations
  • for each location, create a .bat files like (change paths accordingly with Unity instalation and your folders):
"C:\Program Files (x86)\Unity\Editor\Unity.exe" -projectPath "path_to_your_project_folder"
  • Execute each .bat file
Some more possible useful details related with running under Linux you may find here (it's the doc of FPShootNet project under Unity Asset Store). 
 
 
Collective answers from unity:
 

Blog authors

No comments