There are two kinds of users for the Networking feature:
Users making a Multiplayer game with Unity. These users should start with the NetworkManager or the High Level API.
Users building network infrastructure or advanced multiplayer games. These users should start with the NetworkTransport API.
High level scripting API
Unity’s networking has a “high-level” scripting API (which we’ll refer to as the HLAPI). Using this means you get access to commands which cover most of the common requirements for multiuser games without needing to worry about the “lower level” implementation details. The HLAPI allows you to:
Control the networked state of the game using a “Network Manager”.
Operate “client hosted” games, where the host is also a player client.
Serialize data using a general-purpose serializer.
Send and receive network messages.
Send networked commands from clients to servers.
Make remote procedure calls (RPCs) from servers to clients.
Send networked events from servers to clients.
Engine and Editor integration
Unity’s networking is integrated into the engine and the editor, allowing you to work with components and visual aids to build your multiplayer game. It provides:
Multi-channel design to avoid head-of-line blocking issues
Support for a variety of levels of Quality of Service (QoS) per channel.
Flexible network topology that supports peer-to-peer or client-server architectures.
Sample Projects
You can also dig into our multiplayer sample projects to see how these features are used together. The following sample projects can be found within this Unity Forum post: