자료실

PUN v2:Sample Package 소개
작성자 | admin 2021-05-24  |    조회수 : 114423  


Photon의 상품에는 실용적이고 간결한 최적의 샘플 및 교육 자료가 매우 많습니다.
이번에는 이를 정리하여 하나의 종합 소개서를 만들고, 이와 관련된 프로그램 코드 위치 및 다운로드 링크와 캡처 이미지를 첨부했으니, 시간이 되실 때 다운로드하여 즐겨보시면 멀티플레이어 프로그램 개념의 응용을 이해하는 데 큰 도움이 될 것입니다!



PUN v2의 기본 소개


  1. 기본적으로 PUN은 Unity 전용의 Plugins(또는 Asset, Package)이며, 현재 버전 번호는2.18.1(2020년 5월 현재) 버전에 달하고, 매우 안정적인 프로그램 운영과 레이어가 분명한 프로그램 구조가 특색입니다. 아직 PUN에 대해 익숙하지 않은 분들은 이전의 입문 소개를 참고하시기 바랍니다.
  2. 운영에 있어 PUN v1과 PUN v2의 기능상의 차이는 크지 않으며, 이 글에서 따로 PUN v1을 언급하지 않은 경우, PUN v2를 뜻합니다.


PUN V2의 샘플 리스트


PUN v2의 샘플 리스트



위 그림을 보면, 이번에 PUN v2가 Demos를 Assets →Photon 안의 PhotonUnityNetworking , PhotonChat, PhotonRealtime의 목록 안으로 각각 나누어 넣었음을 확인할 수 있습니다. 이로써 확인할 수 있는 샘플은 아래와 같습니다.
  1. Demo Asteroids
  2. Demo Hub
  3. Demo Procedural
  4. Demo Slot Racer
  5. PunBasics-Tutorial
  6. PunCockpit
  7. LoadBalancing Demo
  8. Chat Demo

풍성하고 탄탄한 내용의 Basic Tutorial과 Demo Package 소개를 읽어보세요~


PUN v2 시작 가이드



이 안의 교육 자료는 하나의 빈 프로젝트로 시작하여 각 과정을 하나씩 진행해 갑니다. 이 과정을 통해 온라인 게임의 개념과 자주 발생하는 오류 및 설계 시 고려해야 하는 요소들을 설명합니다. 아직 PUN에 대해 익숙하지 않은 분들은 이를 한번 따라 해보시기를 권장합니다.
  1. 목록 위치: PhotonUnityNetworking\Demos\PunBasics-Tutorial
상세 절차에 관한 기술 문서 : https://doc.photonengine.com/ko-kr/pun/v2/demos-and-tutorials/pun-basics-tutorial/intro


시작 가이드의 설명 주제


원문(기술 문서)에는 총 9편의 튜토리얼이 준비되어 있으며, 언급하는 항목이 매우 많습니다. 예를 들어:
  1. Photon 구조에서 Game Room, Lobby, Regions의 개념
  2. Lobby UI, MatchMaking (클라우드 플레이어 매칭)의 설계
  3. Game Scene, Game Manager (Networking), Game Levels의 구조
  4. Player 및 Networking 부분, 예를 들어 Player Instantiation, UI Prefab 등의 조작
가이드에서는 플레이어가 사방으로 움직이는 것 외에, 기본적인 사격 시스템(사선) 및 플레이어의 체력(HP등) 컨트롤을 만들어, 전체 네트워크 안의 데이터 변화량에 동기화 연산 설계를 만드는 것에 도움을 줍니다.


게임 룸(Game Room)에 있는 플레이어 수에 따라 발생하는 크고 작은 경기장은, 현재 가입한 플레이어 수에 따라 경기장 크기를 조정하게끔 가이드에서 설명합니다. 이 개념은 배경 자동 동기화 기능의 몇 개 개념에 있어 매우 유용합니다.
  1. 다른 배경 로드 시 처리 방법
  2. 플레이어에게 알림
  3. 해당 상황에서 발생할 수 있는 오류 상황 알림


