Version: 2017.2
멀티플레이어 및 네트워킹(Multiplayer and Networking)
고수준 API(High Level API)

네트워킹 개요(Networking Overview)

관련 튜토리얼: 멀티플레이어 네트워킹

네트워킹 기능 사용자는 아래와 같이 두 타입으로 나눌 수 있습니다.

  • Unity를 사용하여 멀티플레이어 게임을 만드는 사용자의 경우 NetworkManager 또는 고수준 API를 통해 시작하면 됩니다.
  • 네트워크 인프라 또는 고급 멀티플레이어 게임을 만들고자 하는 사용자의 경우 NetworkTransport API를 통해 시작하면 됩니다.

고수준 스크립팅 API

Unity 네트워킹은 “고수준” 스크립팅 API를 제공합니다. 이는 HLAPI라고 부르며, 사용하게 되면 “로우 레벨” 구현 세부 사항에 대해 신경쓰지 않고도 멀티 유저 게임에 일반적으로 필요한 대부분의 요구 사항을 만족시킬 수 있는 커맨드에 접근할 수 있습니다. 아래는 HLAPI를 활용할 수 있는 방법입니다.

  • “네트워크 관리자”를 사용하여 게임의 네트워크 상태를 제어.
  • 호스트가 플레이어 클라이언트이기도 한 “클라이언트가 호스트하는” 게임 운영.
  • 범용 시리얼라이저를 사용하여 데이터 직렬화.
  • 네트워크 메시지 송수신.
  • 네트워크 커맨드를 클라이언트에서 서버로 송신.
  • 서버에서 클라이언트로 원격 프로시저 호출. (RPC)
  • 서버에서 클라이언트로 네트워크 이벤트 전송.

엔진과 에디터 통합

Unity 네트워킹은 엔진과 에디터에 통합되어 있으므로, 멀티플레이어 게임을 빌드할 수 있도록 컴포넌트와 시각적 툴을 사용하여 작업할 수 있습니다. 다음은 몇 가지 기능입니다.

  • 네트워크 오브젝트용 NetworkIdentity 컴포넌트.
  • 네트워크 스크립트용 NetworkBehaviour.
  • 설정 가능한 오브젝트 변환의 자동 동기화.
  • 스크립트 변수의 자동 동기화.
  • Unity 씬에서 네트워크 오브젝트 배치 지원.
  • Network 컴포넌트

인터넷 서비스

Unity는 게임 제작과 릴리스 과정 전반을 지원할 수 있도록 인터넷 서비스를 제공합니다. 아래는 지원하는 기능의 예입니다.

  • 매치메이킹 서비스
  • 매치를 생성하고 홍보.
  • 참여 가능한 매치 리스트를 제공하고 매치에 참여.
  • 릴레이 서버
  • 전용 서버 없이 인터넷을 통한 게임플레이.
  • 매치 참여자에게 메시지 전송.

NetworkTransport 실시간 전송 레이어

Unity는 다음을 지원하는 실시간 전송 레이어를 제공합니다.

  • 최적화된 UDP 기반 프로토콜.
  • HOL 블로킹 문제를 회피할 수 있는 멀티 채널 설계
  • 채널당 다양한 서비스 품질 (QoS) 지원.
  • P2P 또는 클라이언트-서버 아키텍처를 지원하는 유연한 네트워크 토폴로지.

예제 프로젝트

Unity가 제공한 멀티플레이어 예제 프로젝트를 분석해서 이들 기능이 어떻게 사용되고 있는지 알 수 있습니다. 아래의 예제 프로젝트는 Unity 포럼 포스트에 있습니다.

  • 멀티플레이어 2D 탱크 예제 게임
  • 매치메이킹이 있는 멀티플레이어 침입자 게임
  • 매치메이킹이 있는 멀티플레이 2D 우주 슈팅 게임
  • 최소한의 멀티플레이어 프로젝트
멀티플레이어 및 네트워킹(Multiplayer and Networking)
고수준 API(High Level API)