This document is about: FUSION 2
SWITCH TO

네트워크 프로젝트 설정

개요

Network Project Config는 Photon Fusion 프로젝트에 영향을 미치는 다양한 정보와 매개변수를 포함하는 에셋으로 다음을 포함합니다:

  • 버전;
  • 피어 모드;
  • 기본 플레이어 수;
  • 네트워크 조건 테스트;
  • 암호화;
  • 프리팹 검사.

이 에셋은 Assets/Photon/Fusion/Resources/NetworkProject.Config.fusion에 위치합니다.
유니티 편집기 상단 메뉴에서 Tools > Fusion > NetworkProjectConfig를 선택하여 액세스할 수도 있습니다.
이 에셋에 변경 사항이 있을 경우, Apply 버튼을 클릭하거나 저장 메시지가 표시되면 확인하여 변경 사항을 적용하세요.

Network Project Config Asset의 기본 보기
Network 프로젝트 구성 에셋의 기본 보기.

Fusion 버전

첫 번째 섹션은 현재 사용 중인 Fusion 버전을 표시합니다.
드롭 다운을 확장하면 Fusion에서 사용되는 각 동적 링크 라이브러리(DLL)에 대한 자세한 정보를 확인할 수 있습니다.

씬 설정

  • Peer mode:
    • Single: 단일 서버, 호스트, 또는 클라이언트 피어를 실행하는 일반적인 사용 사례.
    • Multiple: 편집기에서 여러 피어를 허용.

Peer ModeMultiple로 설정하면 빌드 없이 하나의 게임 세션에서 여러 피어를 테스트하는 데 유용합니다.
멀티 피어 모드에 대해 자세히 알아보기.

지연 보상

지연 보상을 활성화하면 플레이어가 현재 보고 있는 상태에 맞게 히트 박스 감지가 더 정확해지며, FPS 게임과 같은 빠른 게임에 유용합니다.
게임의 히트 박스 스냅샷을 저장하여 이루어집니다. 이 설정을 통해 각 스냅샷에 저장할 정보를 정의하여 히트 박스 감지의 정확도를 조정할 수 있습니다.

Lag Compensation은 Server ModeHost Mode에서만 사용할 수 있습니다.
  • Hitbox Buffer Length In Ms: 히트 박스 데이터가 밀리초 단위로 저장될 버퍼 길이를 지정합니다. 시간이 길수록 새로운 데이터로 덮어쓰기 전까지 더 오래 저장됩니다.
  • Hitbox Default Capacity: 스냅샷당 저장되는 기본 히트 박스 값의 수. 최소값은 16입니다.
  • Cached Static Colliders Size: 기본 Lag Compensation 쿼리의 PhysX 또는 Box2D 정적 콜라이더 캐시 배열 크기.

지연 보상에 대해 자세히 알아보기.

기타

이 섹션은 Fusion 프로젝트와 관련된 기타 매개변수를 다룹니다.

  • Enqueue Incomplete Synchronous Spawns: 활성화되면 동기화되지 않은 불완전 스폰(Addressables 등)이 예외를 발생시키는 대신 대기열에 추가됩니다.
    이 경우 Fusion.NetworkSpawnStatus.Queued를 반환하고, 객체 스폰 시도가 다음 프레임에 발생합니다.
    Fusion 1.x에서 전환할 때 유용할 수 있습니다.
  • Invoke Render In Batch Mode: 활성화되면 Fusion.SimulationBehaviour.Render 콜백이 배치 모드로 게임을 실행할 때 호출됩니다.
    배치 모드는 유니티 빌드 실행 파일에 전달할 수 있는 -batchmode 매개변수를 참조합니다.
    비활성화하면 헤드리스 서버를 사용하는 게임에서 유용할 수 있습니다. Unity의 배치 모드에 대해 자세히 알아보기.
  • Network Id Is Object Name: 선택 시 새로 스폰 된 객체의 이름에 네트워크 ID가 추가됩니다. 예: [Network Id] Original Object Name.

