1. 액터 복제 설정 (bReplicates)
- 역할
해당 액터를 네트워크 복제 대상으로 포함할지 결정 - 설정 위치
생성자에서 설정
bReplicates = true;
- 핵심 포인트
- 서버에서 생성된 액터가 클라이언트에도 자동으로 생성됨
- 이 설정이 없으면 복제 자체가 시작되지 않음
2. 변수 복제 등록 (GetLifetimeReplicatedProps)
- 역할
액터 내부 변수 중 어떤 것을 복제할지 선택 - 구현 방법
#include "Net/UnrealNetwork.h"
void AMyActor::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
DOREPLIFETIME(AMyActor, Health);
}
- 핵심 포인트
- 복제할 변수는 반드시 여기 등록해야 함
- 선언만 하고 구현 안 하면 링커 에러(LNK2001) 발생
- 헤더 포함 필수
3. OnRep 함수 (ReplicatedUsing)
- 역할
복제된 값이 클라이언트에 도착했을 때 실행되는 콜백 함수 - 설정 방법
UPROPERTY(ReplicatedUsing = OnRep_Health)
float Health;
UFUNCTION()
void OnRep_Health();
- 구현 예시
void AMyActor::OnRep_Health()
{
// 체력 변경 시 실행할 로직 (UI 갱신 등)
}
- 핵심 포인트
- 값이 변경될 때만 실행 (Tick 필요 없음)
- 기본적으로 클라이언트에서만 자동 호출
- 서버에서는 필요 시 수동 호출
- 이전 값 비교도 가능 (OldValue 활용)
C++ OnRep vs Blueprint RepNotify
공통 개념 (Replication Notify)
- 변수 값이 변경되어 클라이언트에 복제되는 순간 자동으로 호출되는 콜백 함수
- 값 변경을 감지해서 후처리를 수행하는 이벤트 기반 시스템
C++ : OnRep_
UPROPERTY(ReplicatedUsing = OnRep_Health)
float Health;
- 특징
- 함수 이름은 보통 OnRep_변수명 규칙 사용
- C++에서 직접 구현
- 필요 시 OldValue를 받아 이전 값 비교 가능
- 서버에서는 자동 호출되지 않음 (직접 호출 필요)
Blueprint : RepNotify
- 설정 방식
- 변수 옵션에서 RepNotify 체크
- 자동으로 Notify 함수 생성됨
- 특징
- 블루프린트에서 이벤트처럼 사용
- 별도 함수 선언 없이 쉽게 연결 가능
- 내부적으로는 C++의 OnRep과 동일한 동작
핵심 차이
- C++ → 직접 함수 구현 (유연성 높음)
- Blueprint → 자동 이벤트 생성 (사용 편의성 높음)
한줄 정리
→ "OnRep과 RepNotify는 동일한 개념이며, C++은 직접 구현, 블루프린트는 자동 이벤트 형태로 제공된다."
전체 흐름 정리
bReplicates = true
→ 액터 자체를 네트워크에 등장시킴
DOREPLIFETIME
→ 복제할 변수 선택
OnRep_ / RepNotify
→ 값 변경 시 클라이언트에서 후처리
비유로 이해하기
- bReplicates → 공연장 입장권
- GetLifetimeReplicatedProps → 반입 물품 목록
- ReplicatedUsing / RepNotify → 알림 벨
- OnRep 함수 → 벨 울리면 하는 행동
'내배캠 TIL' 카테고리의 다른 글
| [ 내배캠 TIL 260403] Unreal RenderTarget 기반 Fog of War 구현 (0) | 2026.04.03 |
|---|---|
| [ 내배캠 TIL 260402] Unreal Grid & Fog of War 시스템 정리 (0) | 2026.04.02 |
| [ 내배캠 TIL 260325 ] C++ 로또 문제 (완전탐색 → 해시 최적화) (0) | 2026.03.25 |
| [내배캠 TIL 260324] C++ 약수 개수 구하기 (완전탐색 vs √N 최적화) (0) | 2026.03.24 |
| [내배캠 TIL 260323] C++ 그리디 (Greedy) : 구간 덮기 문제 (0) | 2026.03.23 |