What is the authoritative server?

All the documentation talks about authoritative servers in a conceptual format:
http://docs.unity3d.com/Documentation/Components/net-HighLevelOverview.html

However, I can’t find anything n the documentation in concrete terms.

Is it another Unity client running an instance on a server?

I’ve seen mention of Photon’s server or cases where you create your own .NET application and use Raknet for networking. Both of these cases seem like they would not be a good fit for an FPS. You would rule out usage of alot of the Unity engine. If your server doesn’t have any of the engine features like physics, collision detection, etc. then you have to write that stuff yourself or use another framework, and thus the clients have no client side prediction, because Unity’s implementation is going to be different than your server’s implementation.

Is this the case? Or am I missing something? I can’t imagine the documentation would discuss these things at length and not ever make the connection between conceptual and practical. For someone new to Unity, the documentation definitely gave a strong impression that Unity has some sort of server-side application, when it seems you really need to implement your own or use a third party. If the purpose of the article is just to cover general game design concepts, it should be made clear at the conclusion of the article that Unity does not support that concept out of the box, and that one must implement there own server using the networking API’s or use a third party. The first time I read that article I went looking for this mythical “Unity Server”.

Authorative server is an application that you create either with Unity or in another language. It is similar to a standard server for games in the sense that it basically hosts the game and players connect to it in order to interact with each other.

The major difference is that an Authorative server is setup in such a way ( through your programming) that it makes all final decisions. For example when, motion in multiplayer games can be handled locally and the server only get’s your new position. In an autorative setup, you would only send input to the server and it would decide your new location (physics etc would run there). This makes hacking less of a problem, which is it’s main use (although having a physics driven game might also be easier using some sort of authorative setup).

As far as the documentation: the truth is you can make the server application using unity, you can make without unity and it’s basically up to you to create the architecture.

The fact of the matter though is that creating a server is pretty simple. Check out this Unity - Scripting API: Network.InitializeServer

and the tutorials from Gamer to Game Developer (google it).

Where is this traditionally executed? Given that Unity has not single entry point and everything is done through game objects, must I create a mock game object to hold this script? How do I ensure that object’s Update runs before any other object so that I can perform necessary setup?

How do I run Unity as a headless service?