중요: UNet은 지원이 중단된 솔루션이며, 새로운 멀티플레이어 및 네트워킹 솔루션(게임 오브젝트용 넷코드)이 개발 중입니다. 자세한 내용과 다음 단계는 게임 오브젝트용 Unity 넷코드 웹사이트에 있는 정보를 참조하십시오. |
NetworkLobbyManager는 게임의 메인 플레이 씬에 진입하기 전에 거치는 멀티플레이어 로비를 제공하는 특별한 형태의 NetworkManager 타입입니다. 이를 통해 다음과 같은 네트워크를 설정할 수 있습니다.
NetworkLobbyManager에는 두 가지 타입의 플레이어 오브젝트가 있습니다.
LobbyPlayer 오브젝트
GamePlayer 오브젝트
프로퍼티: | 기능: |
---|---|
showLobbyGUI | 로비의 개발자 OnGUI 컨트롤을 표시합니다. |
maxPlayers | 로비에 있을 수 있는 최대 플레이어 수입니다. |
maxPlayersPerConnection | 각 클라이언트 연결에 추가할 수 있는 최대 플레이어 수입니다. |
lobbyPlayerPrefab | 플레이어가 로비에 들어올 때 플레이어를 위해 만들 프리팹입니다. |
gamePlayerPrefab | 게임이 시작되면 플레이어를 위해 만들 프리팹입니다. |
lobbyScene | 로비에 사용할 씬입니다. |
playScene | 메인 게임 플레이에 사용할 씬입니다. |
Network Lobby Manager는 게임의 메인 플레이 씬에 진입하기 전에 사용이 편리한 멀티플레이어 로비를 제공하는 특수 NetworkManager 타입입니다.
Network Lobby Manager에는 멀티플레이어 게임에 일반적으로 사용되는 여러 기능이 내장되어 있습니다. 이 컴포넌트는 예를 들어 최대 플레이어 한도를 설정하고 모든 플레이어가 준비되면 게임을 자동으로 시작하는 기능과 플레이어가 진행 중인 게임에 참여하지 않도록 하는 옵션 등을 지원합니다. Network Lobby Manager는 여러 플레이어가 같은 클라이언트를 사용하여 함께 플레이하는 “카우치 멀티플레이어”도 지원합니다.
|프로퍼티: |기능: |
|:—|:—|
|Show Lobby GUI|이 설정을 활성화하면 로비에 대한 개발자 GUI 컨트롤이 표시됩니다. 개발자들이 작업을 수월하게 만들기 위한 목적으로 만들어졌습니다. 완성된 게임에 사용할 플레이어용 UI를 따로 만들어야 합니다.|
|Max Players|로비에 있을 수 있는 최대 플레이어 수입니다.|
|Max Players Per Connection|각 클라이언트 연결에 추가할 수 있는 최대 플레이어 수입니다.|
|Min Players|로비에 있어야 하는 최소 플레이어 수입니다.|
|Lobby Player Prefab|플레이어가 로비에 들어올 때 플레이어를 위해 만들 프리팹입니다.|
|Game Player Prefab|게임이 시작되면 플레이어를 위해 만들 프리팹입니다.|
|Lobby Scene|로비에 사용할 씬입니다.|
|씬 플레이(Play Scene)|메인 게임 플레이에 사용할 씬입니다.|
|||
|:–|:–|
|Network Info|아래에 표시된 것처럼 인스펙터의 이 섹션을 확장하여 네트워크 관련 설정에 액세스할 수 있습니다.|
|Use Web Sockets|호스트로 실행할 때 이 설정을 활성화하면 호스트가 일반 전송 계층 연결 대신 WebSocket 연결을 수신하도록 하므로, 웹 플랫폼용 게임을 빌드하는 경우 WebGL 클라이언트가 연결할 수 있습니다. 게임의 이러한 웹 인스턴스는 호스트 역할을 할 수 없습니다(피어 호스팅 또는 서버 전용 모드에서). 따라서 멀티플레이어 게임의 웹 인스턴스가 서로를 찾아 함께 플레이하려면 공개적으로 연결 가능한 IP 주소로 LAN 모드에서 실행되는 게임의 서버 전용 인스턴스를 호스팅해야 하며, 이 옵션이 활성화되어 있어야 합니다. 이 체크박스는 기본적으로 선택 해제되어 있습니다.|
|Network Address|현재 사용 중인 네트워크 주소입니다. 클라이언트의 경우 연결되는 서버 주소이고, 서버의 경우 로컬 주소입니다. 기본 설정은 ’localhost’입니다.|
|Network Port|현재 사용 중인 네트워크 포트입니다. 클라이언트의 경우 연결되는 서버 포트이고, 서버의 경우 수신 포트입니다. 기본 설정은 7777입니다.|
|Server Bind To IP|특정 IP 주소에 대한 바인딩 여부를 서버에 알립니다. 이 체크박스가 선택 해제되어 있으면 바인딩할 특정 IP 주소가 없는 것입니다(IP_ANY). 이 체크박스는 기본적으로 선택 해제되어 있습니다. 서버에 여러 개의 네트워크 주소(예: 내부 LAN, 외부 인터넷, VPN)가 있고 특정 IP 주소를 게임에 사용하고 싶은 경우 이 옵션을 사용하십시오.|
|Server Bind Address|이 필드는 Server Bind To IP 체크박스가 선택되어 있을 때만 표시됩니다. 이 옵션을 사용하여 서버가 바인딩될 특정 IP 주소를 입력하십시오.|
|Script CRC Check|이 옵션을 활성화하면 Unity는 클라이언트와 서버가 일치하는 스크립트를 사용하는지 검사합니다. 구버전 클라이언트가 최신(업데이트) 버전 서버에 연결되지 않을 때 유용하게 사용할 수 있습니다. 이 체크박스는 기본적으로 선택되어 있습니다. NetworkBehaviour 스크립트가 일치하는지 확인하기 위해 서버와 클라이언트 간에 (CRC check)[https://en.wikipedia.org/wiki/Cyclic_redundancy_check]를 수행합니다. 클라이언트와 서버에 의도적으로 다른 Unity 프로젝트를 사용하는 등 일부 경우에는 적합하지 않을 수 있습니다. 하지만 대부분의 경우에는 이 옵션을 활성화된 상태로 두십시오.|
|Max Delay|버퍼링된 메시지의 최대 지연 시간(초)입니다. 기본 값 0.01초는 패킷이 최대 10밀리초만큼 지연된다는 의미입니다. 이 값을 0으로 설정하면 HLAPI 연결 버퍼링이 비활성화됩니다. 기본 설정은 0.01입니다.|
|Max Buffered Packets|NetworkConnection이 각 채널에 대해 버퍼링할 수 있는 최대 패킷 수입니다. 이는 ChannelOption.MaxPendingBuffers 채널 옵션에 해당합니다. 기본 설정은 16입니다.|
|Packet Fragmentation|이 옵션은 NetworkConnection
인스턴스가 maxPacketSize
보다 큰 패킷(최대 64K)을 단편화하도록 허용합니다. 단, 대용량 패킷 전송 시 지연이 발생할 수 있습니다. 이 체크박스는 기본적으로 선택되어 있습니다. |
|MatchMaker Host URI|매치메이커 서버의 호스트 주소입니다. 기본적으로 이 주소는 Unity 멀티플레이어 서비스(mm.unet.unity3d.com)에 연결되며, 일반적으로 변경할 필요가 없습니다. Unity는 자동으로 게임 플레이어들을 전 세계 지역 서버로 그룹화합니다. 이러한 그룹화를 통해 동일한 지역의 플레이어 간에 멀티플레이어 리스폰스 시간을 줄일 수 있습니다. 즉, 유럽, 미국, 아시아의 플레이어들이 동일한 글로벌 지역에서 다른 플레이어들과 플레이할 수 있습니다. 이 값을 오버라이드하여 게임이 연결될 지역 서버를 명시적으로 제어할 수 있습니다. 플레이어들에게 글로벌 지역 외부의 서버에 참가할 수 있도록 옵션을 제공하려는 경우 스크립팅을 통해 이 작업을 수행하십시오. 예를 들어, “플레이어 A”(미국)가 “플레이어 B”(유럽)가 매치메이커를 통해 생성한 매치에 연결하려는 경우 이들은 게임 내에서 원하는 글로벌 지역을 설정할 수 있어야 합니다. 따라서 이 플레이어들이 지역을 선택할 수 있도록 해주는 UI 기능을 작성해야 합니다. 자세한 내용과 지역 서버 URI에 대한 정보는 NetworkMatch.baseUri에 대한 API 레퍼런스 문서를 참조하십시오.|
|MatchMaker Port|매치메이커 서버의 호스트 포트입니다. 기본적으로 포트 443에 연결되며, 일반적으로 변경할 필요가 없습니다.|
|Match Name|현재 매치의 이름을 정의합니다. 기본 설정은 “default”입니다.|
|Maximum Match Size|현재 매치의 최대 플레이어 수를 정의합니다. 기본 설정은 4입니다.|
|SpawnInfo|아래에 표시된 것처럼 인스펙터의 이 섹션을 확장하여 스폰 관련 설정에 액세스할 수 있습니다.|
|Player Prefab|Unity가 서버에 플레이어 게임 오브젝트를 생성할 때 사용할 기본 프리팹을 정의합니다. Unity는 서버에서 AddPlayer에 대해 기본 핸들러로 플레이어 게임 오브젝트를 생성합니다. 이 동작을 오버라이드하려면 (OnServerAddPlayer)[https://docs.unity3d.com/ScriptReference/Networking.NetworkManager.OnServerAddPlayer.html]를 구현하십시오.|
|Auto Create Player|연결할 때와 씬이 변경될 때 Unity가 플레이어 게임 오브젝트를 자동으로 생성하도록 하려면 이 체크박스를 선택하십시오. 이 체크박스는 기본적으로 선택되어 있습니다. MigrationManager를 사용하고 Auto Create Player를 활성화하지 않은 경우에는 클라이언트가 다시 연결할 때 ClientScene.SendReconnectMessage를 호출해야 합니다.|
|Player Spawn Method|Unity가 새 플레이어 게임 오브젝트의 스폰 위치를 결정하는 방식을 정의합니다. 기본 설정은 Random입니다.|
| Random|선택한 startPositions에 플레이어들을 무작위로 스폰하려면 Random을 선택하십시오.|
| Round Robin|설정한 리스트의 startPositions를 순환하도록 만들려면 Round Robin을 선택하십시오.|
|Registered Spawnable Prefabs|이 리스트를 사용하여 네트워크 관리자가 인식하여 스폰할 수 있는 프리팹을 추가하십시오. 스크립팅을 통해 프리팹을 추가하거나 제거할 수도 있습니다.|
|Advanced Configuration|네트워크 관리자 인스펙터 창에 고급 설정 옵션을 노출하려면 이 체크박스를 선택하십시오.|
| Max Connections|지원하는 최대 동시 네트워크 연결 수를 정의합니다. 기본 설정은 4입니다.|
| Qos Channels|현재 네트워크 관리자에 포함된 다양한 커뮤니케이션 채널과 각 채널에 대한 서비스 QoS(Quality Of Service) 설정이 들어 있는 리스트입니다. 이 리스트를 사용하여 채널을 추가하거나 제거하고 해당 QoS 설정을 조정하십시오. 스크립팅을 통해 채널을 설정할 수도 있습니다. 각 QoS 옵션에 대한 설명은 QosType을 참조하십시오.|
| Timeouts||
| Min Update Timeout|네트워크 스레드가 네트워크 메시지 전송 간에 대기하는 최소 시간(단위: 밀리초)을 설정합니다. 네트워크 스레드는 멀티플레이어 네트워크 메시지를 즉시 전송하지 않습니다. 대신, 고정된 속도로 각 연결을 주기적으로 검사하여 전송할 대상이 있는지 확인합니다. 기본 설정은 10ms입니다. 자세한 내용은 MinUpdateTimeout에 대한 API 레퍼런스 문서를 참조하십시오.|
| Connect Timeout|Unity가 재연결을 시도하기 전에 대기해야 하는 시간(단위: 밀리초)을 정의합니다. 기본 설정은 2000ms입니다. 자세한 내용은 ConnectTimeout에 대한 API 레퍼런스 문서를 참조하십시오.|
| Disconnect Timeout|Unity 연결을 해제하기 전에 대기해야 하는 시간(단위: 밀리초)입니다. 기본 설정은 2000ms입니다. 자세한 내용은 DisconnectTimeout에 대한 API 레퍼런스 문서를 참조하십시오.|
| Ping Timeout|ping(또는 ‘keep-alive’ 패킷이라고도 함) 전송 간에 대기하는 시간(단위: 밀리초)입니다. ping 타임아웃 시간은 Disconnect Timeout 시간의 약 1/3에서 1/4 사이여야 합니다. 그러면 Unity는 서버가 클라이언트로부터 최소 3번의 ping을 받지 못할 때까지 클라이언트의 연결이 해제되었다고 간주하지 않습니다. 기본 설정은 500ms입니다. 자세한 내용은 ConnectionConfig.PingTimeout에 대한 API 레퍼런스 문서를 참조하십시오.|
| Global Config|리액터와 관련된 설정입니다. 리액터는 기본 운영체제로부터 네트워크 패킷을 받는 멀티플레이어 시스템 요소로, 네트워크 패킷을 멀티플레이어 시스템에 전달하여 처리합니다.|
| Thread Awake Timeout|리액터에서 사용하는 타임아웃 시간(단위: 밀리초)입니다. 리액터가 이 값을 사용하는 방법은 선택하는 리액터 모델에 따라 다릅니다(아래 참조). 기본 설정은 1ms입니다.|
| Reactor Model|사용할 리액터 타입을 선택합니다. 리액터 모델은 Unity가 수신 패킷을 읽는 방법을 정의합니다. 대부분의 게임과 애플리케이션에서는 기본 선택 리액터가 적합합니다. 네트워크 메시지 처리에 약간의 지연을 허용하는 대신 CPU 사용량을 줄이고 배터리 시간을 늘리고 싶다면 고정 속도 리액터를 사용하십시오.|
| Select Reactor|이 모델은 select()
API를 사용합니다. 따라서 패킷이 이용 가능해지면 네트워크 스레드가 “깨어납니다”(활성화됩니다). 이 메서드를 사용하면 게임이 데이터를 가능한 빨리 가져옵니다. 이것이 기본 리액터 모델 설정입니다.|
| Fix Rate Reactor|이 모델을 사용하면 처리를 기다리는 수신 패킷이 있는지 확인하기 전에 네트워크 스레드를 일정 시간(Thread Awake Timeout에서 정의한 값) 동안 수동으로 휴면 모드로 전환할 수 있습니다.|
| Reactor Max Recv Messages|수신 대기열에 저장되는 최대 메시지 수를 설정합니다. 기본 설정은 1024개 메시지입니다.|
| Reactor Max Sent Messages|전송 대기열에 저장되는 최대 메시지 수를 설정합니다. 기본 설정은 1024개 메시지입니다.|
|Use Network Simulator|이 체크박스를 선택하면 네트워크 시뮬레이터의 사용이 활성화됩니다. 네트워크 시뮬레이터는 다음 설정에 따라 시뮬레이션된 지연 및 패킷 손실 정보를 가져옵니다.|
| Simulated Average Latency|시뮬레이션할 지연 시간(단위: 밀리초)입니다.|
| Simulated Packet Loss|시뮬레이션할 패킷 손실량 백분율입니다.|
NetworkLobbyManager