시뮬레이션

다음 설정은 Fusion 시뮬레이션이 작동하는 방식을 처리합니다:

  • Replication Features:
    • None: 기본 설정이며, 게임 플레이 중 데이터 제한(틱당 데이터 양)을 초과하지 않는 프로젝트에 이상적입니다.
    • Scheduling: 설정 시, 서버가 클라이언트에 복제하지 못한 Network Objects(틱당 데이터 제한으로 인해) 우선순위를 증가시켜 다음 Tick 업데이트에 클라이언트로 전송합니다.
    • Scheduling and Interest Management: 스케줄링에 더해, Area of InterestExplicit Interest를 포함한 Interest Management 기능이 활성화됩니다.
      Interest Management에 대해 자세히 알아보기.
  • Input Transfer Mode: 입력이 네트워크를 통해 전송되는 방식을 결정합니다:
    • Redundancy: 델타 압축 및 중복 입력 전송. 대부분의 게임에서 사용됩니다.
    • Latest State: 최신 입력 상태만 전송. VR처럼 머리와 손의 위치 데이터를 포함하는 대규모 입력 구조를 사용하는 게임에 유용합니다.
  • Player Count: 1에서 255 사이의 값으로, Fusion 세션 시작 시 특정 값이 지정되지 않았을 경우 사용되는 기본 플레이어 수입니다.
참고: 아래 설정은 공유 모드에는 적용되지 않습니다. Client Tick Rate는 항상 32이고, 클라이언트 전송률은 항상 16으로 설정됩니다.
  • Client Tick Rate: 클라이언트의 틱 속도. 드롭 다운을 통해 8에서 256 사이의 값을 선택할 수 있습니다.
  • Client Send Rate: 클라이언트가 서버로 데이터를 전송하는 속도. 다음 값으로 설정할 수 있습니다:
    • 1/8: Client Tick Rate가 240 이상인 경우에만 적용 가능합니다.
    • 1/4: Client Tick Rate가 4로 나누어떨어질 경우에만 적용 가능합니다.
    • 1/2.
    • 1:1: Client Tick Rate와 동일한 값.
  • Server Tick Rate: 서버가 업데이트되는 속도. Client Send Rate와 동일한 선택지를 가집니다.
  • Server Send Rate: 서버가 다른 클라이언트로 데이터를 틱 단위로 전송하는 속도.
    Client Send Rate와 동일한 선택지를 가지며, Server Tick Rate를 초과할 수 없습니다.

네트워크

  • Connection Timeout: 업데이트가 수신되지 않을 경우, 연결이 끊어지기 전까지의 시간(초 단위)입니다.
    서버는 해당 클라이언트로부터 업데이트를 받지 못하면 클라이언트 연결을 끊고, 클라이언트는 서버로부터 업데이트를 받지 못하면 서버 연결을 끊습니다.
  • Connecting Shutdown Time: 연결 상태가 Shutdown으로 변경된 후, 연결 및 관련 참조가 해제되기까지의 시간(초 단위)입니다.
  • Reliable Data Transfer Modes: 신뢰할 수 있는 데이터 전송 모드를 결정합니다.
    • Client to Server: 클라이언트에서 서버로 데이터를 신뢰성 있게 전송할 수 있도록 허용합니다.
    • Client to Client With Server Proxy: 서버를 프록시로 사용하여 클라이언트 간 데이터를 신뢰성 있게 전송할 수 있도록 허용합니다.

호스트 마이그레이션

이 설정은 호스트 마이그레이션이 작동하는 방식을 결정합니다.

  • Enable Auto Update: 활성화하면 호스트 마이그레이션이 자동으로 업데이트됩니다.
  • Update Delay: 호스트 마이그레이션 스냅샷이 Photon Cloud에 업로드되는 간격(초 단위)입니다.

암호화

