Skip to content
This repository was archived by the owner on Jul 23, 2025. It is now read-only.

Commit 46bcd8e

Browse files
authored
Develop into main (#1251)
2 parents 8e5900e + 7ee10a4 commit 46bcd8e

File tree

5 files changed

+51
-33
lines changed

5 files changed

+51
-33
lines changed

docs/basics/networkobject.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ id: networkobject
33
title: NetworkObject
44
---
55

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+
68
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:
79

810
1. `NetworkObject`

docs/components/networkmanager.md

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ id: networkmanager
33
title: NetworkManager
44
---
55

6-
The `NetworkManager` is a required **Netcode for GameObjects (Netcode)** component that has all of your project's netcode related settings. Think of it as the "central netcode hub" for your netcode enabled 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.
77

8-
### `NetworkManager` Inspector Properties
8+
## `NetworkManager` Inspector properties
99

1010
- **LogLevel**: Sets the network logging level
1111
- **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
2222
- **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.
2323
- **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.
2424

25-
### `NetworkManager` Sub-Systems
25+
## `NetworkManager` sub-systems
26+
2627
`NetworkManager` is also where you can find references to other Netcode related management systems:<br/>
2728

2829
:::caution
@@ -36,9 +37,9 @@ All `NetworkManager` sub-systems are instantiated once the `NetworkManager` is s
3637
- [NetworkManager.NetworkTickSystem](../advanced-topics/networktime-ticks#network-ticks.md): Use this to adjust the frequency of when NetworkVariables are updated.
3738
- [NetworkManager.CustomMessagingManager](../advanced-topics/message-system/custom-messages.md): Use this system to create and send custom messages.
3839

39-
## Starting a Server, Host, or Client
40+
## Starting a server, host, or client
4041

41-
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+
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:
4243

4344
```csharp
4445
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
5152
:::
5253

5354
:::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.
5557

5658
For more information about player prefabs see:
5759
- [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
6062

6163
## Connecting
6264

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.
6466

6567
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:
6668

@@ -73,6 +75,7 @@ NetworkManager.Singleton.GetComponent<UnityTransport>().SetConnectionData(
7375
```
7476

7577
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:
78+
7679
```csharp
7780
NetworkManager.Singleton.GetComponent<UnityTransport>().SetConnectionData(
7881
"127.0.0.1", // The IP address is a string
@@ -92,9 +95,11 @@ If you are using Unity Relay to handle connections, however, **don't use `SetCon
9295

9396
[More information about Netcode for GameObjects Transports](../advanced-topics/transports.md)
9497

95-
## Disconnecting and Shutting Down
98+
## Disconnecting and shutting down
99+
100+
### Disconnect from a network
96101

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.
98103

99104
:::info
100105
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()
109114
}
110115
```
111116

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:
113131

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:
115132
- 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).
116133
- As a read only list of `NetworkClients` via the `NetworkManager.ConnectedClientsList`.
117134
- A full list of all connected client identifiers can be accessed via `NetworkManager.ConnectedClientsIds`.
@@ -130,27 +147,24 @@ void DisconnectPlayer(NetworkObject player)
130147
}
131148
```
132149

133-
### Client Disconnection Notifications
150+
### Client disconnection notifications
134151

135-
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.
141153

142154
**When disconnect notifications are triggered:**
143155
- 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.
146165

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
152167

153-
### Connection Notification Manager Example
154168
Below is one example of how you can provide client connect and disconnect notifications to any type of NetworkBehaviour or MonoBehaviour derived component.
155169

156170
:::important

docs/learn/bossroom/getting-started-boss-room.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ One of the eight clients acts as the host/server. That client will use a composi
106106

107107
* The game is server-authoritative, with latency-masking animations.
108108
* 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.
110110

111111
### Testing multiplayer
112112

@@ -235,9 +235,12 @@ Boss Room includes the following tools and utilities:
235235
* ParrelSync - [Packages/manifest.json](https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/v2.2.0/Packages/manifest.json)
236236

237237
### Troubleshooting
238+
238239
#### Bugs
239240

240-
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).
241244

242245
### Licence
243246

@@ -257,7 +260,7 @@ The [Bitesize Samples](https://github.com/Unity-Technologies/com.unity.multiplay
257260

258261
### Contributing
259262

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.
261264

262265
Our projects use the `git-flow` branching strategy:
263266

docs/tutorials/get-started-with-ngo.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,6 @@ This section guides you through testing the RPCs you added in the earlier sectio
178178
1. Select **File** > **Build And Run**.
179179
2. Stop the player.
180180
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.
182181

183182
After the client and server spawn, a log displays in the **Console** of the client and server sending RPC messages to each other.
184183

@@ -220,6 +219,8 @@ The `NetworkObjectId` here is `2` because the host also has a NetworkObject with
220219

221220
:::
222221

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+
223224
## Extend functionality with scripts
224225

225226
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).

transport/workflow-client-server-udp.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ The client-server workflow in this guide shows the subtle differences between us
2828

2929
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.
3030

31-
Start by creating a C# script in the Unity Editor. Name the script ServerBehaviour.cs.
32-
33-
**Filename**: [`ServerBehaviour.cs`](samples/serverbehaviour.cs.md)
31+
Start by creating a C# script in the Unity Editor. Name the script `ServerBehaviour.cs`.
3432

3533
```csharp
3634
using System.Collections;

0 commit comments

Comments
 (0)