튜토리얼의 목표 및 절차

  1. 1. 게임이 시작되면 사용자는 네트워크 연결 프로트콜을 확인하고 해당 Client의 진도를 UI에게 알립니다.
  2. 2. 방에 입장하거나 방을 하나 생성하면 플레이어는 크기를 조정할 수 있는 경기장에 입장을 할 수 있으며, 1회에 최대 4명의 플레이어가 존재할 수 있습니다.
  3. 3. 플레이어는 뛰거나 커브를 돌 수 있으며, 총으로 사격할 수 있습니다.
  4. 4. 각 플레이어가 발사하는 빔(beam)이 다른 플레이어를 적중하면 해당 플레이어의 체력 손실에 영향을 줍니다.
  5. 5. 당신의 체력이 “0”이 되면 당연히 Game Over가 되며, 경기장에서 퇴장합니다.
  6. 6. 이후 다시 소개 화면을 보게 됩니다. 필요 시에 새로운 게임을 시작할 수 있습니다.
  7. 7. 위의 내용을 보셨다면 지금 시작하세요! 직접 해봐야 더 기억에 남는 법이죠!

PUN v2 Package 샘플


위에서 설명한 샘플 리스트 이미지를 보면, 대부분의 샘플이 다음 경로 하에 있음을 알 수 있습니다.

Assets\Photon\PhotonUnityNetworking\Demos


Asteroids Demo



목록 위치:
Assets\Photon\PhotonUnityNetworking\Demos\DemoAsteroids
  1. Unity가 제공하는 Network Meteoroid 샘플을 UNET에서 PUN 2로 포팅한 것입니다.
  2. 1~8명의 플레이어가 소행성을 파괴하는 경쟁에 함께 참여할 수 있습니다. 득점이 가장 높은 플레이어가 경기에서 승리합니다.

UNET에서 PUN으로의 포팅 과정에 대한 자세한 설명은 다음 링크를 참조하세요.
차후 더 자세한 설명을 업로드할 예정입니다~
https://doc.photonengine.com/ko-kr/pun/v2/demos-and-tutorials/package-demos/asteroidsdemo


Asteroids Demo의 실행 화면


Procedural Demo


목록 위치: Assets\Photon\PhotonUnityNetworking\Demos\DemoProcedural
  1. Photon Cloud를 사용할 때 프로그램으로 생성한 세계를 어떻게 처리하는지를 보여줍니다.
  2. 포인트는 생성한 세계의 동기화 처리 및 여러 클라이언트(Clients、Players)를 넘나드는 응용 프로그램의 수정입니다.

자세한 설명은 기술 문서 링크를 참조하세요. 차후 더 자세한 설명을 담은 글을 올릴 예정입니다~
https://doc.photonengine.com/ko-kr/pun/v2/demos-and-tutorials/package-demos/proceduraldemo


Procedural Demo의 실행 화면


Slot Racer Demo


목록 위치: Assets\Photon\PhotonUnityNetworking\Demos\DemoSlotRacer
  1. 1~4명의 플레이어가 경주로에서 각자의 미니카를 운행할 수 있습니다.
  2. 일반적인 “클래식” 위치 동기화가 아닌, 구동 거리(driven distance)를 사용해 궤도 위의 플레이어 차량을 동기화합니다.
  3. 멀티플레이어 설계에서 다양한 동기화 기술을 이해하는 것은 매우 중요한 포인트입니다!!

Slot Racer Demo의 실행 화면


PUN Cockpit Demo



목록 위치: Assets\Photon\PhotonUnityNetworking\Demos\PunCockpit
  1. Region pinging, 연결 프로세스, 게임 룸 생성 및 Game Room의 UI 관리 등을 제공하며, Slot Racer 샘플에 완벽하게 결합되어 있습니다.
  2. 이 샘플을 사용하려면, 반드시 먼저 PunCockpit-Scene 및 SlotCar-Scene을 Build Settings에 추가하여 설치한 후 Slot Racer를 실행해야 해당 샘플의 화면을 확인할 수 있습니다!


PUN Cockpit Demo의 실행 화면


기타 PUN v2 Package 샘플



LoadBalancing


위치: /Photon/PhotonRealtime/Demos/DemoLoadBalancing/
  1. 이 LoadBalancing 샘플은 로 레이어(Low Layer)의 Realtime API를 직접 사용하는 방법을 이해하는 것에 대해 중점을 두고 있습니다.
  2. PhotonRealtimeDemos 아래에 있으니, 위치를 잘 확인하세요~

