Photon Unity Networking (PUN)은 셋업하기 정말 쉽습니다. PUN 을 새로운 프로젝트에 임포트 하면 PUN Wizard 가 팝업창으로 나타납니다. 이메일 주소를 입력하여 새로운(무료)Photon Cloud 계정으로 등록 하시거나 필드에 기존의 AppId 를 붙여넣기 하세요. 완료 되었습니다.
나만의 Photon Server 를 호스트 하고 싶으면 "skip"을 클릭하고 아래처럼 PhotonServerSettings 을 편집하시기 바랍니다.
접속하려면 코드에서 PhotonNetwork.ConnectUsingSettings() 만 호출 해주면 됩니다. 추가적인 제어를 해야 하는 상황이라면 아래의 Connect Manually 를 보시기 바랍니다.
PUN Wizard
PhotonServerSettings
Wizard 는 설정을 저장하기 위해 프로젝트의 PhotonServerSettings 파일에 내용을 추가 합니다. 또한 이 파일은 서버 설정이 저장되는 곳 입니다.
PhotonServerSettings in Inspector
AppId 와 Photon Clound 지역등을 설정 할 수 있습니다. 클라이언트의 Game Version은 코드에서 설정됩니다. 가장 중요한 옵션은 호스팅 타입을 선택하는 것 입니다.
호스팅 타입
Hosting Type 에서는 어떤 서버가 게임을 제어할 것인지와 기타 설정들을 구성 합니다.
Photon Cloud 와 Best Region 는 우리의 매니지드 클라우드 서비스와 관계 있습니다. 특정 지역을 선택하거나 클라이언트가 ping 이 가장 빠른 지역을 선택하도록 할 수 있습니다.
Photon Server 를 직접 운영하고 있다면 Self Hosted 를 선택하세요. 설정 방법은 아래에 설명 되어 있습니다.
Select Self Hosted, if you run a Photon Server somewhere. The setup is explained below.
클라이언트도 같이 오프라인 모드로 설정 할 수 도 있습니다.
Best Region 호스팅
Best Region 모드는 앱이 최초 시작할 때 알고 있는 지역에 대해서 모두 ping 을 해 봅니다. 이렇게 하면 시간이 좀 걸리겠지만 PlayerPrefs 내에 결과 값이 저장됩니다. 이렇게 해서 연결 시간을 단축 할 수 있습니다.
특정 지역에 대해서 접속시 사용하지 않도록 설정 할 수 있습니다. 클라이언트가 좁은 지역에 분산되면 한 지역에는 더 많은 플레이어가 참여 하게 되는 결과가 됩니다. 이렇게 하면 게임이 더 인기가 있을 수 있는 이점이 될 수 있습니다.
PhotonNetwork.OverrideBestCloudServer() 를 이용하여 사용할 다른 지역을 정의 합니다.
Self Hosting
Photon Server를 호스트 하고 있다면 Photon Server의 주소와 포트를 PhotonServerSettings 에서 설정 해 주어야 합니다. 설정이 올바르게 되었을 때 소스코드에서 PhotonNetwork.ConnectUsingSettings() 를 호출 할 수 있습니다.
클라이언트가 입력한 주소에 접속 할 수 있는 지 확인 해 보세요. 주소는 public IP, 고정IP , 호스트명 또는 클라이언트가 사용하고 있는 네트워크 내 주소가 될 수 있습니다.
포트는 선택한 프로토콜에 따라 달라지게 되므로 두개의 필드가 일치하는 지 확인해 보세요. 기본 포트로 리셋하려면 그 필드를 Clear 하시면 됩니다.
프로토콜
여기에서의 기본값은 (신뢰)UDP 이지만 Photon 은 TCP 를 사용할 수 있고 신뢰 HTTP 프로토콜도 사용할 수 있습니다.
UDP 를 이용하는 것을 권고 합니다 PUN+는 TCP를 지원하지 않습니다. WebGL 익스포트는 WebSockets 에서만 동작합니다.
클라이언트 설정
클라이언트 설정은 프로젝트별로 설정하는 것으로 몇 가지의 옵션들이 있습니다.
Auto-Join Lobby를 체크하면 PUN 은 클라이언트가 연결(또는 룸을 빠져나올 때)시에 기본 로비로 자동 참가 하도록 해줍니다. Photon 의 로비는 현재 룸의 목록을 제공 해주어 플레이어들이 참여할 방을 선택 할 수 있게 해줍니다. 무작위 매치메이킹 사용을 위해서 플레이어가 방을 선택하는 것은 기본적으로 꺼져 있으며 모든 데모에서도 이 옵션이 꺼져 있는 것을 이용 하고 있습니다.
Enable Lobby Stats 를 사용할 수 있도록 하여 서버로 부터 로비의 통계를 받습니다. 게임이 여러개의 로비를 사용하는 경우 플레이어 들의 현재 활동 내역을 보기 원할 때 매우 유용하게 사용 됩니다. 로비의 이름, 타입, 룸과 플레이어 수에 대한 정보를 얻을 수 있습니다. PhotonNetworking.LobbyStatistics 을 참고 하세요.
이러한 설정들은 PUN v1.60 에서 처음 소개 되었습니다.
RpcList
Remote Procedure Calls 은 룸 안에 있는 모든 클라이언트의 메소드를 호출 할 수 있게 합니다. PUN 은 PhotonServerSettings 에서 이러한 메소드들의 목록을 보관합니다. 초기 셋업에서 이것은 의미가 없습니다.Remote Procedure Calls 을 참고 하세요.
수동으로 접속
PhotonNetwork.ConnectUsingSettings() 대신에 PhotonNetwork.ConnectToMaster() 을 사용하여 자신의 Photon Server 에 접속 할 수 있습니다. Photon OnPremise 를 호스트 하고 있거나 LAN 세션을 위한 Redistributable 서버를 제공하고 있는 경우 유용합니다.
ConnectToMaster() 를 이용할 때 masterServerAddress 와 port 를 제공해야 합니다.
주소는 OnPremise DNS 이름 또는 IP 중의 하나 입니다. 주소에 콜론(:) 이후에 포트번호를 포함하거나 포트번호를 분리해서 전달 할 수 있습니다.
예:Photon Redistributable 의 런처는 마스터 서버의 주소값을 IP:Port 형태로 보여 줍니다. 플레이어들이 게임에서 이정보를 입력하기만 하면 됩니다.
ConnectToMaster() 는 두개의 파라미터가 더 있습니다: "appID" 와 "gameVersion" 입니다. 둘 다 Photon Clound 에 해당 되지만 자체적으로 Photon 을 호스트 하고 있는 어떤 값으로도 설정 할 수 있습니다.
Photon Cloud 에서는 ConnectUsingSettings() 을 사용 하세요. 이 메소드는 자동적으로 지역의 마스터 서버를 찾을 수 있도록 하는 네임 서버가 포함되어 있습니다.