참고: UNet은 지원이 중단되었으며 향후 Unity에서 삭제될 예정입니다. 현재 새로운 시스템이 개발 중입니다. 자세한 내용과 다음 단계는 이 블로그 포스트를 참조하십시오. |
Network Manager 컴포넌트를 사용하여 네트워크 게임의 상태를 제어할 수 있습니다. 이 컴포넌트는 에디터에서 네트워크를 설정하고 게임 오브젝트를 스폰하는 데 사용하는 프리팹을 설정하고 다양한 게임 상태에 사용하는 씬을 설정하는 인터페이스를 제공합니다.
네트워크 관리자를 게임에 구현하는 방법에 대한 자세한 내용은 네트워크 관리자 사용에 대한 문서를 참조하십시오.
프로퍼티 | 기능 |
---|---|
Dont Destroy On Load | 이 프로퍼티는 씬이 변경될 때 Unity에서 Network Manager를 사용해 게임 오브젝트를 파괴하도록 할지 설정하는 데 사용합니다. 게임의 씬이 변경될 때 Unity에서 Network Manager 게임 오브젝트를 파괴하지 않도록 하려면 이 체크박스를 선택합니다. 게임 오브젝트가 있는 씬이 더 이상 액티브 씬이 아닐 때 Unity에서 이 게임 오브젝트를 파괴하도록 하려면 이 체크박스를 선택 해제합니다. 이 프로퍼티는 각 씬에서 여러 개별 Network Manager 게임 오브젝트를 관리하려는 경우에 유용합니다. |
Run In Background | 이 프로퍼티는 네트워크 게임이 실행 중인 창에 포커스가 없을 때 해당 네트워크 게임의 실행 여부를 제어합니다. 창에 포커스가 없을 때도 게임을 실행하려면 이 체크박스를 선택하고, 게임을 중지하려면 이 체크박스를 선택 해제하십시오. 이 체크박스는 기본적으로 선택되어 있습니다. 동일한 컴퓨터에서 여러 개의 프로그램 인스턴스를 실행할 경우(예: localhost를 사용하여 테스트하는 경우) 이 프로퍼티를 활성화해야 합니다. 단, 모바일 플랫폼에 배포할 때는 이 프로퍼티를 비활성화해야 합니다. 활성화하면, 네트워크 관리자가 시작할 때 Application.runInBackground가 true로 설정됩니다. 이 프로퍼티는 Unity 메뉴의 Edit > Project Settings로 이동하여 Player 카테고리를 선택한 다음 Resolution and Presentation 패널에서 설정할 수도 있습니다. |
Log Level | 이 프로퍼티는 Unity에서 콘솔 창에 출력하는 정보의 양을 제어하는 데 사용합니다. 레벨이 낮을수록 정보가 더 많아지고, 레벨이 높을수록 정보가 감소합니다. 각 레벨에는 상위 레벨의 메시지가 모두 포함됩니다. 예를 들어 "Warn"을 선택하면 콘솔에서 “Error” 및 “Fatal” 로그 메시지도 출력합니다. 드롭다운에는 레벨이 낮음부터 높음까지 나열됩니다. 이 프로퍼티의 기본 설정은 Info입니다. Log Level을 Set in Scripting으로 설정하여 Network Manager가 로그 레벨을 전혀 설정하지 못하게 할 수 있습니다. 즉 사용자 지정 스크립트에서 레벨을 대신 설정할 수 있습니다. |
Offline Scene | 이 필드에 씬을 할당할 경우 예를 들어 클라이언트 연결이 끊기거나 서버가 종료되는 등 네트워크 세션이 중지되면 Network Manager가 지정된 씬으로 자동 전환합니다. |
Online Scene | 이 필드에 씬을 할당하면, 클라이언트가 서버에 연결하거나 서버가 연결 수신을 시작하는 등 네트워크 세션이 시작될 때 네트워크 관리자가 지정된 씬으로 자동으로 전환합니다. |
Network Info | 아래에 표시된 것처럼 인스펙터의 이 섹션을 확장하여 네트워크 관련 설정에 액세스할 수 있습니다. |
Use Web Sockets | 호스트로 실행할 때 이 설정을 활성화하면 호스트가 일반 전송 계층 연결 대신 WebSocket 연결을 수신합니다. 따라서 WebGL 플랫폼용 게임을 빌드하는 경우 WebGL 클라이언트가 여기에 연결할 수 있습니다. 게임의 WebGL 인스턴스는 피어 호스트 또는 서버 전용 모드에서 호스트로 동작할 수 없습니다. 따라서 멀티플레이어 게임의 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 | 시뮬레이션할 패킷 손실량 백분율입니다. |