Photon의 개념
Photon 연결할 때 App ID를 입력하고 연결하면 생기는 셋팅
이 중 App ID가 같을 때는 같은 네트워크를 사용한다는 뜻
- 포톤 서버에는 룸과 로비의 개념이 있음
- 룸은 네트워크 게임을 실행할 수 있는 논리적인 공간
- 룸에 입장해야만 해당 룸에 접속한 다른 유저와 통신이 가능
- 로비에 입장하려면 로비 입장 함수를 호출해야 로비에 입장 가능
- 로비는 현재 룸이 생성되었는지에 대한 정보를 수신받을 수 있음
- 룸이 목록을 받아와 특정 룸에 입장이 가능
Photon 통신을 위한 콜백함수
함수 이름 | 호출 조건 |
---|---|
OnConnectedToMaster() | 포톤 서버에 접속 후 호출되는 콜백 함수 |
OnJoinedLobby() | 로비에 접속 후 호출되는 콜백 함수 |
OnJoinRandomFailed(short returnCode, string message) | 랜덤 룸 입장 실패했을 때 호출되는 콜백 함수 |
OnCreatedRoom() | 룸 생성이 완료된 후 호출되는 콜백 함수 |
OnJoinedRoom() | 룸에 입장한 후 호출되는 콜백 함수 |
OnDisconnected(DisconnectCause cause) | 연결이 끊겼을때 호출되는 콜백 함수 |
OnPlayerEnteredRoom(Player newPlayer) | 현재 룸에 새로운 유저가 들어왔을때 호출되는 콜백 함수 |
OnPlayerLeftRoom(Player otherPlayer) | 현재 룸에 유저가 나갔을때 호출되는 콜백 함수 |
Photon 주요 메소드, 프로퍼티
이름 | 종류 | 설명 |
---|---|---|
PhotonNetwork.AutomaticallySyncScene | 프로퍼티 | 같은 룸의 유저들에게 자동으로 씬을 로딩할 것인지 |
PhotonNetwork.GameVersion | 프로퍼티 | 게임 접속 버전 ( 같은 버전의 유저끼리 접속 허용) |
PhotonNetwork.NickName | 프로퍼티 | 객체의 닉네임 |
PhotonNetwork.SendRate | 프로퍼티 | 포톤 서버와 통신 횟수 |
PhotonNetwork.ConnectUsingSettings() | 메소드 | 서버 접속 |
PhotonNetwork.JoinLobby() | 메소드 | 로비 입장 |
PhotonNetwork.JoinRandomRoom() | 메소드 | 랜덤 매치메이킹 |
PhotonNetwork.CreateRoom(“룸 이름”, 룸 속성(Default: null)) | 메소드 | 속성을 가진 룸 생성 |
PhotonNetwork.JoinRoom(“룸 이름”) | 메소드 | 해당 이름을 가진 룸에 입장 |
PhotonNetwork.InLobby | 프로퍼티 | 로비에 접속 되었는지 |
PhotonNetwork.CurrentRoom | 프로퍼티 | 현재 룸의 정보 |
PhotonNetwork.InRoom | 프로퍼티 | 룸에 접속 되었는지 |
PhotonNetwork.Instantiate(“Prefab 이름”, position, rotation, 0) | 함수 | 포톤 Instantiate |
Photon View 스크립트
네트워크에 접속한 플레이어간 데이터를 송수신해주는 통신 모듈로, 동일한 룸에 입장한 다른 플레이어에게 자신의 위치와 회전 정보를 동기화 해주며, 특정한 데이터를 송수신 가능하며 네트워크 개체당 한개만 사용할 것을 권장. (네트워크 대역폭과 성능상의 이유로)
Synchronization: 동기화 처리를 어떻게 할 것인지 기능에 따라 성능이 달라짐
속성 | 설명 |
---|---|
Off | 동기화 처리 X. RPC 호출만을 위한 PhotonView에 적합 (RPC: 원격 프로시저 호출 물리적으로 떨어져있는 다른 디바이스간의 함수를 호출하는 기능) |
Reliable Delta Compressed | 마지막 데이터가 변경되지 않았을 때 데이터 송신 X |
Unreliable | 패킷의 수신 여부를 확인 X |
Unreliable On Change | UnReliable과 동일하며 변경사항이 발생했을 때만 송신 |
Phton Transform View 스크립트
플레이어의 위치, 회전값을 동기화하기 위한 모듈
Synchronize Options: 체크되어있는 옵션을 동기화해라
Use Local: 동기화하는 데이터가 Local 기준인지
Photon Animator View
애니메이터 컴포넌트를 동기화해주는 모듈
애니메이터 정보를 읽어 레이어와 파라미터 값을 자동으로 동기화 해줌
Synchronize Layer Weights 애니메이션 동기화 횟수인것 같음
속성 | 설명 |
---|---|
Disabled | 안함 |
Discrete | 이산 |
Continuous | 연속 |