Photon

윤재학·2022년 6월 30일
post-thumbnail

포톤에서 모든 동기화는 PhotonView 컴포넌트에서 할수있다.

Photon View

Owner = 소유자 씬이 주인
Fixed - 고정
Takeover - 주인에게 허락 받아야 가져갈 수 있다.

View Id : 포톤뷰의 고유 ID , 씬에 배치된 것은 1~999 개 까지 가능

Observe option : 동기화 옵션 , off 외에는 모두 observed Components에 하나라도 있어야 함

off - RPC 만 사용할 경우(기본값)
Reliable Delta Compressed - 받은 데이터를 비교해 같으면 보내지 않음
Unreliable - 게속 보냄 , 손실 가능성 (무겁다)
Unreliable On Change - 변경이 있을 때 게속 보냄

Observed Components : 동기화할 컴포넌트는 여기에 넣어야 함


방참가 - 런타임 시

view ID 고정

  • Controlled locally : 제어권
    방에 참가한 순서대로 제어권을 가지게 된다. (ex 카트라이더 방장)
    (master) 가 true 이면 방장의 권한
    빌드를 해서 두번째로 방에 들어오면 방장이 아님.

동적 오브젝트로 있는 경우

  • Owner : 주인
    [1] 액터 넘버 - 방에 참가한 순서대로 1부터 증가
    (no playername set) - 닉네임 설정시 표시

  • view ID : 1 + 001 , 액터넘버와 액터 넘버가 주이인 포톤 뷰 컴포넌트

  • Controlled locally : (master) 가 붙으면 방장이라는 뜻, 체크와는 별개
    true 면 자기자신이 컨트롤 가능


RPC 채팅의 원리

(씬에 배치된 오브젝트)

같은 View ID 끼리는 같은 RPC 함수를 주고 받을 수 있다.

플레이어가 생성되면 시작시 로컬(PV.IsMine)이
리모트에게 TestRpc함수를 모두 실행하라고 명령


RPCTarget ★★★

  • All : 자기는 함수를 바로 실행하고 다른 모두에게 전달 , 자기가 빠름

  • AllBuffered : All 은 호출하는 시기에 통신하고 사라지나 , 버퍼에 남겨두면 방에
    나갔다 온 사람들에게도 전달됨

  • AllBufferedViaServer : 버퍼에 남겨둔 모두에게서버를 거저쳐서 동시호출 ,
    자기와 다른 사람들의 함수 실행 타이밍이 같음

  • AllViaServer : 모두에게 서버를 거쳐서 동시 호출

  • MasterClient : 방장한테만 전달

  • Others : 나를 제외한 모두에게 전달

  • OthersBufferd : 나를 제외한 모두에게 버퍼와 함께 전달


profile
노력하자 즐겁게 개발할수 있는 환경을 위해

0개의 댓글