According to the official documentation,
https://docs.unity3d.com/Packages/com.unity.netcode@1.0/manual/client-server-worlds.html
I tried to find the relevant configuration in the Project Settings within the Unity Editor, but I couldn’t locate it. Does this description mean what I think, or am I misunderstanding it?
Hey Bagazi! You’re right that it’s slightly misleading. These settings are under **Project Settings > Entities > Build**. We’ll improve that documentation based on this feedback, cheers!
And what’s the difference between these two settings when compiling standalone: Client/Client&Server? In what scenarios are they applied?
I’m personally thinking that for a published game project, the executable version should be consistent. Whether it’s running as a client or a server should be determined dynamically by the player, is that right? Or am I misunderstanding it?
This dropdown determines whether or not you want the resulting client build to support hosting their own server (in-process in the client build).
If yes, set Client&Server. If no, set ClientOnly.
With this use-case, you’d build the client as Client&Server, so that at runtime, users have the choice. Some game developers may want to strip servers out into:
- DGS only, thus players should not have access to server executables or functionality.
- A separate server exe that is shipped alongside the game exe.
Details from the doc page:
- A client-only build. The UNITY_CLIENT define will be set in the build (but not in-editor).
- A client/server build. Neither the UNITY_CLIENT, nor the UNITY_SERVER are set (i.e. not in built players, nor in-editor).
For either build type, specific baking filters can be specified in the DOTS project setting, to allow you to customize which assemblies you include.