MR Multiplayer Template 무작정 따라하기 (1) - 네트워크 설정

Unity Cloud Services

 

이 이미지는 Unity의 Project Settings에서 Services General Settings 섹션에 해당합니다. 이 화면은 Unity Cloud Services를 설정하고 프로젝트를 Unity Cloud와 연결하기 위한 정보를 제공합니다.

화면 구성 요소 설명

  1. Project Name:
    • 프로젝트 이름을 표시합니다. 현재 프로젝트 이름은 MR Multiplayer Template Test로 설정되어 있습니다.
  2. Unity Organization:
    • 프로젝트가 속한 Unity 조직(Organization) 이름을 나타냅니다. 현재 조직 이름은 j2su0218로 설정되어 있습니다.
    • Unity Organization은 팀 협업이나 여러 프로젝트를 관리할 때 사용됩니다.
  3. Unity Project ID:
    • Unity Cloud에서 프로젝트를 식별하는 고유한 ID입니다.
    • 프로젝트를 Cloud와 연결 해제하려면 "Unlink project" 버튼을 사용할 수 있습니다.
  4. Members:
    • 프로젝트 멤버를 관리하는 섹션입니다.
    • "Dashboard" 링크를 통해 Unity 웹 대시보드에서 멤버를 추가하거나 삭제할 수 있습니다.
  5. COPPA Compliance:
    • **"Will this app be targeted to children as defined by applicable laws?"**라는 질문은 앱이 COPPA(아동 온라인 개인정보 보호법) 준수를 요구하는지를 나타냅니다.
    • 현재 설정은 "No"로 되어 있어, 이 앱은 어린이를 주 타겟으로 하지 않습니다.
    • COPPA 규정에 대한 자세한 내용을 보려면 링크를 참고할 수 있습니다.

오른쪽 패널: Unity Cloud Setup 지침

Unity Cloud와 프로젝트를 연결하는 단계별 지침이 제공됩니다.

  1. Project Settings로 이동:
    • "Edit > Project Settings"를 통해 설정 페이지로 이동합니다.
  2. Organization 선택:
    • Unity Hub에 로그인한 상태에서 조직을 선택합니다.
    • 조직 목록은 Unity 계정과 연결된 항목에서 선택 가능합니다.
  3. Unity Project ID 연결:
    • 기존 Unity Project ID를 사용하여 프로젝트를 연결하거나 새로운 ID를 생성할 수 있습니다.
    • Developer Dashboard를 통해 세부 정보를 확인하거나, 새 ID를 생성하여 프로젝트를 연결할 수 있습니다.
  4. 상태 확인:
    • "Connect Project to Unity Cloud" 단계가 완료되었음을 녹색 체크 표시로 보여줍니다.

주요 기능:

  • 이 설정 화면은 Unity Cloud Services(예: Analytics, Multiplay, Collaborate)를 사용하려는 경우 필수적인 설정입니다.
  • 프로젝트 ID와 조직을 연결하여 Unity Cloud 서비스를 원활히 사용할 수 있도록 합니다.
  • COPPA 준수 여부를 설정해 앱의 대상 사용자를 명확히 정의합니다.

 

 

 

이 이미지는 Unity의 Vivox 음성 및 텍스트 통신 서비스 설정 화면입니다. Vivox는 Unity에서 관리하는 음성 채팅 솔루션으로, 멀티플레이어 게임에서 플레이어 간 실시간 음성 및 텍스트 커뮤니케이션을 제공하기 위한 도구입니다.

화면의 주요 구성 요소 설명:

  1. Vivox 설정 섹션:
    • Go to Dashboard: Vivox 서비스의 대시보드로 이동할 수 있는 링크입니다.
    • Documentation: Vivox 사용법과 설정에 대한 문서를 참고할 수 있는 링크입니다.
  2. Environment Configuration (환경 설정):
    • Server: Vivox 서비스가 연결될 서버 URL이 제공됩니다.
    • Domain: 연결된 도메인 이름입니다.
    • Token Issuer: 토큰 발급자의 이름으로, 특정 프로젝트에 대한 고유 식별자입니다.
    • Token Key: Vivox 서비스와 통신을 인증하기 위해 사용하는 키입니다.
    • Test Mode: 체크된 상태로 보이며, 테스트 모드가 활성화되어 있습니다. 이 모드는 내부 개발/테스트 빌드 중 디버그 토큰을 생성하기 위한 용도로 사용됩니다.
  3. 오른쪽 패널:
    • Unity Cloud Setup의 안내 섹션으로, Vivox 음성 채팅 서비스를 초기화하고 연결하는 과정에 대한 단계별 지침이 포함되어 있습니다.
    • "Connect Vivox Voice Chat Service" 단계를 성공적으로 완료했음을 나타내는 녹색 체크 표시가 보입니다.

