[Unity]TIL (52) | 2023.10.10 | 유니티 포톤

kjg5370·2023년 10월 10일
0

TIL

목록 보기
52/91
post-thumbnail

들어가기 앞서

유니티에서 멀티플레이를 만드는데 포톤이라는 네트워크 엔진을 이용하여 하는 방법에 대해 알게 되었습니다.
포톤의 특징이나 기능들이 뭐가 있는지 짦게 정리해보려고 합니다.

오늘 배운 것

  • 포톤
    Exit Games에서 개발한 멀티플레이어 게임 개발을 위한 네트워크 엔진.
    유니티 에셋스토어에서 에셋처럼 임포트하여 사용할 수 있음

  • 특징

    • 실시간 클라우드 호스팅: Photon Cloud에 분산되어 호스팅.

    • 멀티플레이어 지원: Unity 3D를 사용하는 모든 종류의 룸 기반 멀티플레이어 게임을 위한 견고한 기반을 제공.

    • 크로스 플랫폼 지원: 모바일, 데스크탑, 웹, 콘솔 등 다양한 플랫폼으로 게임을 내보낼 수 있음.

    • 높은 확장성: PUN을 통해 개발된 게임은 Photon Cloud에서 자동으로 스케일링.

    • 매치메이킹 API: 랜덤 매치메이킹 또는 조건 검색을 통해 플레이어를 매치시킬 수 있으며, 오픈룸 목록을 작성하여 플레이어를 선택할 수도 있음.

    • 커스터마이즈 가능: 다양한 종류의 룸 기반 게임을 개발할 수 있으며, FPS, 아케이드 슈팅, RPG, 전략 시뮬레이션, 레이싱, 스포츠, MOBA 등 어떤 액션 게임도 지원.

    • 클라이언트 서버 간 통신: 다양한 환경에서 작동하며, UDP, TCP, HTTP, Websocket 등 다양한 환경을 지원하며 펀치스루 문제를 해결.

    • 탁월한 유연성: iOS Game Center, Google Play Services, Facebook 인증 및 사용자 정의 인증을 통한 다양한 로그인 및 백엔드 시스템 통합을 지원.

  • 주요 컴포넌트

  1. PhotonView:

    PhotonView는 Photon 네트워크에서 객체를 식별하고 동기화하는 데 사용.

    이 컴포넌트를 게임 오브젝트에 추가하면 해당 오브젝트가 네트워크를 통해 다른 플레이어들과 동기화됨.

    PhotonView는 주로 Transform 컴포넌트와 같이 사용자 정의 스크립트와 함께 사용.

    예를 들어, 다른 플레이어가 원격으로 제어하는 캐릭터의 위치와 회전을 동기화하려면 PhotonView를 해당 캐릭터에 추가하고 PhotonView가 참조하는 Transform 컴포넌트의 변경 사항을 자동으로 동기화함.

  2. PhotonTransformView:

    PhotonTransformView는 게임 오브젝트의 위치, 회전 및 크기를 동기화하는 데 사용.

    이 컴포넌트는 PhotonView와 함께 사용하여 게임 오브젝트의 움직임을 네트워크를 통해 동기화함.

    예를 들어, 다른 플레이어의 캐릭터가 움직일 때 그 위치와 회전을 다른 플레이어에게 동기화하려면 PhotonTransformView를 해당 캐릭터에 추가하면 캐릭터의 움직임이 다른 플레이어에게 정확하게 반영되어 다른 플레이어가 캐릭터의 위치와 회전을 올바르게 볼 수 있음.

  3. PhotonAnimatorView:

    PhotonAnimatorView는 Animator 컴포넌트를 동기화하는 데 사용됨.

    이 컴포넌트를 PhotonView와 함께 사용하여 캐릭터의 애니메이션 상태와 변수를 네트워크를 통해 동기화할 수 있음.

  4. PhotonRigidbodyView:

    PhotonRigidbodyView는 Rigidbody 또는 Rigidbody2D 컴포넌트를 동기화하는 데 사용.
    이 컴포넌트를 PhotonView와 함께 사용하여 게임 오브젝트의 움직임 및 회전을 네트워크를 통해 동기화할 수 있음.

기억 할 것

  • PUN2 동기화 방법

    • 객체 동기화:

      • PUN에서는 네트워크에서 동작하는 게임 오브젝트를 생성할 수 있음.
      • PhotonView를 할당하면 게임 오브젝트의 위치, 회전 및 다른 값들을 원격으로 동기화할 수 있음.
      • OnPhotonSerializeView() 메서드를 구현하여 PhotonView를 관찰하고 위치 및 다른 값을 스트림에 쓰고 읽을 수 있음.
    • 원격 프로시저 호출 (RPC, Remote Procedure Call):

      • 룸 내의 모든 클라이언트가 메서드를 호출할 수 있도록 표시할 수 있습니다.
      • [PunRPC] 속성을 사용하여 메서드를 표시하고, photonView.RPC를 사용하여 모든 클라이언트에게 메서드를 호출할 수 있음.
      • RPC 호출은 특정 PhotonView를 대상으로 하므로 특정 객체에만 영향을 줄 때 유용.
    • 커스텀 프로퍼티:

      • Photon의 커스텀 프로퍼티는 키-값 쌍의 해시 테이블로 구성되며 클라이언트 간에 동기화되고 캐시됨.
      • SetCustomProperties() 메서드를 사용하여 값을 설정하고, 변경 사항은 다른 플레이어에게 푸시됨.
      • 커스텀 프로퍼티를 사용하면 게임 오브젝트와 무관한 속성 (예: 현재 맵 또는 플레이어 캐릭터의 색상)을 편리하게 관리할 수 있음.
  • 동기화 방식 선택:

    갱신이 빈번한 경우: PhotonView

    갱신이 드문 경우: RPC

    갱신이 아주 드문 경우: Custom Properties

내일 할 일

  1. 개인과제 완성
profile
학생입니다

0개의 댓글