묻공러
RPC (Remote Procedure Call)
묻공러
묻지마공부
묻공러
전체
오늘
어제
  • 분류 전체보기 (488)
    • C (54)
      • [코드조선] C 핵심 (35)
      • [언어본색] C 기초 (19)
    • C++ (72)
      • [루키스] C++ (9)
      • [루키스] 콜백함수 (6)
      • [루키스] STL (8)
      • [루키스] Modern C++ (11)
      • [노코프] C++ (10)
      • [노코프] Tips (16)
      • [일지] C++ (12)
    • 자료구조 & 알고리즘 (50)
      • [코드조선] C 자료구조 & 알고리즘 (6)
      • [합격자되기] C++ 코딩테스트 (12)
      • [루키스] C++ 자료구조 & 알고리즘 (32)
    • CS (69)
      • [널널한 개발자] CS 개론 (19)
      • [혼자 공부하는] 컴퓨터 구조 (16)
      • [혼자 공부하는] 운영체제 (18)
      • [널널한 개발자] 네트워크 (16)
    • 게임 그래픽스 (46)
      • [전북대] OpenGL (25)
      • [일지] DirectX (21)
    • 게임 엔진 (124)
      • [코드조선] 언리얼 (53)
      • [코드조선] 언리얼 데디서버 (8)
      • [일지] 언리얼 (59)
      • [일지] 언리얼 (2) (3)
      • 유니티 (1)
    • 게임 서버 (17)
    • 게임 수학 & 물리 (19)
      • 게임 수학 (12)
      • 게임 물리 (7)
    • GIT & GITHUB (4)
    • 영어 (18)
      • [The Outfit] 대본 공부 (11)
      • the others (7)
    • 그 외 (15) N
      • In (5)
      • Out (6) N
      • Review (4)

인기 글

최근 글

hELLO · Designed By 정상우.
게임 엔진/[코드조선] 언리얼 데디서버

RPC (Remote Procedure Call)

2025. 3. 7. 12:50

RPC 개념

RPC 함수는 A라는 PC가 호출하고, B라는 PC에서 수행되어지도록 하는 함수이다

총 경우의 수는 아래와 같다

1. Owning Client (호출) → Owning Client (수행) (사실상 자기 자신)

2. Server (호출) → Server (수행) (사실상 자기 자신)

3. Owning Client (호출) → Server (수행)

4. Server (호출) → Owning Client (수행)

5. Server (호출) → 모든 곳 (수행)

 

위 경우의 수를 제외한 나머지 경우는 모두 불가능하다

특히, Other Client에서의 호출은 어불성설이며 불가능하다

 

RPC 키워드

- Owning Client (호출) → Server (수행)

Server 키워드를 통해서 RPC를 할 수 있다

 

- Server (호출) → Owning Client (수행)

Client 키워드를 통해서 RPC를 할 수 있다

 

- Server (호출) → 모든 곳 (수행)

NetMulticast 키워드를 통해서 RPC를 할 수 있다

 

NetMulticast 주의점은 NetMulticast는 반드시 서버에서 호출이 되어야 한다

그렇기에 만약 Owning Client에서 시작해 NetMulticast를 하고 싶다면

Owning Client → Server → NetMulticast처럼 Server를 거쳐서 호출해야 한다

 

RPC 팁

- Tip 1: IsLocallyControlled()

추가적으로 특정한 상황에서

Owning Client에서 먼저 특정 함수를 실행하고

Server를 거쳐 NetMulticast를 통해 모든 곳에서 특정 함수를 실행하도록 하는 경우가 있다

이러한 경우에는 Owning Client는 이미 먼저 실행을 했는데

NetMulticast를 통해 한 번 더 실행되기에

IsLocallyControlled() 함수를 이용해서 Owning Client를 제외시킬 수 있다

 

- Tip 2: Client와 Owner

Client 키워드의 경우는

서버가 GetOwner()를 통해 Owner를 확인한다

그리고 개발자가 Owner를 올바르게 설정하지 않았을 가능성도 고려하며

Net Owner와 언리얼 엔진의 복제 시스템 등

추가적으로 다양한 검증 절차들을 진행하며

누가 Owning Client인지 파악한다

이처럼 개발자는 명시적으로 SetOwner() 함수를 통해 Owner를 설정하는 것을

습관화하는 것이 좋고 이를 Client 키워드뿐 아니라 다양한 곳에서 활용할 수 있다

저작자표시 비영리 변경금지

'게임 엔진 > [코드조선] 언리얼 데디서버' 카테고리의 다른 글

Replicated, ReplicatedUsing 키워드  (0) 2025.03.07
함수 내부에서의 구분  (0) 2025.03.07
RPC 활용  (0) 2025.03.07
RPC 키워드 사용법  (0) 2025.03.07
언리얼 멀티플레이 개념  (0) 2025.03.07
'게임 엔진/[코드조선] 언리얼 데디서버' 카테고리의 다른 글
  • 함수 내부에서의 구분
  • RPC 활용
  • RPC 키워드 사용법
  • 언리얼 멀티플레이 개념
묻공러
묻공러
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.