Vivox를 사용하는 이유:

  • 실시간 음성 및 텍스트 통신을 간편하게 구현할 수 있습니다.
  • Unity와 완벽히 통합되어 빠르고 쉽게 설정 가능합니다.
  • 멀티플레이어 환경에서 음성 채팅을 통해 사용자 경험을 개선합니다.

주의사항:

  • Test Mode는 디버그 목적으로만 사용해야 하며, 실제 릴리스 빌드에서는 비활성화하는 것이 중요합니다. Test Mode가 활성화된 상태에서는 토큰 키가 빌드에 포함될 수 있어 보안 위험이 생길 수 있습니다.

Network Setup Overview

  • 이 섹션에서는 MR 멀티플레이어 테이블탑 애플리케이션을 시작하는 데 필요한 모든 프리팹(prefab)을 포함한다고 설명합니다.
  • 세 가지 주요 구성 요소:
    1. XRI Network Game Manager
    2. Network Manager (XR Multiplayer)
    3. MR Interaction Setup

XRI_Network_Game_Manager

 

네트워크 게임 관리에 사용되는 핵심 게임 매니저입니다. 이 오브젝트는 XR(확장 현실) 상호작용과 관련된 네트워크 작업을 관리합니다.

 

 

Inspector 창 (XRI_Network_Game_Manager) 설명

더보기
  • Transform:
    • XRI_Network_Game_Manager 오브젝트의 위치, 회전, 크기 정보입니다.
    • 현재 위치(Position)는 (0, 0, 0), 크기(Scale)는 (1, 1, 1)로 설정되어 있습니다.
  • Network Object:
    • 네트워크 동작과 관련된 설정들이 포함되어 있습니다.
    • 체크박스를 통해 다양한 동작을 설정:
      • Always Replicate as Root: 항상 루트로 복제.
      • Synchronize Transform: 위치 및 변환 정보를 네트워크를 통해 동기화.
      • Active Scene Sync: 현재 활성 씬의 동기화 활성화.
      • Dont Destroy with Owner: 오브젝트 소유자가 변경될 때 파괴되지 않음.
      • Allow Owner to Parent: 소유자가 부모 설정을 허용.
    • GlobalObjectIdHash: 오브젝트의 고유 식별자.
    • NetworkManager: 연결된 네트워크 매니저를 참조합니다(현재 null 상태).
  • XRI Network Game Manager (Script):
    • 네트워크 게임 매니저 스크립트가 연결되어 있습니다.
    • 주요 속성:
      • Default Player Name: 기본 플레이어 이름은 "Unity Creator"로 설정.
      • Auto Connect on Lobby: 로비에서 자동 연결 기능 활성화.
      • Positional Voice Chat: 위치 기반 음성 채팅 기능.
  • Lobby Manager (Script):
    • 로비 매니저 스크립트로 Unity Lobby 서비스와 Unity Relay 서비스와의 통신을 처리합니다.
    • Allow Different Scene: 서로 다른 씬에서도 로비를 지원.
    • Hide Editor from Lobby: 에디터 환경에서 로비 숨기기.
  • Authentication Manager (Script):
    • 인증 매니저 스크립트가 Unity 서비스와의 인증 절차를 처리.
    • Anonymous Sign In: 익명 로그인을 사용. 이는 멀티플레이어 설정에서 개별 플레이어에 대해 고유한 식별자를 요구합니다.
  • Voice Chat Manager (Script):
    • 음성 채팅 매니저가 연결되어 있습니다.

XRI Network Game Manager:

이 프리팹은 XR Interaction Toolkit(XRI), Netcode for GameObjects(NGO), Unity Gaming Services(UGS)를 사용하는 네트워크 연결을 관리하는 데 필수적입니다.

 

Lobby Manager: Unity Lobby 서비스 및 Unity Relay 서비스와의 통신을 처리.

 

Authentication Manager: Unity 서비스와의 인증 프로세스를 처리.

익명 로그인(Anonymous Sign In)이 기본적으로 활성화되어 있으며, 필요에 따라 다른 제공자로 변경 가능.

익명 로그인을 사용하는 경우, 각 연결된 플레이어는 고유한 ID가 필요합니다.

 

