inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[Unity] 멀티플레이 게임 필수 기능 구현 - 서버 & 데이터 관리까지!

Party 수락 및 거절

거절 버튼 action에서 RPC 관련 질문

해결된 질문

117

배준엽

작성한 질문수 1

0

Action No에서


Action NO = () =>
{
	ToastPopUPManager.Instance.Initialize("파티 초대를 거절하였습니다ㅠㅠ");
	
	photonView.RPC("IgonrePartyInvite", PhotonHelper.GetPlayer(inviterID), inviterID);
};

강의에서는 IgnorePartyInvite의 인자로 TargetPlayerIndex를 넘겨주는데, 저는 실행이 안 되서 inviterID로 넘겨주니 정상적으로 실행 되더라구요.

해당 action이 RPC안에서 정의 된 거라서 상대 기준에서 다시 내 기기로 함수를 실행시키기 위해서는 inviterID로 넘겨주는 게 맞지 않나요..?

RPC관련 개념이 아직 미숙해서 질문해봅니다.

unity firebase photon photon-pun firestore

답변 2

0

Pinous

안녕하세요. InviterID로 넘겨주셔도 정상적으로 실행된다면 아무 문제가 없습니다. 오히려 더 좋은 방식일 수 있겠네요 ㅎㅎ

강의 흐름상 TargetPlayerIndex를 넘겨주면서 작업을 진행한것이라 큰 문제가 없다면 작성하신 코드로 진행하셔도 될 것 같습니다 🙂

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 배준엽님.

질문 주신 내용과 관련하여 RPC(Remote Procedure Call)에서 인자를 넘기는 방법에 대해 설명 드리겠습니다.

RPC(Remote Procedure Call) 개념:

RPC는 네트워크를 통해 다른 플레이어 클라이언트에서 함수를 호출할 수 있는 기능입니다. 일반적인 멀티플레이어 게임에서는 이 기능을 사용하여 클라이언트 간의 행동을 동기화합니다.

Why Use inviterID:

photonView.RPC("IgnorePartyInvite", PhotonHelper.GetPlayer(inviterID), inviterID);에서 inviterID를 사용하는 경우, PhotonHelper.GetPlayer(inviterID)로 서버에서 특정 플레이어 객체(Player)로 변환하여, 해당 플레이어에게 메서드를 호출하는 것입니다.

따라서,
1. inviterID는 초대한 사람의 ID를 나타내며,
2. PhotonHelper.GetPlayer(inviterID)를 통해 서버는 이 ID를 기반으로 특정 플레이어 객체에 대해 RPC 호출을 할 수 있도록 합니다.
3. IgnorePartyInvite 함수의 인자가 inviterID로 설정된 이유는, 초대 거부 시 누가 초대했는지를 정확히 특정하기 위함입니다.

실제로 구현상에서 inviterID로 넘겨주는 것이 맞는 이유는, “누가 초대했는지”를 서버가 알고 있어야 적절히 초대를 거부해주는 형태로 동작하도록 RPC를 설계했기 때문입니다.

추가 설명:

  • 강의에서 언급한 부분은 아마도 대상 플레이어를 식별하는 방식의 차이일 수 있으며, 실제로 각 프로젝트와 상황에 맞게 대상에게 특정 이벤트나 변수를 전송하는 것이 중요합니다.
  • TargetPlayerIndexinviterID는 프로젝트 설정에 따라 다르게 설정되어 있을 수 있습니다.

유사한 주제로 작성된 답변들이나 강의를 찾으신다면 다음의 링크를 참고해주세요:
- Photon Networking과 RPC 사용법: RPC 적용시 발생할 수 있는 여러 현상들과 그 해결을 위한 팁을 설명한 게시물입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

접근지정자

0

21

2

3-10 강의 14분경 코호트 해석 질문드립니다.

0

16

2

in-app purchasing 버튼의 install 버튼이 비활성화되어있을때 어떻게 해결해야하나요 ?

0

10

2

Weekly 및 Monthly Retention 과제 제출합니다.

0

36

2

유니티 제외 설치한 프로그램들 및 파일 삭제 방법

0

37

1

깃허브에서 콤피유아이 매니저 설치하는게 안됩니다.

0

44

2

[과제] 퍼널 쿼리 PIVOT 테이블 작성

0

52

2

5강, 오류 수정과 관련해서

0

50

2

컴퓨터를 껐다가 클로드 코드 다시 키는 방법 알려주세요.

0

37

1

MA-POCA 알고리즘 응용 질문

0

36

1

이미지 업로드해도 프로필에 x만 떠요

0

47

3

Pivot을 마우스로 클릭하고 드래그해도 움직이 않아서 혹시 아시는 부분이 있나 해서 문의 남깁니다.

0

26

1

카메라가 많아지면 렌더링 비용이 커지나요?

0

34

1

3:56에 폰트 불러온 과정이 궁금합니다 ㅠㅠ

0

48

3

Spider와 Monster 구현 방식을 구분한 이유

1

29

1

방만들기 기능 추가 업데이트 문의

0

69

1

17강 우편 보내기 메일박스 버튼 클릭 부분

0

74

2

Main 씬에 Manager 오브젝트는 삭제하는 건지요?

0

69

2

유니티6버전사용해야하나요?

0

171

2

챕터 강의 5 구현 이후 이슈사항

0

88

2

채팅하기 챕터 오류관련 문의

0

103

1

FirebaseUser null 문제

0

116

1

SpeechBubble Initialize 딜레이

0

120

2

Photon Transform View가 왜 살아있는 건가요?

0

138

2