참고 사이트 : https://doc.photonengine.com/ko-kr/pun/current/demos-and-tutorials/pun-basics-tutorial/intro
멀티플레이어 게임을 개발할 때 사용하는 네트워크 엔진 및 서버 솔루션이다.
주로 Unity 엔진과 함께 사용되며, 다양한 플랫폼에서 멀티플레이 게임을 쉽게 만들 수 있게 도와준다.
모든 플레이어들은 "Name Sever"에 접속 한다.
클라이언트의 앱(AppId를 통해)이 무엇이고 어떤 지역을 이용할 것인지를 체크 한다.
클라이언트를 마스터 서버로 *포워딩 해줍니다.
마스터 서버는 지역 서버들의 허브 역할이다.
마스터 서버는 현재 모든 게임들에 대해서 알고 있다.
게임(룸)이 생성 또는 참여 될 때 클라이언트는 "게임 서버"라고 하는 다른 머신으로 포워딩 된다.
- 포워딩 : 무언가를 "패스 또는 넘겨주는 것"을 의미하는데, 이 경우에는 서버가 클라이언트를 다른 서버로 '연결을 넘겨주는 것'을 의미한다.
룸이란 매칭을 통해 연결된 가상의 공간으로, 룸 안에서 모든 사람은 다른 사람이 보낸 것을 수신한다.
룸 안으로 들어가는 가장 좋은 방법은 무작위 매치메이킹이다.
-> 가장 빠르고 간단하게 연결할 수 있다.
모든 룸은 식별자로 이름을 가지고 있어서 이름으로 룸에 참여할 수 있다.
마스터 서버는 앱으로 룸의 목록도 제공할 수 있다.
로비는 마스터 서버에 존재하고 게임의 룸 목록을 제공한다.
플레이어를 식별하기 위해 자신만의 AppId 를 가지고 있다.
플레이어들은 동일한 AppId 를 가진 클라이언트들의 플레이어들과만 만날 수 있다.
"게임 버전"을 통해 이전 버전의 클라이언트와 새로운 버전의 클라이언트 플레이어를 분리할 수 있다.