1. 기본 개념
- 로컬(Local) : 물리적으로 사용자의 위치에 존재하는 단말기나 프로그램, 오브젝트
- 리모트(Remote) : 원격 접속을 통해 접근할 수 있는 단말기나 프로그램, 오브젝트
- RPC(Remote Procedure Call) : 어떤 메소드나 처리를 네트워크를 넘어 다른 클라이언트에서 실행하는 것
2. 게임 서버
- 전용 서버(Dedicated Server)
- 모든 클라이언트가 하나의 전용 서버를 중심으로 데이터를 주고받는 방식
- 전용 서버는 오직 모든 자원이 온전히 네트워크 서비스를 유지하는 목적으로 사용됨
- 모든 클라이언트의 데이터를 감시하는 것이 가능
- 변경사항을 전용 서버에 업로드 하는 것 만으로 모든 클라이언트의 데이터를 업데이트할 수 있음
- 서버가 다운되면 모든 클라이언트의 동작이 불가능해짐
- 리슨 서버(Listen Server)
- 클라이언트 하나가 서버 역할을 담당하는 방식
- 전용 서버에 비해 서비스 유지 비용이 적음
- 물리적으로 매우 가까운 클라이언트끼리의 네트워크 반응속도가 전용 서버보다 빠름
- 호스트 클라이언트의 컴퓨터 성능에 따라 네트워크 품질이 달라짐
- 기존 호스트가 서비스를 종료할 시 다른 클라이언트 중에서 새로운 호스트를 선정하는 절차가 필요함
- P2P(Peer-to-Peer)
- 모든 클라이언트가 호스트 역할을 하는, 클라이언트 서로가 직접 연결된 형태
- 클라이언트가 각자 자신의 월드에서 담당 연산을 실행하고 다른 클라이언트에 그 결과를
전달함
- 클라이언트 수가 적을 시 데이터 교환이 매우 빠르게 이루어짐
- 클라이언트 간 주고받는 데이터 양이 많으므로 회선의 부하가 큼
- 서로 사용하는 데이터가 다른 경우 클라이언트 간의 데이터를 서로에게 맞춰야 함
3. 메소드 관련
- Photonview.IsMine은 ****현재 게임 오브젝트가 로컬 게임 오브젝트인 경우에만 true가 된다.
- [PunRPC] 애트리뷰트는 ****선언된 메소드를 다른 클라이언트에서 원격 실행할 수 있게 한다.
- photonView.RPC( ) 메소드는 RPC를 통해 특정 메소드를 다른 클라이언트에게 원격 실행할 수
있게 한다.
RPC(”원격 실행할 메소드 이름(string)”, ‘대상 클라이언트(RpcTarget)’, ‘메소드에 전달할 값’);
- Photon View 컴포넌트를 사용해 동기화를 구현할 모든 컴포넌트는 IPunObservable 인터페이스를 상속하고 OnPhotonSerializeView( ) 메소드를 구현해야 한다.
- OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) 메소드는 Photon View 컴포넌트를 사용해 로컬과 리모트 사이에 어떤 값을 어떻게 주고받을 지를 결정한다.