자료실

Photon Bolt 기능 소개
작성자 | admin 2021-05-31  |    조회수 : 2049  


이번에 준비한 영상은 5개의 Unity 소형 프로젝트를 사용했으며, Photon Bolt가 가진 특정한 기능들을 하나씩 상세히 보여드리려 합니다. 예시는 다음과 같습니다.
  1. Lobby Manager
  2. Click and Move
  3. 100 Agents
  4. 2D Platform Movement
  5. RigidBody and Bullet

영상 :


Photon Bolt 특징 소개



Example 1 : Lobby Manager



Photon Cloud와 협력하여 Matchmaking, Punch-through, Global Relay 등의 메커니즘을 완성하여, 게임 로비의 일반적인 기능인 게임룸 선택, 플레이어 추방, 플레이어 개별 설정 등 기능을 지원합니다.



Bolt Lobby 예시에는 간단한 게임 로비 기능을 보유하고 있고, 그 기능은 다음과 같습니다:

  1. 신규 Bolt Session 생성, Session의 Name/ID 사용자 설정 가능
  2. 랜덤 Bolt Session에 가입
  3. 현재 속한 지역 (Region) 에서 모든 Bolt Sessions을 조회
  4. 게임에서 플레이어 추방 (kick Player)
  5. Bolt Session에 입장된 플레이어는 이름 또는 색상 선택 등 자료를 자체 수정 가능
  6. 플레이어마다 “Ready” 상태로 게임 시작 가능을 표시
  7. 로비 인원이 지정 인원수에 도달 시, 게임 시작 가능
  8. 게임 시작 전 카운트다운 시간을 동기화

Example 2: Click and Move


Server Authoritative는 Server에서 Pathfinding 경로 찾기 기능을 처리하며, Client는 객체의 동기화된 변위 상태를 받습니다.


Click and MoveClick and Move


Photon 공식 홈페이지에 해당 예시의 상세 제작 절차가 나와 있으니, 아래 주소를 참조하세요.
https://doc.photonengine.com/ko-kr/bolt/current/demos-and-tutorials/click-to-move



해당 예시의 주요 포인트는 아래와 같습니다.
  1. Top-Down Style Game, 마우스로 이동하고자 하는 목적지를 클릭하면 캐릭터는 자동으로 경로를 탐색하여 이동하고, 장면 상의 기타 물건 또는 기타 플레이어와 마주치거나 반응합니다.
  2. Unity에 내장 된 NavMesh를 사용하면 다양한 내장된 경로 찾기 기능을 사용할 수 있으며, Asset Store의 다른 경로 찾기 엔진과 함께 사용할 수도 있습니다.


Example 3: 100 Agents


네트워크로 동기화된 100개의 객체를 동시에, 그리고 매끄럽게 이동할 수 있습니다. Photon Bolt 설정값과 Bolt State 값을 적절히 조정하여 매우 쉽게 수많은 네트워크 객체의 동기화를 달성할 수 있습니다.

100 Agents100 Agents



해당 예시의 주요 포인트는 아래와 같습니다.
  1. Photon Bolt 각 항목의 네트워크 파라미터 및 BoltState, BoltCommand 등의 파라미터값을 조정하여 매우 쉽게 수많은 네트워크 객체의 동기화를 달성할 수 있습니다.
  2. Server에서 각 객체의 이동 방식을 결정하며, Unity에 내장된 NavMesh, Terrain, Physics (Collider,Trigger) 역시 Asset Store의 다양한 전문 경로 찾기(PathFinding) 패키지를 사용할 수 있습니다.


Example 4: 2D Platform Movement


Server Authoritative + Client Side Prediction
Server기반의 판단으로 Client의 사전 연산을 수행합니다.

2D Platform Movement2D Platform Movement



