소개 및 머리말
안녕하세요, Retrying의 개발자 Tata입니다.
Fusion을 이용해 개발을 진행하며 어려웠던 부분, 얻은 노하우 등을 기록하려고 합니다.
참고하여 많은 분들이 Photon Fusion을 이용하고 커뮤니케이션이 활발해졌으면 합니다.
포톤 퓨전은 유니티를 위한 고성능 상태 동기화 네트워킹 라이브러리입니다.
자사의 배틀 핀볼은 포톤 퓨전을 이용해 개발했으며, 초기에는 포톤 PUN2를 이용해 개발을 진행했습니다.
하지만 물리 연산 동기화에 한계점을 느끼고 포톤 퓨전으로 마이그레이션 했습니다.
포톤 퓨전에서도 문제점이 있어서 물리역학을 절반만 이용하는 결과를 빚어내긴 했지만, 이 이야기는 배틀 핀볼 개발에 관련된 포스팅에서 따로 다루도록 하겠습니다.
멀티플레이 게임은 장르에 따라 서버를 어떻게 이용할 것인지가 다릅니다.
위의 사진이 예제가 될 수 있습니다.
대규모 네트워킹이 필요하거나 고속의 신뢰성 있는 연산이 필요한 경우에 Dedicated Server, Shared, Deterministic을 이용합니다.
가벼운 게임들은 보통 Client Host 방식, Host Mode라고 부르는 방식으로 만들어집니다.
방장이 존재하고, 이 방장이 나가는 경우 서버 연결이 해제되는 경우가 보통 이 방식입니다.
(호스트 마이그레이션을 잘 구현해놓은 경우에는 호스트를 이전할 수는 있지만, 보통은 그냥 연결을 끊어버리는게 일반적인 것 같습니다.)
퓨전 네트워크 토폴로지
퓨전 네트워크 토폴로지를 살펴보면 다음과 같습니다.
Server(Dedicated server) : 모든게 뛰어나지만 비용이 비쌈.
Host : 호스트가 모든 권한을 가지기 때문에 호스트의 네트워크에 영향을 많이 받고 신뢰성이 떨어짐. 또한 Host의 해킹/치팅이 가능하기도 함.
Shared : 네트워크 세션을 Photon Cloud가 소유하며, 큰 단점이 없음.
포톤 퓨전에 대한 자료가 극단적으로 적기 때문에 장르에 따른 토폴로지를 결정하는 것은 매우 중요한 일입니다.
일반적으로는 Host Mode로 개발을 많이 하지만, Shared Mode도 높은 신뢰성을 가지고 있어 훌륭한 선택지입니다.
기본적으로 Photon을 쓰는 이유 자체가 자체 네트워킹 로직을 만들기 힘들기 때문이니, 세션 자체도 Photon이 관리해준다면 더 좋겠죠?
퓨전 SDK는 현재 여기서 다운로드 받을 수 있습니다.
많이 실험적인 상태라, 자료가 극단적으로 적으니 헤딩하면서 개발하겠다고 마음을 먹었다면 Fusion을 쓰시고, 그게 아니라면 퀀텀이나 PUN2를 쓰는 것을 권장합니다.
Chat GPT든 Google Bard든 생성형 AI에게 물어봐도 얘네 아무것도 모릅니다. (PUN2로 대답해줍니다.)
SDK 설치 및 Fusion 연결에 대한 글은 다음 글에 계속됩니다.