네트워크 설정
Unreal Editor에서 Edit > Project Settings를 열고 CAT Network Settings를 검색해 값을 편집합니다. 이 설정은 프로젝트의 Game config에 저장됩니다.
Remote Physics Mode
RemotePhysicsMode는 remote Assembly를 로컬에서 표현하는 방식을 선택합니다.
| 모드 | 동작 |
|---|---|
Remote Dynamic |
remote Assembly를 로컬에서 dynamic body로 시뮬레이션하고 서버 snapshot을 목표로 보정합니다. 로컬 물리 시뮬레이션과 서버 상태 보정이 함께 동작합니다. 활성 backend가 remote dynamic simulation을 지원하지 않으면 execution component는 Snapshot Playback으로 fallback합니다. |
Snapshot Playback |
remote Assembly를 kinematic snapshot playback 오브젝트로 처리합니다. 전달받은 snapshot을 재생하고 시각적 상태를 smoothing합니다. remote 물리 상호작용보다 안정적인 시각 복제가 중요한 경우에 사용할 수 있습니다. |
모드 선택
remote 오브젝트에 로컬 dynamic simulation이 필요한지, 서버 snapshot의 안정적인 시각 재생이 우선인지, 프로젝트의 멀티플레이 테스트 결과가 어떤지를 기준으로 선택하세요. 어느 모드도 모든 상황에서 최선은 아닙니다.
Assembly Collision Channel Name
AssemblyCollisionChannelName의 기본 이름은 CATAssembly입니다. CAT Assembly body의 collision filtering에 사용할 수 있는 선택적 Object Channel 이름입니다. 사용하려면 Project Settings의 Collision 설정에서 같은 이름의 Object Channel을 구성하세요. 채널을 구성하지 않으면 기존 collision behavior는 변경되지 않으며, 이 설정이 Assembly collision을 자동으로 비활성화하지는 않습니다.
Physics Snapshot Tier Policies
CriticalPolicy, NormalPolicy, LowPolicy는 Assembly가 서로 다른 snapshot 빈도와 정책을 사용하도록 합니다. 공통 필드는 다음과 같습니다.
| 프로퍼티 | 설명 |
|---|---|
SyncMode |
FullOnly는 full snapshot만 보냅니다. AccumulatedDirtyBodyDelta는 full baseline 뒤에 누적된 변경 body의 delta payload를 보내며, full snapshot이 필요하거나 유효한 baseline으로 delta를 만들 수 없으면 full snapshot으로 fallback합니다. |
TargetSnapshotRateHz |
목표 snapshot 전송 빈도입니다. 값은 1–60 Hz 범위로 정규화됩니다. 값이 높으면 업데이트 사이 간격을 줄일 수 있지만 bandwidth와 CPU 작업도 증가합니다. |
DeltaToFullFallbackCostRatio |
delta snapshot에 쓰이는 0–1 임계값입니다. 추정 delta payload 비용을 추정 full snapshot 비용으로 나눈 값이 이 값 이상이면 CAT는 full snapshot을 보냅니다. 0이면 이 비용 비율 fallback을 사용하지 않습니다. |
SafetyFullSnapshotInterval |
delta 전달 중 주기적으로 full snapshot을 보내기 위한 안전 간격이며 단위는 초입니다. 0이면 주기적 full 조건을 사용하지 않습니다. |
PassiveSmoothingTime |
passive 또는 snapshot playback smoothing에 전달하는 시간이며 단위는 초입니다. 작은 값과 큰 값은 반응성과 시각적 smoothing 사이의 tradeoff가 있으므로 멀티플레이 테스트로 조정하세요. 값은 0–1초 범위로 정규화됩니다. |
bEnableSleepSuppression |
sleeping body의 불필요한 snapshot을 억제하기 위한 정책 필드입니다. 현재 snapshot replication 구현은 이 필드를 소비하지 않으므로, 이 릴리스에서 wake 상태 전환 동작은 문서화할 수 없습니다. |
Tier 선택
Assembly의 기본 Tier는 Normal입니다. UCATAssemblyComponent는 Blueprint에서 호출할 수 있는 SetPhysicsSyncTier, GetPhysicsSyncTier, GetResolvedPhysicsSnapshotPolicy를 제공하며, SetPhysicsSyncTier로 해당 Assembly에 Critical, Normal, Low를 선택합니다. Control Session 구현은 세션 시작이나 종료 시 Tier를 바꾸지 않으므로, 필요할 때 프로젝트 코드에서 다른 Tier를 선택해야 합니다.
플러그인 기본값과 프로젝트 override
아래 값은 UCATNetworkSettings::UCATNetworkSettings()의 플러그인 생성자 기본값입니다.
| Tier | SyncMode |
TargetSnapshotRateHz |
DeltaToFullFallbackCostRatio |
SafetyFullSnapshotInterval |
PassiveSmoothingTime |
bEnableSleepSuppression |
|---|---|---|---|---|---|---|
CriticalPolicy |
AccumulatedDirtyBodyDelta |
30 | 0.85 | 2 s | 0.08 s | true |
NormalPolicy |
AccumulatedDirtyBodyDelta |
15 | 0.85 | 4 s | 0.12 s | true |
LowPolicy |
AccumulatedDirtyBodyDelta |
5 | 0.85 | 8 s | 0.20 s | true |
생성자는 RemotePhysicsMode를 Remote Dynamic, AssemblyCollisionChannelName을 CATAssembly로 기본 설정합니다. 이 샘플 프로젝트의 Config/DefaultGame.ini는 RemotePhysicsMode를 SnapshotPlayback으로, CriticalPolicy.SyncMode를 FullOnly로 override합니다. 이는 모든 신규 프로젝트의 기본값이 아니라 현재 샘플 프로젝트의 override입니다.