RPC 상황 예시

박정훈·2025년 3월 28일

언리얼 네트워크

목록 보기
7/7

1️⃣Client RPC

  • 📌UI 업데이트:
    서버에서 점수가 갱신되었을 때 해당 플레이어의 HUD나 인벤토리 정보를 갱신하기 위해 클라이언트 RPC를 사용해 특정 애니메이션이나 효과를 재생할 수 있습니다.

  • 📌개인화된 효과:
    플레이어가 피격되었을 때, 서버가 해당 클라이언트에게 화면 깜빡임이나 카메라 흔들림 등 개인적인 피드백을 주기 위해 클라이언트 RPC를 호출할 수 있습니다.

  • 📌알림 및 오류 메시지:
    서버가 특정 행동(예: 불법 행동이나 제한된 행동)을 감지하여, 해당 플레이어에게만 경고 메시지나 팝업 창을 띄워야 할 때 클라이언트 RPC를 이용할 수 있습니다.

  • 📌사운드 및 비주얼 이펙트:
    예를 들어, 서버에서 어떤 이벤트(예: 폭발)가 발생하면, 해당 이벤트와 관련된 이펙트나 사운드를 특정 클라이언트에서만 재생하도록 지시할 때 사용됩니다.


2️⃣Server RPC

  • 📌무기 발사 처리:

    • 상황: 플레이어가 무기를 발사할 때, 클라이언트는 단순히 입력을 보내는 것이 아니라 실제 발사가 가능한지를 서버가 검증해야 합니다.

    • 사용: 클라이언트는 Server RPC를 호출해 "무기 발사 요청"을 보내고, 서버는 이 요청을 검증한 후 발사를 처리(예: 탄환 생성, 충돌 판정 등)합니다.

  • 📌아이템 줍기:

    • 상황: 플레이어가 게임 내 아이템을 주우려고 할 때, 여러 플레이어가 동시에 같은 아이템을 주우려 할 수 있습니다.

    • 사용: 클라이언트는 Server RPC를 통해 "아이템 줍기 요청"을 서버에 보내고, 서버는 아이템이 유효하고 아직 남아있는지 검증 후 처리합니다.

  • 📌문 열기 또는 상호작용:

    • 상황: 플레이어가 문을 열거나 스위치를 작동시키는 경우, 서버는 이 동작을 검증하여 게임 상태를 변경해야 합니다.

    • 사용: 클라이언트가 Server RPC로 "문 열기 요청"을 보내면, 서버가 조건을 확인하고 문을 여는 로직을 실행합니다.

  • 📌스킬 사용 요청:

    • 상황: 플레이어가 스킬을 사용하면, 스킬의 효과나 데미지 계산은 서버에서 결정되어야 합니다.

    • 사용: 클라이언트는 스킬 사용에 대해 Server RPC를 호출하고, 서버가 스킬 효과를 처리한 후 결과를 전체에 복제합니다.

  • 📌채팅 메시지 전송:

    • 상황: 플레이어가 채팅 메시지를 보낼 때, 서버는 메시지 검증(예: 욕설 필터링)을 하고 다른 플레이어에게 전달해야 합니다.

    • 사용: 클라이언트는 채팅 메시지를 보내기 위해 Server RPC를 호출하고, 서버가 메시지를 처리 후 다른 클라이언트로 전달합니다.


3️⃣NetMulticast

  • 📌폭발 이펙트 재생:
    게임 내 폭발이나 파괴 이벤트가 발생할 때, 서버는 Multicast RPC를 호출해 모든 클라이언트에서 폭발 파티클, 사운드, 화면 효과 등이 동시에 재생되도록 할 수 있습니다.

  • 📌문 열림 또는 환경 변화:
    예를 들어, 게임 내 문이 열리거나 특정 액터의 상태가 변경될 때, 서버는 Multicast RPC를 사용해 그 상태 변화를 모든 클라이언트에 동기화하여 동일한 시각적 효과를 보여줄 수 있습니다.

  • 📌전역 이벤트 알림:
    라운드 종료, 보스 등장 등 중요한 게임 이벤트가 발생하면, 서버가 Multicast RPC를 호출하여 모든 플레이어의 화면에 전역 알림이나 UI 업데이트를 표시할 수 있습니다.

  • 📌공격 이펙트와 애니메이션 동기화:
    특정 공격이나 스킬 사용 시, 서버는 Multicast RPC를 통해 모든 클라이언트에서 해당 공격의 애니메이션이나 이펙트를 동시에 재생하도록 하여, 플레이어들이 같은 시점을 경험하게 할 수 있습니다.

Multicast RPC는 반드시 서버에서 호출되어야 하며, 클라이언트가 직접 호출하면 로컬에서만 실행됩니다.
주로 시각적, 청각적 효과와 같이 게임 로직에 직접 영향을 주지 않는 이벤트에 사용하는 것이 일반적입니다.

0개의 댓글