You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jul 23, 2025. It is now read-only.
Copy file name to clipboardExpand all lines: docs/basics/networkobject.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,6 +3,8 @@ id: networkobject
3
3
title: NetworkObject
4
4
---
5
5
6
+
A NetworkObject is a [GameObject](https://docs.unity3d.com/Manual/GameObjects.html) with a NetworkObject component and at least one [NetworkBehaviour](networkbehaviour.md) component, which enables the GameObject to respond to and interact with netcode.
7
+
6
8
Netcode for GameObjects' high level components, [the RPC system](../advanced-topics/messaging-system.md), [object spawning](../object-spawning), and [NetworkVariable](networkvariable.md)s all rely on there being at least two Netcode components added to a GameObject:
Copy file name to clipboardExpand all lines: docs/components/networkmanager.md
+40-26Lines changed: 40 additions & 26 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,9 +3,9 @@ id: networkmanager
3
3
title: NetworkManager
4
4
---
5
5
6
-
The `NetworkManager` is a required **Netcode for GameObjects (Netcode)**component that has all of your project's netcoderelated settings. Think of it as the "central netcode hub" for your netcodeenabled project.
6
+
The `NetworkManager` is a required Netcode for GameObjects component that has all of your project's netcode-related settings. Think of it as the central netcode hub for your netcode-enabled project.
7
7
8
-
###`NetworkManager` Inspector Properties
8
+
## `NetworkManager` Inspector properties
9
9
10
10
-**LogLevel**: Sets the network logging level
11
11
-**PlayerPrefab**: When a Prefab is assigned, the Prefab will be instantiated as the player object and assigned to the newly connected and authorized client.
@@ -22,7 +22,8 @@ The `NetworkManager` is a required **Netcode for GameObjects (Netcode)** compone
22
22
-**Enable Scene Management**: When checked Netcode for GameObjects will handle scene management and client synchronization for you. When not checked, users will have to create their own scene management scripts and handle client synchronization.
23
23
-**Load Scene Time Out**: When Enable Scene Management is checked, this specifies the period of time the `NetworkSceneManager` will wait while a scene is being loaded asynchronously before `NetworkSceneManager` considers the load/unload scene event to have failed/timed out.
24
24
25
-
### `NetworkManager` Sub-Systems
25
+
## `NetworkManager` sub-systems
26
+
26
27
`NetworkManager` is also where you can find references to other Netcode related management systems:<br/>
27
28
28
29
:::caution
@@ -36,9 +37,9 @@ All `NetworkManager` sub-systems are instantiated once the `NetworkManager` is s
36
37
-[NetworkManager.NetworkTickSystem](../advanced-topics/networktime-ticks#network-ticks.md): Use this to adjust the frequency of when NetworkVariables are updated.
37
38
-[NetworkManager.CustomMessagingManager](../advanced-topics/message-system/custom-messages.md): Use this system to create and send custom messages.
38
39
39
-
## Starting a Server, Host, or Client
40
+
## Starting a server, host, or client
40
41
41
-
In order to perform any netcoderelated action that involves sending messages, you must first have a server started and listening for connections with at least one client (_a server can send RPCs to itself when running as a host_) that is connected. to accomplish this, you must first start your `NetworkManager` as a server, host, or client. There are three `NetworkManager` methods you can invoke to accomplish this:
42
+
In order to perform any netcode-related action that involves sending messages, you must first have a server started and listening for connections with at least one client (_a server can send RPCs to itself when running as a host_) that is connected. To accomplish this, you must first start your `NetworkManager` as a server, host, or client. There are three `NetworkManager` methods you can invoke to accomplish this:
42
43
43
44
```csharp
44
45
NetworkManager.Singleton.StartServer(); // Starts the NetworkManager as just a server (that is, no local client).
@@ -51,7 +52,8 @@ Don't start a NetworkManager within a NetworkBehaviour's Awake method as this ca
51
52
:::
52
53
53
54
:::note
54
-
When starting a Server or joining an already started session as client, the `NetworkManager` can spawn a "Player Object" belonging to the client.
55
+
56
+
When starting a server or joining an already started session as client, the `NetworkManager` can spawn a "Player Object" belonging to the client.
55
57
56
58
For more information about player prefabs see:
57
59
-[NetworkObject Player Prefab Documentation](../basics/networkobject.md#player-objects)
@@ -60,7 +62,7 @@ Don't start a NetworkManager within a NetworkBehaviour's Awake method as this ca
60
62
61
63
## Connecting
62
64
63
-
When Starting a Client, the `NetworkManager` uses the IP and the Port provided in your `Transport` component for connecting. While you can set the IP address in the editor, many times you might want to be able to set the IP address and port during runtime.
65
+
When starting a client, the `NetworkManager` uses the IP and the Port provided in your `Transport` component for connecting. While you can set the IP address in the editor, many times you might want to be able to set the IP address and port during runtime.
64
66
65
67
The below examples use [Unity Transport](../../../transport/current/about) to show a few ways you can gain access to the `UnityTransport` component via the `NetworkManager.Singleton` to configure your project's network settings programmatically:
If you are using the same code block to configure both your server and your client and you want to configure your server to listen to all IP addresses assigned to it, then you can also pass a 'listen address' of "0.0.0.0" to the `SetConnectionData` method, like so:
@@ -92,9 +95,11 @@ If you are using Unity Relay to handle connections, however, **don't use `SetCon
92
95
93
96
[More information about Netcode for GameObjects Transports](../advanced-topics/transports.md)
94
97
95
-
## Disconnecting and Shutting Down
98
+
## Disconnecting and shutting down
99
+
100
+
### Disconnect from a network
96
101
97
-
Disconnecting is rather simple, but you can't use/access any subsystems (that is,`NetworkSceneManager`) once the `NetworkManager` is stopped because they will no longer be available. For client, host, or server modes, you only need to call the `NetworkManager.Shutdown` method as it will disconnect while shutting down.
102
+
When you disconnect from a network you can't use or access any subsystems, for example`NetworkSceneManager`, because they become unavailable when `NetworkManager` stops. For client, host, or server modes, call the `NetworkManager.Shutdown` method to disconnect and shut down at the same time.
98
103
99
104
:::info
100
105
When no network session is active and the `NetworkManager` has been shutdown, you will need to use `UnityEngine.SceneManagement` to load any non-network session related scene.
@@ -109,9 +114,21 @@ public void Disconnect()
109
114
}
110
115
```
111
116
112
-
## Disconnecting Clients (Server Only)
117
+
### Shut down a network session
118
+
119
+
When you invoke `NetworkManager.Shutdown` it closes any existing transport connections. The shutdown sequence for a client finishes before the next player loop update or frame. However, the shutdown sequence can take a bit longer for a server or host (server-host).
120
+
121
+
The server-host notifies all clients when it shuts down. To do this, when you invoke `NetworkManager.Shutdown` the server-host sends out a disconnect notification to all currently connected clients and populates the `NetworkManager.Disconnect` reason with one of the two following messages, depending upon whether it's a server or host instance:
122
+
123
+
- "Disconnected due to server shutting down."
124
+
- "Disconnected due to host shutting down."
125
+
126
+
The server-host attempts to wait for all client connections to close before it finishes the shutdown sequence. This additional step on the server-host side helps to assure that clients receive a disconnect notification and prevents the client transport connection from timing out. If some client connections take longer than five seconds to close after `NetworkManager.Shutdown` is invoked, the server-host automatically finishes the shutdown sequence and closes any remaining connections.
127
+
128
+
## Disconnecting clients (server only)
129
+
130
+
At times you might need to disconnect a client for various reasons without shutting down the server. To do this, you can call the `NetworkManager.DisconnectClient` method while passing the identifier of the client you wish to disconnect as the only parameter. The client identifier can be found within:
113
131
114
-
At times you might need to disconnect a client for various reasons without shutting down the server. To do this, you can call the `NetworkManager.DisconnectClient` method while passing the identifier of the client you wish to disconnect as the only parameter. The client identifier can be found within:
115
132
- The `NetworkManager.ConnectedClients` dictionary that uses the client identifier as a key and the value as the [`NetworkClient`](https://docs.unity3d.com/Packages/com.unity.netcode.gameobjects@latest?subfolder=/api/Unity.Netcode.NetworkClient.html).
116
133
- As a read only list of `NetworkClients` via the `NetworkManager.ConnectedClientsList`.
117
134
- A full list of all connected client identifiers can be accessed via `NetworkManager.ConnectedClientsIds`.
Both the client and the server can subscribe to the `NetworkManager.OnClientDisconnectCallback` event to be notified when a client is disconnected. Client disconnect notifications are "relative" to who is receiving the notification.
136
-
137
-
**There are two general "disconnection" categories:**
138
-
-**Logical**: Custom server side code (code you might have written for your project) invokes `NetworkManager.DisconnectClient`.
139
-
- Example: A host player might eject a player or a player becomes "inactive" for too long.
140
-
-**Network Interruption**: The transport detects there is no longer a valid network connection.
152
+
Both the client and the server can subscribe to the `NetworkManager.OnClientDisconnectCallback` event to be notified when a client is disconnected.
141
153
142
154
**When disconnect notifications are triggered:**
143
155
- Clients are notified when they're disconnected by the server.
144
-
- The server is notified if the client side disconnects (that is, a player intentionally exits a game session)
145
-
- Both the server and clients are notified when their network connection is unexpectedly disconnected (network interruption)
156
+
- The server is notified when any client disconnects from the server, whether the server disconnects the client or the client disconnects itself.
157
+
- Both the server and clients are notified when their network connection is unexpectedly disconnected (network interruption).
158
+
159
+
**Client notification identifiers**
160
+
- On the server-side, the client identifier parameter is the identifier of the client that disconnects.
161
+
- On the client-side, the client identifier parameter is the identifier assigned to the client.
162
+
-_The exception to this is when a client is disconnected before its connection is approved._
163
+
164
+
You can also use the `NetworkManager.OnServerStopped` and `NetworkManager.OnClientStopped` callbacks to get local notifications when the server or client stops respectively.
146
165
147
-
**Scenarios where the disconnect notification won't be triggered**:
148
-
- When a server "logically" disconnects a client.
149
-
-_Reason: The server already knows the client is disconnected._
150
-
- When a client "logically" disconnects itself.
151
-
-_Reason: The client already knows that it's disconnected._
166
+
### Connection notification manager example
152
167
153
-
### Connection Notification Manager Example
154
168
Below is one example of how you can provide client connect and disconnect notifications to any type of NetworkBehaviour or MonoBehaviour derived component.
Copy file name to clipboardExpand all lines: docs/learn/bossroom/getting-started-boss-room.md
+6-3Lines changed: 6 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -106,7 +106,7 @@ One of the eight clients acts as the host/server. That client will use a composi
106
106
107
107
* The game is server-authoritative, with latency-masking animations.
108
108
* Position updates are carried out through NetworkTransform that sync position and rotation.
109
-
* Code is organized in domain-based assemblies. See our [ARCHITECTURE.md](https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/v2.2.0/ARCHITECTURE.md) file for more details.
109
+
* Code is organized in domain-based assemblies.
110
110
111
111
### Testing multiplayer
112
112
@@ -235,9 +235,12 @@ Boss Room includes the following tools and utilities:
Report bugs in Boss Room using Github [issues](https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/issues) Report Netcode for GameObjects bugs using Netcode for GameObjects Github [issues](https://github.com/Unity-Technologies/com.unity.netcode.gameobjects) Report Unity bugs using the [Unity bug submission process](https://unity3d.com/unity/qa/bug-reporting).
241
+
- Report bugs in Boss Room using Github [issues](https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/issues)
242
+
- Report Netcode for GameObjects bugs using Netcode for GameObjects Github [issues](https://github.com/Unity-Technologies/com.unity.netcode.gameobjects/issues)
243
+
- Report Unity bugs using the [Unity bug submission process](https://unity3d.com/unity/qa/bug-reporting).
241
244
242
245
### Licence
243
246
@@ -257,7 +260,7 @@ The [Bitesize Samples](https://github.com/Unity-Technologies/com.unity.multiplay
257
260
258
261
### Contributing
259
262
260
-
Please check out [CONTRIBUTING.md](https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/v2.2.0p/CONTRIBUTING.md) for full guidelines on submitting issues and PRs to Boss Room.
263
+
Please check out [CONTRIBUTING.md](https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/CONTRIBUTING.md) for full guidelines on submitting issues and PRs to Boss Room.
261
264
262
265
Our projects use the `git-flow` branching strategy:
Copy file name to clipboardExpand all lines: docs/tutorials/get-started-with-ngo.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -178,7 +178,6 @@ This section guides you through testing the RPCs you added in the earlier sectio
178
178
1. Select **File** > **Build And Run**.
179
179
2. Stop the player.
180
180
3. Launch the client and server together in a terminal, as shown in [Testing the command line helper](command-line-helper.md).
181
-
* Alternatively, you can use Multiplayer Play Mode package, which lets you run multiple instances of the Unity Editor to test multiplayer functionality. Refer to [Multiplayer Play Mode](https://docs-multiplayer.unity3d.com/tools/current/mppm) to learn more.
182
181
183
182
After the client and server spawn, a log displays in the **Console** of the client and server sending RPC messages to each other.
184
183
@@ -220,6 +219,8 @@ The `NetworkObjectId` here is `2` because the host also has a NetworkObject with
220
219
221
220
:::
222
221
222
+
Alternatively, you can use the Multiplayer Play Mode package, which lets you run multiple instances of the Unity Editor to test multiplayer functionality. Refer to the [Multiplayer Play Mode documentation](https://docs-multiplayer.unity3d.com/mppm/current/about/) to learn more.
223
+
223
224
## Extend functionality with scripts
224
225
225
226
The section shows how to extend the functionality of the Hello World project with two scripts: [`HelloWorldPlayer.cs`](#the-helloworldplayercs-script) and [`HelloWorldManager.cs`](#the-helloworldmanagercs-script).
Copy file name to clipboardExpand all lines: transport/workflow-client-server-udp.md
+1-3Lines changed: 1 addition & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,9 +28,7 @@ The client-server workflow in this guide shows the subtle differences between us
28
28
29
29
A server is an endpoint that listens for incoming connection requests and sends and receives messages. This section shows creating a simple server with UTP 2.0.
30
30
31
-
Start by creating a C# script in the Unity Editor. Name the script ServerBehaviour.cs.
0 commit comments