포톤
Exit Games에서 개발한 멀티플레이어 게임 개발을 위한 네트워크 엔진.
유니티 에셋스토어에서 에셋처럼 임포트하여 사용할 수 있음
특징
실시간 클라우드 호스팅: Photon Cloud에 분산되어 호스팅.
멀티플레이어 지원: Unity 3D를 사용하는 모든 종류의 룸 기반 멀티플레이어 게임을 위한 견고한 기반을 제공.
크로스 플랫폼 지원: 모바일, 데스크탑, 웹, 콘솔 등 다양한 플랫폼으로 게임을 내보낼 수 있음.
높은 확장성: PUN을 통해 개발된 게임은 Photon Cloud에서 자동으로 스케일링.
매치메이킹 API: 랜덤 매치메이킹 또는 조건 검색을 통해 플레이어를 매치시킬 수 있으며, 오픈룸 목록을 작성하여 플레이어를 선택할 수도 있음.
커스터마이즈 가능: 다양한 종류의 룸 기반 게임을 개발할 수 있으며, FPS, 아케이드 슈팅, RPG, 전략 시뮬레이션, 레이싱, 스포츠, MOBA 등 어떤 액션 게임도 지원.
클라이언트 서버 간 통신: 다양한 환경에서 작동하며, UDP, TCP, HTTP, Websocket 등 다양한 환경을 지원하며 펀치스루 문제를 해결.
탁월한 유연성: iOS Game Center, Google Play Services, Facebook 인증 및 사용자 정의 인증을 통한 다양한 로그인 및 백엔드 시스템 통합을 지원.
주요 컴포넌트
PhotonView:
PhotonView는 Photon 네트워크에서 객체를 식별하고 동기화하는 데 사용.
이 컴포넌트를 게임 오브젝트에 추가하면 해당 오브젝트가 네트워크를 통해 다른 플레이어들과 동기화됨.
PhotonView는 주로 Transform 컴포넌트와 같이 사용자 정의 스크립트와 함께 사용.
예를 들어, 다른 플레이어가 원격으로 제어하는 캐릭터의 위치와 회전을 동기화하려면 PhotonView를 해당 캐릭터에 추가하고 PhotonView가 참조하는 Transform 컴포넌트의 변경 사항을 자동으로 동기화함.
PhotonTransformView:
PhotonTransformView는 게임 오브젝트의 위치, 회전 및 크기를 동기화하는 데 사용.
이 컴포넌트는 PhotonView와 함께 사용하여 게임 오브젝트의 움직임을 네트워크를 통해 동기화함.
예를 들어, 다른 플레이어의 캐릭터가 움직일 때 그 위치와 회전을 다른 플레이어에게 동기화하려면 PhotonTransformView를 해당 캐릭터에 추가하면 캐릭터의 움직임이 다른 플레이어에게 정확하게 반영되어 다른 플레이어가 캐릭터의 위치와 회전을 올바르게 볼 수 있음.
PhotonAnimatorView:
PhotonAnimatorView는 Animator 컴포넌트를 동기화하는 데 사용됨.
이 컴포넌트를 PhotonView와 함께 사용하여 캐릭터의 애니메이션 상태와 변수를 네트워크를 통해 동기화할 수 있음.
PhotonRigidbodyView:
PhotonRigidbodyView는 Rigidbody 또는 Rigidbody2D 컴포넌트를 동기화하는 데 사용.
이 컴포넌트를 PhotonView와 함께 사용하여 게임 오브젝트의 움직임 및 회전을 네트워크를 통해 동기화할 수 있음.
Photon 시작하기
PUN2 동기화 방법
객체 동기화:
원격 프로시저 호출 (RPC, Remote Procedure Call):
커스텀 프로퍼티:
동기화 방식 선택:
갱신이 빈번한 경우: PhotonView
갱신이 드문 경우: RPC
갱신이 아주 드문 경우: Custom Properties