멀티플레이어와 네트워킹
고레벨 API (The High Level API)

네트워킹 개요

네트워킹은 2명 이상의 사용자를 연결하기 위한 통신 기능입니다.

  • Unity에서 멀티 플레이어 게임을 만들 수 있습니다. NetworkManager 또는 High Level API를 사용하여 시작해 봅시다.
  • 네트워크 인프라 또는 고급 멀티 플레이어 게임을 만들 수 있습니다. NetworkTransport API를 사용하여 시작해 봅시다.

고레벨 스크립팅 API

Unity 네트워킹은 “고레벨”의 API 스크립트(Unity에서는 HLAPI라고 합니다)를 가지고 있습니다. 이 API 스크립트를 사용하여 “저레벨”의 구현에 대해 알 필요 없이, 멀티 플레이어 게임에 필요한 대부분의 공통된 요구사항을 커버하는 명령에 접근할 수 있습니다. 다음은 HLAPI의 개요입니다.

  • “네트워크 매니저(Network Manager)” 기능을 사용하여 게임의 네트워크 상태를 제어합니다.
  • “클라이언트 호스트(client hosted)” 게임을 수행합니다. 이 호스트 역시 플레이어 클라이언트입니다.
  • 범용 시리얼라이저(general-purpose serializer)를 사용하여 데이터를 직렬화합니다.
  • 네트워크 메시지를 송·수신합니다.
  • 클라이언트에서 서버로 네트워크 명령을 보냅니다.
  • 서버에서 클라이언트로 원격 프로시저 호출(RPC)을 실시합니다.
  • 서버에서 클라이언트로 네트워크 이벤트를 보냅니다.

엔진과 에디터 통합

Unity의 네트워킹은 엔진과 에디터에 통합되었습니다. 그래서 멀티플레이어 게임을 만들기 위해서 컴포넌트를 이용하고 비주얼적으로 도움을 받으며 작업할 수 있게 되었습니다. Unity는 다음과 같은 기능을 제공합니다:

  • 네트워크 오브젝트를 위한 NetworkIdentity 컴포넌트.
  • 네트워크 스크립트를 위한 NetworkBehaviour.
  • 오브젝트 트랜스폼의 자동 동기화(automatic synchronization) 설정이 가능.
  • 스크립트 변수의 자동 동기화.
  • Unity의 씬에서 네트워크의 오브젝트를 배치하기 위한 지원.
  • 네트워크 컴포넌트

인터넷 서비스

Unity는 프로덕션과 릴리스에 걸쳐 게임을 지원하기 위해 Internet Services를 제공합니다. 여기에는 다음과 같은 기능이 포함되어 있습니다:

  • 매치메이킹(Matchmaking) 서비스
  • 게임 매치를 만들고, 매치를 알립니다.
  • 참여 가능한 매치들을 나열하며, 매치에 조인합니다.
  • 릴레이 서버(Relay server)
  • 전용 서버없이 인터넷을 통해 게임-플레이를 합니다.
  • 매치에 참가하는 플레이어들에게 메시지를 라우팅합니다.

NetworkTransport 실시간 전송 레이어

Unity는 실시간 전송 레이어를 포함하여 다음과 같은 기능을 제공합니다:

  • 최적화된 UDP 기반 프로토콜. HOL(head-of-line) blocking 이슈를 피하기 위한 멀티-채널 설계
  • 채널 당 서비스 품질(QoS)의 다양한 레벨에 해당하는 지원 제공.
  • peer-to-peer와 client-server 아키텍처를 지원하는 유연한 네트워크 토폴로지

샘플 프로젝트

또한 이 기능들이 어떻게 함께 사용되고 있는지를 알아보기 위해서, 멀티플레이어 샘플 프로젝트를 살펴볼 수 있습니다:

  • 멀티플레이어 2D 탱크 게임
  • 매치메이킹을 활용한 멀티플레이어 인베이더 게임
  • 매치메이킹을 활용한 멀티플레이어 2D 스페이스 슈터.
  • 미니멀 멀티플레이어 프로젝트

Note that the sample projects can be found in the Forum. See:

  • http://forum.unity3d.com/threads/unet-sample-projects.331978/
멀티플레이어와 네트워킹
고레벨 API (The High Level API)