이 토글은 이 Fusion 프로젝트에서 Encryption을 활성화하거나 비활성화할지 설정합니다.
참고로, 이를 활성화한 경우 Photon App Settings에서 프로젝트의 Encryption Mode를 업데이트해야 합니다.
암호화에 대해 자세히 알아보기.

네트워크 조건

네트워크 조건을 사용하면 지연 시간 및 손실과 같은 다양한 네트워크 조건을 시뮬레이션하고 테스트할 수 있습니다.

  • Enabled: 활성화되면 추가 옵션이 표시됩니다.
  • Delay Shape: 지연 변동의 패턴을 설정합니다:
    • Noise;
    • Sine;
    • Square;
    • Triangle;
    • Saw;
    • Reverse Saw.
  • Delay Min: 최소 지연 시간(초 단위), 0에서 0.5 사이의 값.
  • Delay Max: 최대 지연 시간(초 단위), 0에서 0.5 사이의 값.
  • Delay Period: Delay MinDelay Max 사이에서 지연이 진동하는 속도(초 단위).
  • Delay Threshold: 진동이 이 값(0에서 1 사이의 값) 아래로 떨어질 경우, 지연이 Delay Min으로 설정됩니다.
  • Additional Jitter: 진동이 다음 지연 값을 결정한 후, 0에서 지정된 값(초 단위) 사이의 임의의 값이 지연에 추가됩니다.
  • Loss Chance Shape: 손실 확률 변동의 패턴을 설정합니다. 선택지는 Delay Shape와 동일합니다.
  • Loss Chance Min: 손실이 발생할 최소 확률(0%~100%).
  • Loss Chance Max: 손실이 발생할 최대 확률(0%~100%).
  • Loss Chance Threshold: 진동이 이 값(0~1 범위) 아래로 떨어지면 손실 확률이 Loss Chance Min으로 설정됩니다.
  • Loss Chance Period: Loss Chance MinLoss Chance Max 사이에서 손실 확률이 진동하는 속도(초 단위).
  • Additional Loss: 진동이 다음 손실 확률 값을 결정한 후, 추가적으로 0에서 이 값(정규화된 비율) 사이의 임의 값을 손실 확률에 더합니다.

손실은 거의 동일한 설정을 가지며, 시간(초 단위)이 아니라 퍼센트(0%~100%)로 값을 결정합니다. 이는 손실이 어떻게 시뮬레이션되는지를 나타냅니다.

Fusion에서 사용할 사전 할당 메모리 양을 정의할 수 있습니다. 이를 통해 메모리 관리가 최적화되고 효율성이 향상됩니다.

  • Page Shift: 각 힙 페이지의 크기를 결정하며, 메모리 할당의 세분화 수준에 영향을 미칩니다.
    1 KB에서 256 KB까지 2의 제곱 값으로 설정할 수 있습니다.
    값이 낮을수록 작은 메모리 할당이 가능하며, 값이 높을수록 큰 메모리 할당이 가능합니다.
  • Page Count: 힙에 대해 처음 할당된 페이지 수를 지정합니다.
    16에서 4096까지 설정할 수 있으며, 이는 초기 메모리 할당량에 영향을 미칩니다.

위버 설정

