Iris 아키텍처 개요
UE 5.3+ 차세대 복제 시스템의 설계 원칙과 구조
Iris Replication System이란?
Fortnite 경험을 바탕으로 한 차세대 시스템
Iris는 Epic의 Fortnite Battle Royale 경험을 바탕으로 개발된 차세대 복제 시스템입니다. UE 5.7에서 Beta로 승격되어 프로덕션 사용이 가능해졌습니다.
핵심 설계 원칙
- 의존성 최소화 - 게임플레이 시스템과 복제 시스템 간 분리
- 상태 데이터 공유 - 양자화된(Quantized) 상태의 전체 복사본 유지
- 병렬 처리 - 연결 간 작업 공유로 멀티코어 활용
활성화 방법
{
"Plugins": [
{
"Name": "Iris",
"Enabled": true
}
]
}
[/Script/Engine.Engine]
NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/IrisCore.IrisNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
핵심 컴포넌트
Replication Bridge, NetRefHandle, Protocol
#if UE_WITH_IRIS
#include "Net/Iris/ReplicationSystem/ReplicationSystemUtil.h"
#include "Net/Iris/ReplicationSystem/ActorReplicationBridge.h"
// Replication Bridge 접근
AActor* MyActor = GetOwner();
UActorReplicationBridge* Bridge =
UE::Net::FReplicationSystemUtil::GetActorReplicationBridge(MyActor);
// NetRefHandle 획득
UE::Net::FNetRefHandle Handle = Bridge->GetReplicatedRefHandle(MyActor);
// Replication System 접근
UReplicationSystem* RepSystem =
UE::Net::FReplicationSystemUtil::GetReplicationSystem(MyActor);
#endif
NetRefHandle
네트워크 객체를 게임플레이 인스턴스에 매핑하는 고유 식별자
Replication Protocol
객체 타입별 복제 설명, 모든 인스턴스가 공유
Instance Protocol
인스턴스별 고유 데이터 (데이터 위치, 수신 위치 등)
Replication Fragment
게임플레이 코드와 복제 시스템 간 상태 전달 담당
성능 비교
100명 플레이어 벤치마크 결과
| 지표 | 기존 시스템 | Iris | 개선율 |
|---|---|---|---|
| 서버 FPS (120Hz 타겟) | 10-15 FPS | 15-20 FPS | +31% |
| FrameTime | 기준 | -24% | 24% 감소 |
| 메모리 사용량 | 기준 | 약간 증가 | 상태 복사본 유지 |
100명 이상의 플레이어가 한 장소에 모일 때, 10,000개 이상의 복제 Actor가 있을 때, 높은 서버 틱레이트(60Hz+) 요구 시
Replication Fragment 시스템
게임플레이 코드와 복제 시스템 간 상태 전달
Fragment 등록
#if UE_WITH_IRIS
#include "Iris/ReplicationSystem/ReplicationFragmentUtil.h"
void AMyActor::RegisterReplicationFragments(
UE::Net::FFragmentRegistrationContext& Context,
UE::Net::EFragmentRegistrationFlags RegFlags)
{
// 프로퍼티 기반 Fragment 자동 등록
UE::Net::FReplicationFragmentUtil::
CreateAndRegisterFragmentsForObject(
this, Context, RegFlags);
}
#endif
PropertyReplicationFragment
UPROPERTY(Replicated) 기반의 자동 Fragment. 대부분의 경우 자동 생성됩니다.
Custom Fragment
IReplicationFragment를 구현하여 게임 특화 직렬화를 수행합니다.
GetLifetimeReplicatedProps에 등록된 프로퍼티는 Iris에서 자동으로 PropertyReplicationFragment로 변환됩니다. 대부분의 기존 코드는 수정 없이 Iris에서 동작합니다.
핵심 요약
- Iris - UE 5.3+ 차세대 복제 시스템, 5.7에서 Beta
- 병렬 처리 - 연결 간 작업 공유로 멀티코어 활용
- 31% 성능 향상 - 100명 플레이어 벤치마크 기준
- Replication Graph와 상호 배타적 - 동시 사용 불가
도전 과제
배운 내용을 직접 실습해보세요
.uproject에서 Iris 플러그인을 활성화하고, DefaultEngine.ini에서 IrisNetDriver를 설정하세요. 기존 Replication 코드가 수정 없이 동작하는지 확인해보세요.
IpNetDriver와 IrisNetDriver를 번갈아 설정하며 stat net, stat repgraph 명령어로 서버 FPS, 복제 시간, 대역폭을 비교해보세요. 50명 봇 테스트로 측정하세요.
RegisterReplicationFragments를 오버라이드하여 커스텀 Replication Fragment를 구현하세요. 특정 게임 상태를 Fragment로 캡슐화하고, Iris의 양자화(Quantized) 상태 복사본이 정상적으로 동기화되는지 확인해보세요.