Chat


위치: /Photon/PhotonChat/Demos/DemoChat/
  1. PUN Classic (v1)에서 가져온 샘플이며 Photon Chat API를 사용하여 간단한 채팅방 작업을 보여줍니다. 정말 매우 간단합니다. :)
  2. PhotonChatDemos 아래에 있으니, 위치를 잘 확인하세요~

Other Package Demos



기타 관련 Demo도 시간 날 때 한 번씩 둘러보세요.

Viking Multiplayer Showcase (for PUN v1)


https://assetstore.unity.com/packages/tools/network/photon-viking-multiplayer-showcase-1846
  1. 해당 샘플은 조금 오래되었지만, 많은 사람들이 MMO에 대한 Photon의 지원에 대해 문의하시는 관계로, 다음 showcase를 간략하게 소개하겠습니다.
  2. 이것은 Unity 공식 제3인칭 MMO 컨트롤러로 수정한 것으로써, PUN v1을 사용해 기존의 프로젝트에 멀티플레이어 게임 기능을 추가하는 방법을 배울 수 있습니다. 또한 Unity Networking의 편의성을 이해할 수 있으며, Photon Cloud의 성능과 신뢰성을 종합하여 게임을 더 쉽게 확장할 수 있습니다!!
  3. 현재 지원 버전은 PUN v1 (v1.93.5) 버전입니다.


Viking Multiplayer Showcase

VR Shooting Range (for PUN v2)


https://assetstore.unity.com/packages/templates/tutorials/vr-shooting-range-photon-85121
  1. PUN v2로 생성한 VR사격+멀티플레이어 게임으로, PUN 및 게임이 모두 포함되어 있으니 바로 다운로드하면 됩니다.
  2. 모든 주요 VR 패키지와 수동 컨트롤러를 지원하므로, 관심 있는 분들은 체험해보셔도 좋습니다~


VR Shooting + 멀티플레이어 게임의 시작 프로젝트


Photon Voice 2 (독립 또는 PUN v2와 함께 사용 가능)


https://assetstore.unity.com/packages/tools/audio/photon-voice-2-130518
  1. 새로운 버전의 Photon Voice 2 는 PUN v2 또는 기본 Photon Realtime SDK, 혹은 강력한 Photon Bolt와 결합하거나, 독립적으로 사용할 수 있습니다. 멀티플레이어 게임이든 VR/AR/MR의 응용이든, 모두 손쉽게 Photon Voice를 추가하여 음성 전송 기능을 구현할 수 있습니다!!
  2. Photon Voice 2 관련 튜토리얼에 대해서는 따로 소개할 예정이며, 이번 편은 샘플 Package에 대한 소개이니, Photon Voice 2를 다운로드하고 Unity에 설치하면 목록에서 게임 샘플을 찾아볼 수 있습니다. 어서 확인해보세요^^~


Photon Voice 2 안의 게임 샘플 (및 Unity 공식 배경 및 리소스)


요약:

  1. 위 내용, 즉 Photon의 상품 안에는 PUN v2의 공식 샘플 및 기타 관련 샘플 정리와 소개가 포함되어 있습니다. 여러분께서는 프로그램 코드와 프로세스를 참고하여 자유롭게 변형하거나 조합할 수 있으며, 멀티 플레이어 게임 설계 주제에 대해 앞으로 더 자유자재로 사용할 수 있게 될 것입니다~
  2. 저희 Photon Taiwan(+Korea)의 존재가 여러분들이 해당 예시와 멀티플레이어 프로그램의 구조를 보다 쉽게 배우는 데 도움이 되길 바라며, 함께 특색있는 온라인 게임을 만들어나갈 수 있기를 기원합니다!!


이 기사의 설명에 대해 궁금한 점이 있으면 저희의 페이스북 혹은 메일로 문의해주세요.


한국 페이스북 페이지 : https://www.facebook.com/photoncloudkr/
기술관련 문의사항 : developer@photonengine.kr
그 외 문의사항 : info@photonengine.kr


출처 : Hu 씨의 Photon 블로그 이야기 (대만)