해당 예시의 주요 포인트는 아래와 같습니다.
  1. Server Authoritative + Client Side Prediction, Server에 기반한 물리적 또는 행위적 판단이며, Client에서도 사전 연산을 수행합니다.
  2. Client에서 플레이어의 key input (A/W/D) 값을 수신하고, 네트워크인 Bolt Server에 전송합니다.
  3. Client는 Server에서 계산 완료 후 전송된 Position 자료를 수신하고, Server의 네트워크 업데이트를 대기하면서 Jump, Velocity, Left / Right 및 is Grounded의 계산 등을 Client에서도 사전 처리를 수행합니다. Client의 계산 방식은 기본적으로 Server와 동일하므로, 하나의 Code만 유지 보수하면 됩니다.


Example 5: RigidBody and Bullet


RigidBody Server Authoritative, Bullet Client Side Prediction.
탱크의 물리 충돌 행위는 Server에서 처리하며, 총알의 물리 행위는 Client에서 사전 연산을 수행합니다. 만약 이후 Server로부터 보내온 결과와 불일치할 경우, 즉시 Server와 같은 연산 값으로 수정됩니다.


RigidBody and BulletRigidBody and Bullet



해당 예시의 주요 포인트는 아래와 같습니다.
  1. Server Authoritative: 탱크의 물리 충돌 행위는 Server에서 처리
  2. Client Side Prediction: 총알의 물리 행위는 Client에서 가짜(fake)의 Game Object를 생성하고, Client에서 사전 연산을 수행합니다. Server측에서 실제 Bolt Entity 네트워크 객체를 생성하면 Client는 일부 데이터를 동기화하여 총알이 비행할 때 지연이 없는 것처럼 보이게 하고, 결과도 Server와 일치하도록 합니다.


Photon Bolt로 만들기에 적합한 게임 유형


사용하기 적합한 유형 및 주의사항을 나열했습니다.

FPS/TPS:

  1. Authoritative 형식의 제1/3인칭 등 사격 게임은 Photon Bolt의 핵심 목표군입니다.
  2. 예를들면 PUBG, Fortnite 유형의 게임 입니다.
  3. Gamelift (AWS) 또는 Multiplay(Unity) 등과 같은 클라우드 서비스와 같이 쓸수 있습니다 (주로 Unity에서 빌드한 프로그램을 배치할 수 있는 장소).

Battle:

  1. 일반적으로 Bolt로 구축한 내장 시스템은 최대 40~50명 플레이어의 동시 대전 진행을 지원할 수 있습니다.
  2. 예를 들면 Battle-Royale, 생존 유형의 게임이 있습니다.
  3. 더 많은 플레이어 수(>50)를 지원하려면, 조금의 테크닉과 Bolt의 Scoping을 적용하면 됩니다.

Action:

  1. Authoritative 유형의 액션 게임, 호스트에서 Unity App을 실행하는 형식입니다.
  2. Matchmaking / Room 등의 협력을 달성하기 위해, Zeuz.io, Playfab, Multiplay(Unity) 등과 같은 새로운 유형의 클라우드 서비스를 고려해야 합니다.

전용 서버가 필요하지 않은 유형의 게임 (No Dedicated Server Needed):



누군가 게임 내의 데이터를 수정할 위험이 적고, Unity에서 빌드한 게임 프로그램을 배치하기 위해 특별한 호스트가 필요하지 않기 때문에, 일반적인 개발 방식을 사용하면 됩니다. 일반적으로 아래와 같은 유형이 있습니다.
  1. VR/AR/MR 유형의 XR 게임
  2. Party Game
  3. Action / RPG 유형 게임, Co-op 유형 게임
  4. MineCraft 유형, 협력, 건축형, Builder 형식의 게임


국외 게임 성공 사례



~이미 출시된 여러 유형의 멀티 플레이 게임~


요약


  1. Photon Bolt를 사용하여 온라인 게임을 설계하는 것은 좋은 착안점이 될 것입니다. 현재 저희 공식 홈페이지에는 다양한 설명 자료가 게재되어 있으며, 상세히 읽어보면 추후 기타 네트워크 엔진을 접하게 되었을 때, 마찬가지로 자유자재로 운용할 수 있을 것입니다.
  2. 저희 Photon Taiwan(+Korea)의 존재가 여러분들이 이 강력하고도 우수한 제품을 사용하시는 데 도움이 되기를 바라며, 함께 특색있는 온라인 게임을 만들어나갈 수 있기를 기원합니다!!



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


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