PART 3 - 강의 3/3
Iris 마이그레이션 가이드
기존 프로젝트를 Iris로 마이그레이션하는 단계별 가이드
01
Step 1: Registered Subobject List 활성화
모든 Actor에서 새 방식 사용
C++
// 모든 복제 Actor의 생성자에서
AMyActor::AMyActor()
{
// 필수: 새로운 서브오브젝트 등록 방식 활성화
bReplicateUsingRegisteredSubObjectList = true;
}
// ReadyForReplication에서 서브오브젝트 등록
void AMyActor::ReadyForReplication()
{
Super::ReadyForReplication();
// 복제할 컴포넌트/서브오브젝트 등록
AddReplicatedSubObject(MyInventoryComponent);
AddReplicatedSubObject(MyAbilityComponent);
}
02
Step 2: UObject 서브오브젝트 복제
컴포넌트가 아닌 UObject 복제 설정
C++
// UObject 서브오브젝트 복제 설정
class UMyReplicatedObject : public UObject
{
GENERATED_BODY()
public:
// 네트워킹 지원 활성화
virtual bool IsSupportedForNetworking() const override
{
return true;
}
virtual void GetLifetimeReplicatedProps(
TArray<FLifetimeProperty>& OutLifetimeProps) const override
{
DOREPLIFETIME(UMyReplicatedObject, MyProperty);
}
UPROPERTY(Replicated)
int32 MyProperty;
};
03
Step 3: 커스텀 NetSerialize 구조체 등록
Iris에서 커스텀 직렬화 구조체 사용
DefaultEngine.ini
// 커스텀 NetSerialize 구조체를 Iris에 등록
[/Script/IrisCore.ReplicationStateDescriptorConfig]
+SupportsStructNetSerializerList=(StructName=FMyCustomStruct)
+SupportsStructNetSerializerList=(StructName=FMyOtherStruct)
주의: 등록 누락
커스텀 NetSerialize를 가진 구조체를 등록하지 않으면 Iris에서 기본 직렬화를 사용하여 데이터가 올바르게 전송되지 않을 수 있습니다.
04
마이그레이션 체크리스트
마이그레이션 전 확인 사항
- ReplicateSubobjects() 제거 - 오버라이드 코드를 Registered List로 변환
- bReplicateUsingRegisteredSubObjectList = true - 모든 Actor에서 설정
- Replication Graph 제거 - Iris와 동시 사용 불가
- 커스텀 NetSerialize 등록 - ini 파일에 구조체 추가
- GetNetPriority/IsNetRelevantFor 검토 - 필요시 Iris API로 변환
점진적 마이그레이션
Iris 플러그인을 활성화하기 전에 먼저 Registered Subobject List로 마이그레이션하세요. 이 단계는 기존 시스템에서도 동작하므로 안전하게 테스트할 수 있습니다.
SUMMARY
핵심 요약
- Step 1 - bReplicateUsingRegisteredSubObjectList 활성화
- Step 2 - UObject에 IsSupportedForNetworking 구현
- Step 3 - 커스텀 NetSerialize 구조체 ini 등록
- 점진적 마이그레이션 - Registered List 먼저, 그 다음 Iris 활성화
PRACTICE
도전 과제
배운 내용을 직접 실습해보세요
실습 1: Iris 마이그레이션 체크리스트
프로젝트에서 ReplicateSubobjects() 오버라이드를 모두 검색하고 Registered Subobject List 방식으로 변환하세요. bReplicateUsingRegisteredSubObjectList와 AddReplicatedSubObject()를 사용하세요.
실습 2: IrisNetDriver 전환 테스트
DefaultEngine.ini에서 NetDriverDefinitions를 IrisNetDriver로 변경하고 IpNetDriver를 Fallback으로 지정하세요. 기존 기능의 리그레션 테스트를 수행하세요.
심화 과제
Replication Graph 기반 프로젝트를 Iris로 전환하세요. 필터링 로직을 Iris Filtering API로 재구현하고, 100명 봇 환경에서 서버 FPS와 메모리 사용량을 양쪽 시스템 간 비교해보세요.