본문으로 건너뛰기
Unreal Engine 멀티플레이LESSON 17

NetMulticast RPC로 모두에게 효과 보여 주기

난이도입문 → 초급
예상 시간70분
선수지식16강의 특정 클라이언트 RPC

17강. NetMulticast RPC로 모두에게 효과 보여 주기

1. 이번 강의에서 해결할 문제​

모든 클라이언트에 보여야 한다는 이유로 체력, 문 열림과 점령 상태를 Multicast로 보내면 늦은 참가자는 과거 호출을 받지 못하고 패킷 손실 뒤 잘못된 상태에 머뭅니다. Multicast는 현재 상태 저장소가 아니라 서버가 승인한 순간 표현을 여러 관련 연결에 알리는 도구입니다.

2. 학습 목표​

3. 핵심 개념​

서버가 복제 Actor의 NetMulticast RPC를 호출하면 서버와 현재 그 Actor가 관련성 있는 클라이언트에서 실행됩니다. 클라이언트가 호출하면 일반적으로 그 클라이언트 로컬에서만 실행되므로 권위 있는 브로드캐스트가 아닙니다. 호출 기록이 저장되지 않아 나중에 관련성이 생긴 연결이나 늦은 참가자는 과거 효과를 받지 않습니다.

적합: 총구 섬광, 충격 파티클, 짧은 사운드, 이미 상태로 확정된 행동의 일시적 표현. 부적합: 현재 체력, 팀 점수, 문 열림, 점령 소유 팀, 준비 상태.

4. 단계별 실습​

CaptureWeapon.h
UFUNCTION(NetMulticast, Unreliable)
void Multicast_PlayFireEffects(
FVector_NetQuantize MuzzleLocation,
FVector_NetQuantize ImpactLocation,
bool bHitTarget);
CaptureWeapon.cpp
void ACaptureWeapon::ServerExecuteFire(const FHitResult& Hit)
{
check(HasAuthority());

if (AActor* HitActor = Hit.GetActor())
{
UGameplayStatics::ApplyPointDamage(
HitActor, Damage, Hit.TraceEnd - Hit.TraceStart,
Hit, GetInstigatorController(), this, DamageType);
}

Multicast_PlayFireEffects(
GetMuzzleLocation(), Hit.ImpactPoint, Hit.bBlockingHit);
}

void ACaptureWeapon::Multicast_PlayFireEffects_Implementation(
FVector_NetQuantize MuzzleLocation,
FVector_NetQuantize ImpactLocation,
bool bHitTarget)
{
if (GetNetMode() == NM_DedicatedServer) return;

SpawnMuzzleFx(MuzzleLocation);
if (bHitTarget)
{
SpawnImpactFx(ImpactLocation);
}
}

데미지는 Multicast 이전에 서버에서 확정됩니다. 전용 서버는 렌더링하지 않으므로 표현 코드를 건너뜁니다. 소유 클라이언트가 이미 로컬 예측 효과를 재생했다면 Multicast를 다시 받을 때 중복되지 않도록 Shot Sequence나 COND_SkipOwner 상태와 함께 설계할 수 있지만 이 강의에서는 서버 효과 하나만 재생합니다.

5. 코드가 동작하는 이유​

서버가 Trace와 데미지를 처리한 뒤 효과 위치만 여러 클라이언트에 보냅니다. 효과 패킷이 유실돼도 권위 있는 체력은 RepNotify로 수렴합니다. Actor가 관련 없는 먼 클라이언트에는 Multicast가 전달되지 않을 수 있으며 이는 효과 대상과 Relevancy를 함께 설계해야 함을 뜻합니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

NetMulticast RPC로 모두에게 효과 보여 주기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“NetMulticast RPC로 모두에게 효과 보여 주기”에서 다음 단계로 넘어가기 전에 확인할 핵심은 무엇인가요?
  2. 문제 2“NetMulticast RPC로 모두에게 효과 보여 주기” 실습 중 ‘체력·점수를 Multicast로 동기화’ 상황을 발견했습니다. 본문과 일치하는 설명은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

17강. NetMulticast RPC로 모두에게 효과 보여 주기 미완료 상태