코드 샘플:

XRI_NetworkGameManager.Instance.QuickJoinLobby():

사용 가능한 방에 연결하거나 새로운 방을 생성하는 데 사용되는 코드입니다.

 

  • XRI Network Game ManagerXR 환경에서 멀티플레이어 애플리케이션을 개발할 때 핵심적인 역할을 합니다.
  • 로비, 인증, 음성 채팅 같은 주요 네트워크 기능을 포함하고 있어 빠르게 설정 및 사용이 가능합니다.
  • QuickJoinLobby() 메서드는 빠른 방 연결을 가능하게 하여 사용자 경험을 단순화합니다.

 

Network Manager XR Multiplayer

XR 멀티플레이어 네트워크 관리를 담당하는 컴포넌트입니다. 이 매니저는 Netcode for GameObjects를 활용하여 멀티플레이어 네트워킹을 설정합니다.

주요 기능 및 사용 목적:

  • XR Multiplayer 환경에서 네트워크 관리를 간단하고 효율적으로 수행할 수 있습니다.
  • Unity Transport 프로토콜을 사용하여 안정적이고 암호화된 네트워크 통신을 지원합니다.
  • 플레이어 프리팹 및 네트워크 프리팹 리스트를 활용하여 동적으로 오브젝트를 관리할 수 있습니다.

Network Manager XR Multiplayer (Script):

XR 멀티플레이어 네트워크 관리를 담당하는 주요 스크립트입니다.

 

Log Level:

네트워크 로그 수준을 설정합니다. 현재는 "Developer(개발자)"로 설정되어 있어 디버깅과 개발용으로 적합한 로그를 출력합니다.

 

Run In Background:

백그라운드에서 네트워크 작업이 계속 실행되도록 허용합니다.

 

Network Config:

네트워크와 관련된 구성 요소를 관리합니다.

  1. Protocol Version:
    • 네트워크 프로토콜의 버전을 설정합니다. 현재 기본값인 0으로 설정되어 있습니다.
    • 프로토콜 버전은 클라이언트와 서버 간의 호환성을 보장하는 데 사용됩니다.
  2. Network Transport:
    • 네트워크 데이터 전송을 처리하는 시스템입니다.
    • 현재 Network Manager XR Multiplayer가 선택되어 있습니다.
  3. Player Prefab:
    • 네트워크에 연결된 각 클라이언트(플레이어)를 위한 프리팹입니다.
    • 현재 설정된 프리팹은 XRI_Network_Player_Avatar입니다.
  4. Prefabs:
    • 런타임 중 네트워크를 통해 생성될 수 있는 프리팹의 리스트를 포함합니다.
  5. Tick Rate:
    • 서버와 클라이언트 간의 업데이트 빈도를 설정합니다. 현재 값은 30으로 설정되어 있어 초당 30회 업데이트됩니다.
  6. Client Connection Buffer:
    • 클라이언트 연결 대기열의 크기를 설정합니다. 현재 값은 10으로 설정되어 있습니다.
  7. Connection Approval:
    • 클라이언트 연결 승인을 활성화할 수 있습니다. 현재 비활성화되어 있습니다.

Connection Data:

  1. Enable Time Resync:
    • 클라이언트와 서버 간의 시간 동기화를 활성화합니다. 현재 비활성화 상태입니다.
  2. Time Resync Interval:
    • 시간 재동기화 간격(초)을 설정합니다. 현재 값은 30초로 설정되어 있습니다.
  3. Ensure Network Variables:
    • 네트워크 변수의 무결성을 보장합니다. 현재 비활성화 상태입니다.
  4. Enable Scene Management:
    • 네트워크를 통해 씬 관리 기능을 활성화합니다. 현재 활성화되어 있습니다.
  5. Force Same Prefab:
    • 동일한 프리팹만 사용하도록 강제합니다. 활성화되어 있습니다.
  6. Recycle Network ID:
    • 네트워크 ID를 재활용하도록 설정합니다. 활성화되어 있으며, 기본 재활용 시간은 120초입니다.
  7. Rpc Hash Size:
    • RPC(Remote Procedure Call) 해시 크기를 설정합니다. 현재 Var Int Four Bytes로 설정되어 있습니다.
  8. Load Scene Time Out:
    • 씬 로드 제한 시간(초)을 설정합니다. 현재 값은 120초입니다.
  9. Spawn Timeout:
    • 오브젝트 생성 제한 시간(초)을 설정합니다. 현재 값은 10초입니다.