Fusion IL Weaver 설정으로, 저수준 네트워크 코드를 생성하고 이를 Assembly-CSharp.dll에 삽입합니다.

  • Assemblies to Weave: 처리될 어셈블리 목록. 대소문자를 구분하지 않습니다. 기본적으로 다음 항목이 포함됩니다:
    • Fusion.Unity;
    • Assemble-CSharp;
    • Assembly-CSharp-firstpass;
    • Fusion.Addons.Physics (Fusion의 물리 시스템을 사용하는 경우).
  • Use Serialized Dictionary: 선택 시, 네트워크 속성의 초기 값을 저장하는 데 Fusion.SerializeableDictionary가 사용됩니다.
    비활성화하면 System.Generic.Dictionary가 사용되지만, 이 타입은 Unity 직렬화가 불가능하며, Odin과 같은 커스텀 직렬화기가 필요할 수 있습니다.
  • Null Checks for Networked Properties: 설정 시, 네트워크 속성을 가진 Fusion.NetworkBehaviour에 연관된 Fusion.NetworkObject가 연결되어 있는지 확인합니다.
  • Check Rpc Attribute Usage: 설정 시, Fusion.RpcAttribute가 지원되지 않는 타입에서 사용되는지 확인합니다.
    예: Fusion.RpcAttributeUnity.MonoBehaviour 메서드에 추가된 경우 경고가 표시됩니다.
    RPC는 Fusion.NetworkBehaviourFusion.SimulatedBehaviours에서만 사용 가능합니다.
    RPC 규칙에 대해 자세히 알아보기.
  • Check Networked Properties Being Empty: 설정 시, 사용자가 Fusion.NetworkedAttribute로 부적절하게 속성을 정의하려고 할 때 경고를 표시합니다.
    해당 속성의 Getter와 Setter는 아래 예시와 같이 비워둬야 합니다:

C#

[Networked]
public int NetworkedProperty {get; set;}

네트워크 속성을 올바르게 설정하는 방법 자세히 알아보기

프리팹

프리팹이 언로드되는 방식을 관리합니다.

  • Unload Prefab On Releasing Last Instance: 마지막 인스턴스가 해제될 때 프리팹을 언로드합니다.
  • Unload Prefabs On Shutdown: 셧다운 시 모든 프리팹을 언로드합니다.

필요하지 않은 프리팹을 언로드하면 메모리 사용량을 줄일 수 있지만, 다시 필요할 경우 로드해야 합니다.

자동 생성

자동으로 생성된 정보를 표시합니다.

  • Show Network Prefab Inspector: 프로젝트에서 Fusion.NetworkObject 컴포넌트를 포함하고 Fusion.NetworkObject.IsSpawnable이 활성화된 프리팹을 검사하는 창을 엽니다.
  • Prefabs: 위에서 언급한 버튼 아래에는 프로젝트에서 NetworkObject 프리팹으로 나열된 각 프리팹의 드롭 다운 목록이 표시됩니다.
    사용자가 직접 이 목록을 업데이트할 수는 없지만, 런타임에 추가 프리팹을 Fusion.NetworkPrefabTable.TryAddSource로 등록할 수 있습니다.
  • Behaviour Meta: 프로젝트의 모든 Fusion.SimulationBehaviours에 대한 실행 순서와 같은 메타 정보를 포함하는 자동 생성 목록.

네트워크 프리팹 인스펙터

위에서 언급한 Network Prefabs InspectorFusion.NetworkObject 컴포넌트를 포함하고 Fusion.NetworkObject.IsSpawnable이 활성화된 프리팹을 자세히 검사할 수 있습니다.

Network Prefabs Inspector 예시
네트워크 프리팹 인스펙터 예시 보기.

이 창의 메인 툴바는 다음과 같은 기능을 제공합니다:

  • Refresh: 새로 생성된 프리팹이 있을 경우 목록을 새로고침하고 업데이트합니다.
  • Sync Selection: 활성화 시, Unity는 창에서 강조 표시된 프리팹 에셋을 선택합니다.
  • Loaded Only: 활성화 시, 로드된 프리팹만 표시됩니다.

각 행은 다른 프리팹을 나타내며, 각 열은 다음을 의미합니다:

  • State: 프리팹이 현재 로드되었는지 여부를 표시합니다.
  • Type: 프리팹이 로드되는 방식을 나타냅니다.
    • R: Resources 폴더에 배치된 프리팹.
    • SL: Resources 폴더 외부에 배치된 정적 프리팹.
    • A: Addressable로 로드된 프리팹.
  • PrefabId: Fusion에서 프리팹에 할당된 ID.
  • Path: 프리팹의 파일 경로.
Back to top