네트워크 프로젝트 설정
개요
Network Project Config
는 Photon Fusion 프로젝트에 영향을 미치는 다양한 정보와 매개변수를 포함하는 에셋으로 다음을 포함합니다:
- 버전;
- 피어 모드;
- 기본 플레이어 수;
- 네트워크 조건 테스트;
- 암호화;
- 프리팹 검사.
이 에셋은 Assets/Photon/Fusion/Resources/NetworkProject.Config.fusion
에 위치합니다.
유니티 편집기 상단 메뉴에서 Tools > Fusion > NetworkProjectConfig
를 선택하여 액세스할 수도 있습니다.
이 에셋에 변경 사항이 있을 경우, Apply 버튼을 클릭하거나 저장 메시지가 표시되면 확인하여 변경 사항을 적용하세요.
Fusion 버전
첫 번째 섹션은 현재 사용 중인 Fusion 버전을 표시합니다.
드롭 다운을 확장하면 Fusion에서 사용되는 각 동적 링크 라이브러리(DLL
)에 대한 자세한 정보를 확인할 수 있습니다.
씬 설정
Peer mode
:Single
: 단일 서버, 호스트, 또는 클라이언트 피어를 실행하는 일반적인 사용 사례.Multiple
: 편집기에서 여러 피어를 허용.
Peer Mode
를 Multiple
로 설정하면 빌드 없이 하나의 게임 세션에서 여러 피어를 테스트하는 데 유용합니다.
멀티 피어 모드에 대해 자세히 알아보기.
지연 보상
지연 보상
을 활성화하면 플레이어가 현재 보고 있는 상태에 맞게 히트 박스 감지가 더 정확해지며, FPS 게임과 같은 빠른 게임에 유용합니다.
게임의 히트 박스 스냅샷을 저장하여 이루어집니다. 이 설정을 통해 각 스냅샷에 저장할 정보를 정의하여 히트 박스 감지의 정확도를 조정할 수 있습니다.
Server Mode
및 Host 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 Interest
와Explicit 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 Min
과Delay 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 Min
과Loss 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.RpcAttribute
가Unity.MonoBehaviour
메서드에 추가된 경우 경고가 표시됩니다.
RPC는Fusion.NetworkBehaviour
및Fusion.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 Inspector
는 Fusion.NetworkObject
컴포넌트를 포함하고 Fusion.NetworkObject.IsSpawnable
이 활성화된 프리팹을 자세히 검사할 수 있습니다.
이 창의 메인 툴바는 다음과 같은 기능을 제공합니다:
Refresh
: 새로 생성된 프리팹이 있을 경우 목록을 새로고침하고 업데이트합니다.Sync Selection
: 활성화 시, Unity는 창에서 강조 표시된 프리팹 에셋을 선택합니다.Loaded Only
: 활성화 시, 로드된 프리팹만 표시됩니다.
각 행은 다른 프리팹을 나타내며, 각 열은 다음을 의미합니다:
State
: 프리팹이 현재 로드되었는지 여부를 표시합니다.Type
: 프리팹이 로드되는 방식을 나타냅니다.R
:Resources
폴더에 배치된 프리팹.SL
:Resources
폴더 외부에 배치된 정적 프리팹.A
:Addressable
로 로드된 프리팹.
PrefabId
: Fusion에서 프리팹에 할당된 ID.Path
: 프리팹의 파일 경로.