기타 옵션:

  1. Enable Network Logs:
    • 네트워크 로그 출력을 활성화합니다. 현재 활성화 상태입니다.
  2. Network Topology:
    • 네트워크 토폴로지를 설정합니다. 현재 Client Server(클라이언트-서버) 모델로 설정되어 있습니다.
  3. Auto Spawn Player:
    • 클라이언트 연결 시 자동으로 플레이어를 생성합니다. 현재 활성화 상태입니다.
  4. Network Message Pooling:
    • 네트워크 메시지 풀링을 활성화합니다.
  5. Network Profiling Mode:
    • 네트워크 프로파일링 모드를 활성화합니다.
  1.  

Game not running:

네트워크가 현재 실행 중이지 않음을 나타냅니다.

 

Connect 버튼:

실행 중에 빠르게 네트워크 연결을 테스트할 수 있습니다.

 

Unity Transport

 

네트워크 데이터 전송을 처리하는 프로토콜 설정입니다.

 

Protocol Type:

Unity Transport를 사용하여 데이터 전송이 이루어집니다.

 

Use Web Sockets:

웹 소켓 사용 여부를 설정합니다.

 

Use Encryption:

네트워크 암호화를 사용할지 여부를 설정합니다.

 

Max Packet Queue Size:

패킷 큐의 최대 크기를 나타냅니다(기본값: 512).

 

Max Payload Size:

페이로드(데이터 패킷)의 최대 크기를 설정합니다(기본값: 6144).

 

Heartbeat Timeout MS:

하트비트(연결 상태 유지 신호) 타임아웃 시간을 설정합니다.

 

Connect Timeout MS:

연결 시도 제한 시간(밀리초)을 설정합니다.

 

Max Connect Attempt:

최대 연결 시도 횟수를 설정합니다.

 

Disconnect Timeout MS:

연결 끊김 타임아웃 시간을 설정합니다.

 

Debug Simulator:

디버그용 네트워크 시뮬레이터 설정으로, IP 주소와 포트를 지정합니다.

 

Allow Remote Connection:

원격 연결 허용 여부를 설정합니다.


MRInteractionSetup

주요 기능 및 사용 목적:

  • MR Interaction Setup XR 및 MR 환경에서 플레이어와의 상호작용을 설정하고 관리하기 위한 기본 프리팹입니다.
  • 사용자 입력, XR 리그 설정, 이벤트 시스템과 같은 핵심 기능을 통합하여 혼합 현실 애플리케이션 개발을 간소화합니다.
  • Player Notification UI를 활용해 사용자에게 즉각적인 피드백을 제공합니다.

 

MRInteractionSetup:

혼합 현실에서 필요한 XR 상호작용 구성 요소를 포함하는 프리팹입니다.

 

Input Action Manager:

사용자 입력과 XR 상호작용을 처리하는 매니저입니다.

다양한 입력 이벤트를 관리하고, 사용자 입력을 시스템과 연결합니다.

 

XR Interaction Manager:

XR 상호작용 시스템의 핵심 관리자를 담당합니다.

상호작용 이벤트를 조정하고 XR 장치(예: 컨트롤러)와의 상호작용을 처리합니다.

 

EventSystem:

Unity UI 이벤트 시스템으로, XR 환경에서도 입력 이벤트를 처리합니다.

 

XR Origin (XR Rig):

XR 환경에서 플레이어의 위치와 방향을 설정하는 기본 리그입니다.

AR 세션과 함께 동작하며, 플레이어의 위치 추적과 관련된 데이터를 제공합니다.

 

 

XR Origin -> Offline Player Avatar:

  • 플레이어 프리팹의 수정된 버전을 포함하며, 오프라인 환경에서도 사용할 수 있습니다.

 

XR Origin -> Local Player Canvas -> Player Notification UI:

  • 간단한 알림 팝업을 생성할 수 있는 프리팹입니다.
  • 예제 코드:
     
    이 코드는 어디에서나 호출 가능하며, 간단한 알림 메시지를 표시합니다.
PlayerHudNotification.Instance.ShowText("Message");

 

AR Session:

증강 현실(AR) 기능을 처리하며, XR Origin과 연동되어 위치 데이터를 제공합니다.

 


Virtual Table, UI, Environment:

 

씬의 구성 요소로, 가상 테이블, 사용자 인터페이스, 환경 요소를 나타냅니다. 각각의 요소는 MR 환경을 구축하는 데 사용됩니다.