Photon Bolt는 매우 강력한 네트워크 연결 패키지로, 현재 Unity를 게임 개발 도구로 사용하고 있는 개발자들이 주로 사용하고 있으며, 해외 커뮤니티 교류도 활발히 진행되고 있습니다. 가장 중요한 성공 포인트는 복잡한 네트워크 기능을 모두 합쳐 간단하고 편리한 조작 인터페이스 및 API로 구현해냈다는 점입니다.
Bolt의 안정 버전은 이미 출시된 지 오랜 시간이 지났습니다. 하지만 예전엔 유료 버전만 있었고, 또 Bolt는 같은 시기에 존재한다른 네트워크 연결 상품과 개념적으로 다른 부분이 많았기에, 초보자가 접근하기 어려운 면이 있었습니다. 그렇다 보니 일반적인 홍보 부분에 있어 진행이 느린 편이었습니다.
🎉좋은 소식은 현재 Bolt의 Free 버전이 출시되었고 게다가 Photon Cloud의 클라우드 구조를 결합했습니다. 요즘은 네트워크 연결 게임이 많이 발전했기에, 여러분들도 다양한 유명 네트워크 연결 게임을 즐겨보았으리라 생각됩니다. 저희는 오늘이 패키지가 가진 특별한 운용 체제에 대해 더 쉽게 이해하게끔 설명을 드리고, 또 이를 통해 어떤 것부분을 실현 할 수 있는지를 토론해 보겠습니다!! 😃 어서 함께 살펴봅시다~
Photon Bolt (Free)의 Unity Asset Store 위치:
https://assetstore.unity.com/packages/tools/network/photon-bolt-free-127156
Photon Bolt 공식 홈페이지의 소개:
https://www.photonengine.com/ko-kr/BOLT
Photon Bolt의 특별한 기능
정말 많은 기능이 있으니, 천천히 살펴보세요. 추후 개발에 분명히 도움이 될 것입니다~
강력한 이벤트 시스템(Event System)
- BOLT에 내장된 이벤트 시스템으로, 이벤트를 확실한 수신자에게 분배할 수 있고, 자유롭게 또는 자동으로 설정할 수 있습니다.
- 이벤트를 특정 게임 오브젝트(GameObject)에서 발생하도록 설정하거나 전역(Global)에서 발생하도록 설정할 수 있습니다.
- 이벤트는 네트워크의 전송 방식을 다음 세 모드로 미세 조정 가능: Unreliable (가장 빠름), unreliable synchronization and reliable (가장 안정적)
마스터 슬레이브식 구조를 위한 설계(Authoritative)
- 만약 개발하고자 하는 것이 마스터 슬레이브식 구조의 게임이라면, 분명 내장된 모션 예측 및 지연 보상 기능을 마음에 들어 하실 겁니다. 이건 Bolt의 독자적인 특색이니까요!!
- 마스터 슬레이브식 구조와 Photon Cloud를 결합한 운용에 대해선 후반부에 곧 언급될 예정입니다~
Authoritative 구조의 Command Input 및 Result의 설정 화면
상태 자동 복제(Status Replication)
- 게임의 네트워크 객체, 타입 변환 및 사용자 정의 내용(Custom Properties)을 자동 복제하므로, 직접 코드를 작성할 필요가 없습니다.
- 모든 항목을 비주얼 편집기(Editor)를 통해 설정 및 읽어오므로, 데이터 유형, 사용자 정의 내용, 압축 방식 및 전송 방식을 상세하게 정의할 수 있습니다.
상태 자동 복제(Status Replication), 사용자 정의 Data Type 내용
Mecanim 애니메이션 자동 복제
- 모든 애니메이션 Animation의 설정은 자유롭게 Bolt 편집 화면으로 도입하여 세부 조정 및 네트워크 전송 방식을 설정할 수 있습니다.
Mecanim 애니메이션 자동 복제
- 네트워크를 통해 Mecanim 애니메이션을 자동으로 복제할 수 있습니다.
- 프로그램 코드 수정 없이 모든 캐릭터의 위치, 회전 등 자료(Transform)를 동기화할 수 있으며, 전송(Replication) 방식 역시 정의할 수 있습니다.
네트워크에서 Mecanim 애니메이션 자동 복제
우선권 및 범위 설정(Prioritization and Scoping)
- Bolt는 Entity의 범위 설정 및 우선순위의 범위 설정을 지원합니다.
- 즉, 배경에서 어떤 Entity를 유저가 주의해야 하는 것인지(처리해야 하는 것인지), 또는 다른 Entity에 대해 어떤 Entity가 기타 Entity보다 중요한지, 더 우선하여 처리해야 하는 것인지 설정할 수 있습니다.
- 큰 범위 배경에서 어떤 것을 우선하여 처리해야 하는지, 어떤 것은 처리하지 않아도 되는지를 구분하여, 네트워크로 전송하는 데이터양을 효과적으로 감소할 수 있습니다.
지연 보상/히트 박스 기록 (Lag Compensation / Hitbox Recording)
- Bolt에는 객체의 히트 박스 기록 기능이 내장되어 있으므로, 복구 또는 이에 대한 사선 처리를 진행할 수 있습니다. (Ray-Casting)
- 이처럼 우리가 복잡한 기술을 실습할 수 있게 하며, 예를 들어 1인칭 사격자가 정말로 목표 물체(네트워크상의)를 명중했는지, 즉시 Ray-Cast 판단을 진행하고, 네트워크 지연 보상 효과를 달성합니다.
데디케이티드 및 리슨 서버 (Dedicated Server & Listen Server)
- Bolt는 전통적이고 일반적인 Dedicated Server 및 Listen Server 구조를 지원합니다. 즉, Server의 프로그램이하나의 플레이어(Player)이거나 아니어도 괜찮으며, Server 프로그램 자체 또한 Bolt 패키지로 Build한 Unity App입니다.
- Session discovery는 당신의 게임 Client가 LAN에서 이미 실행된 게임 서버를 자동으로 찾게 할 수 있습니다.
네트워크 씬 로딩 (Networked Scene Loading)
- 네트워크 관련 씬을 자동으로 동기화 로드하여, 모든 사용자가 하나의 게임 구역에서 게임을 진행하도록 합니다.
- Server에서 자동으로 맵/씬을 로드하거나, 모든 플레이어가 같은 씬을 로드한 후 플레이어가 Server에 준비를 완료했는지 등의 CallBack API를 알리는 것을 지원합니다.
중요 Unity 플랫폼 지원
- Bolt는 Windows, OSX, iOS, Android, GNU/Linux, and Xbox One에서 실행할 수 있습니다. PS4 및 Nintendo Switch는 현재 개발 중이며, 필요하신 분은 따로 문의 바랍니다.
클라우드 매치 메이킹 (Cloud Matchmaking)
- 파라미터 검색 또는 게임 중 랜덤 매칭을 통해 유저를 매칭하며, 기능 특징은 PUN과 유사합니다.
- Room 리스트를 개방하여 플레이어가 선택할 수 있게 합니다.
클라우드 전송 (Cloud Relay)
- 당신의 게임에 연결하지 못하는 플레이어는 없을 것입니다.
- 플레이어가 직접 연결할 수 없는 경우, Bolt는 Photon Cloud를 통해 완벽하게 데이터를 전송할 것입니다.
그럼 이제 잠시 쉬어가도록 하고, 후반부에 다시 전체적인 구조를 살펴보도록 합시다~☕️
Photon Bolt & Photon Cloud의 운영 구조
이제 Bolt와 Photon Cloud 사이의 운영 로직을 살펴보도록 합시다~
- Host creates room
Host는 Bolt를 기반으로 만들어진 Unity App으로, 이것은 Player일 수도, 아닐 수도 있습니다. - Clients join room
플레이어가 게임 룸에 입장할 때, Client가 바로 Bolt를 기반으로 만들어진 Unity App입니다.😏 - Punch attempt mediated by room (Signaling)
Bolt와 Photon Cloud는 자동으로 협조하여 네트워크 NAT 탐색을 수행합니다. - Direct (punched) connect established
Punch 성공 시 두 대의 기계는 직접 연결되어 게임을 진행합니다. 이때 발생하는 네트워크 지연(latency)은 이 두 대의 기계 자체의 네트워크 상황에 따르며, 기타 기계기계는 의존하지 않습니다. - (3)번 스텝 실패 시, 자동으로 (2)번 스텝에서 만들어진 room을 통해 전송합니다.
이때 네트워크의 latency는 조금 더 증가하지만, Photon Cloud는 게임 데이터를 완벽하게 전송할 것을 보증합니다.
Photon Bolt & Photon Cloud의 상용 상황 및 구조
BOLT의 강력한 구조는 다양한 fast-paced의 게임 유형을 만들 수 있게 합니다. 귀하에게 가장 적합한 게임 유형 및 조건에 맞는 구조를 자유롭게 선택할 수 있습니다.
지금부터 Photon Cloud와 Bolt를 결합하여 만든 상용 구조인 (1) Listen Server or Client Hosted, (2) Dedicated Server와 주의 사항을 소개하겠습니다.
(1) Listen Server or Client Hosted
- 모든 플레이어 중의 한 플레이어(Client)가 호스트(Host)를 맡아 게임을 관리하며 이는 게임 운영 리소스를 낮출 수 있습니다.
- QoS 게임 진행의 품질은 하나의 도전일 수 있습니다. 특히 Client Host를 맡은 사람이 방에서 나갔을 경우, Host Migration(호스트 마이그레이션)을 어떻게 실행할 것인지는 몹시 어려운 의제입니다.
- Cloud의 전송 Relay로 인해 클라이언트 사이에는 4개의 릴레이 포인트가 발생하는 것 또한 주의해야 할 점입니다.
Client 2 — Relay — Host (Client 1) — Relay — Client 3
(2) Dedicated Server 구조:
- 이 서버는 전용 서버이며, Cloud VM 또는 자가 기계일 수 있으며, 공개 IP가 꼭 필요합니다(적은 연결 문제와 최고의 보안 옵션).
- Dedicated Server는 개발자가 직접 설정하거나 타사 서비스를 통해 설정해야 합니다.
❄️ 위 소개를 읽었으니, 마지막으로 가장 중요한 문제를 토론해 봅시다 🔥
Photon Bolt를 어떻게 게임 속에 응용할 수 있을까요??
BOLT는 Unity로 FPS/TPS 및 액션 게임을 전용 서버 게임으로 만드는 가장 선진화된 네트워크 해결 방안입니다. 이 완벽한 엔진은 전용 서버로 구조를 만든 게임 유형에 매우 적합합니다. 각 유형별 응용 예시를 살펴보죠~
FPS/TPS:
- Authoritative 형식의 제1/3인칭 등 사격 게임은 Bolt의 핵심 목표군입니다.
- 예를 들면 PUBG, Fortnite 유형의 게임이 있습니다.
- Gamelift (AWS) 또는 Multiplay(Unity) 등과 같은 클라우드 서비스와 협력해야 합니다.
Battle:
- 일반적으로 Bolt로 구축한 내장 시스템은 최대 40~50명 플레이어의 동시 대전 진행을 지원할 수 있습니다.
- 예를 들면 Battle-Royale, 생존 유형의 게임이 있습니다.
- 더 많은 플레이어 수(50명 이상)를 지원하려면, 특별 기술과 Bolt의 Scoping을 적용해야 합니다.
Action:
- Authoritative 유형의 액션 게임은 호스트에서 Unity App을 실행해야 합니다.
- Matchmaking / Room 등의 협력을 달성하기 위해, io, Playfab, Multiplay(Unity) 등과 같은 유형의 클라우드 서비스를 고려해야 합니다.
전용 서버가 필요하지 않은 유형의 게임 (No Dedicated Server Needed):
해당 유형은 누군가 게임 내의 데이터를 수정할 위험이 적기 때문에, 일반적인 개발 방식을 사용하면 됩니다. 아래 유형을 참고하세요.
- VR/AR/MR 게임
- Party, 파티 게임
- Action / RPG 유형 게임, Co-op 유형 게임
- MineCraft 유형의 합작, 건축형 Builder 게임
국외 게임 성공 사례
~이미 출시된 여러 유형의 멀티플레이 게임~
요약
- 현재 수많은 게임이 이와 비슷한 개념 구조를 통해 성공을 이루었습니다. 지금 바로 Photon Bolt를 사용해 여러 사람이 실시간으로 함께 즐길 수 있는 자신만의 네트워크 연결 게임을 만들어 보세요.
- 저희 Photon Taiwan(+Korea)의 존재가 여러분들이 이 강력하고도 우수한 제품을 사용하시는 데 도움이 되기를 바라며, 함께 특색있는 온라인 게임을 만들어나갈 수 있기를 기원합니다!!
한국 페이스북 페이지 : https://www.facebook.com/photoncloudkr/
기술관련 문의사항 : developer@photonengine.kr
그 외 문의사항 : info@photonengine.kr
댓글
댓글 0개
댓글을 남기려면 로그인하세요.