RPC

댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
RPC(Remote Procedure Call) = 한 클라이언트에서 함수를 호출하면, 네트워크를 타고 다른 클라이언트(들)한테 가서 "똑같은 함수가 그쪽에서도 실행되게" 만드는 메커니즘

발로란트는 RPC를 사용하여 "ShotHit" 같은 이벤트 발생을 보내 체력에 반영한다. [출처]
지금까지 배운 권위 구조(StateAuthority)는 지속적으로 유지되는 상태 값을 다루는 도구였다면, RPC는 한 순간 딱 발생하고 끝나는 이벤트를 다루는 도구다
| 다루는 대상 | 예시 | |
|---|---|---|
| Networked Property | 지속되는 상태 값 (계속 동기화 유지) | 체력, 위치, 탄약 수, 충전 게이지 |
| RPC | 순간 발생하고 끝나는 이벤트 | 발사 이펙트, 사운드, 폭발, 버튼 신호 |
상태를 다룰 땐 Property, 이벤트/동작을 다룰 땐 RPC로 처음부터 용도가 나뉜 별도의 두 도구
폭발 같은 이벤트를 굳이 Networked Property로 처리하면: IsExploding = true라는 상태를 만들고, 다른 클라이언트들이 그 값을 감시하다가 true가 되면 이펙트 재생하고, 다시 false로 되돌려야 함 — 번거롭고 부자연스러움.
RPC는 그냥 "폭발해!"라고 한 번 신호를 보내면 받은 쪽에서 바로 해당 함수를 실행하고 끝. 훨씬 자연스러움.
→ 이 방향 설정을 잘못하면 이펙트 중복 재생되거나 아예 안 보이는 버그가 생기는, 실무에서 자주 실수하는 지점이라고 함
Q. 상태(Property)랑 이벤트(RPC)가 애매하게 섞이는 경우는 어떻게 하나? (예: 소총/대포/핵폭탄)
A. 판단 기준은 "쏘는 빈도"가 아니라 "이게 시간이 지나도 계속 값을 들고 있어야 하는가".
하나의 액션 안에 사실 RPC 요소와 Property 요소가 항상 같이 섞여 있음:
결론: 애매한 게 아니라, 게임 로직 자체가 원래 "순간 이벤트 + 지속 상태"의 조합으로 이루어져 있는 것. 하나의 액션을 통째로 "이건 RPC냐 Property냐"로 고민하지 말고, 쪼개서 각 부분에 맞는 도구를 배정하면 됨. 이게 거의 모든 게임 액션(점프, 아이템 획득 등)에서 반복되는 패턴.
![[Unity] ShaderGraph로 높이 단위로 색상 입히기](https://data.develog.develrocket.com/upload/develog/ghks5658/1785933421784-5p1grk/______.png)
그려질 픽셀의 position에 따라 출력을 변경하는 법을 익히기 위해서, 높이를 기준으로 다른 색상을 적용하는 ShaderGraph를 만들어 보았습니다.
