Version: 2022.1
언어: 한국어
멀티플레이어 및 네트워킹
멀티플레이어 프로젝트 설정

네트워킹 개요

중요: UNet은 지원이 중단된 솔루션이며, 새로운 멀티플레이어 및 네트워킹 솔루션(게임 오브젝트용 넷코드)이 개발 중입니다. 자세한 내용과 다음 단계는 게임 오브젝트용 Unity 넷코드 웹사이트에 있는 정보를 참조하십시오.

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

  • 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는 간단한 빌트인 인증만 제공하기 때문에 게임이나 앱에서 악의적인 행동에 대해 강력한 보안이 필요한 경우 타사 인증과 암호화 솔루션을 사용하거나 이 레퍼런스 구현과 NetworkTransport API와 같은 플러그인을 사용하여 직접 솔루션을 구현해야 합니다.

예제 프로젝트

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

  • 멀티플레이어 2D 탱크 예제 게임
  • 매치메이킹이 있는 멀티플레이어 침입자 게임
  • 매치메이킹이 있는 멀티플레이 2D 우주 슈팅 게임
  • 최소한의 멀티플레이어 프로젝트
멀티플레이어 및 네트워킹
멀티플레이어 프로젝트 설정