멀티플레이어 및 네트워킹(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)