Guns of Icarus의 개발 초기부터, 우리는 팀웍 및 협력 플레이를 중시해 왔습니다. 그래서 이 게임의 완성판인 "Guns of Icarus Alliance"을 PlayStation 4에 전개할 때에도 Seamless한 크로스 플랫폼 플레이는 필수 사항이라고 처음부터 생각했습니다.
우리는 PS4의 플레이어와 Steam PC의 플레이어가 동시에 싸우는 것 뿐만 아니라, 가능한 한 많은 수단을 통해 충분한 커뮤니케이션을 실행할 수 있는 것을 목표로 해 왔습니다. 즉, 크로스 플랫폼의 보이스 챗 지원의 구현은 빼놓을 수 없는 사항이었습니다.
PS4와 Steam상 PC(Win/Mac/Linux) 사이의 크로스 플랫폼 플레이와 보이스 챗의 완전한 연계를 실현하기 위해, 우리는 수 많은 새로운 과제를 독자적인 방법으로 해결해야 했습니다. 모방할만한 전례가 없었기 때문입니다.
이런한 크로스 플랫폼의 꿈을 실현하기에 Photon과 Photon Voice는 매우 큰 도움이 되었습니다.
Photon/Photon Voice과의 연계
Guns of Icarus는 Steam API를 통합한 PC게임(Windows, Mac, Linux)로써 시작되었습니다. 그래서 우리는 챗을 Steam의 보이스 챗 시스템의 상위 부분에 구현했습니다. 이 구현은 피어 투 피어의 네트워킹 경유에 의한 것으로, 이 보이스 시스템으로는 모든 플레이어가 Steam을 가동하고 있는 상태인 것이 전제가 되기 때문에 PS4 유저에게는 유효하지 않았습니다.
PS4에는 독자적인 보이스 챗 SDK가 있습니다. Unity는 이 보이스 챗 SDK를 Net Chat Plugin에 내포되어 있었습니다. 이 SDK는 기본적인 보이스 챗 기능을 제공하고 있지만, 이 게임에서 실현하고자 하는 보이스 챗 기능의 모든 것이 포함되어 있지는 않았습니다. 더욱 중대한 문제는, 이 SDK는 PC 플레이어에 대응하지 않는다는 점이었습니다.
크로스 플랫폼의 보이스를 지원하기 위해, 우리는 먼저 PC와 PS4 플레이어 양쪽에서 작동하는 서드파티의 보이스 챗 솔루션이 존재하는가를 생각해봤습니다. 이러한 솔루션이 없으면 PC와 PS4의 양쪽의 플레이어가 함께 플레이는 할 수 있지만, 플레이어 간의 커뮤니케이션에 보이스 챗은 불가능할 것이고, 이 게임에는 고도의 협력 플레이가 필요하기 때문에 보이스 챗은 꼭 필요했습니다. 개발이 진행됨과 함께, 우리는 보이스 시그너링/커맨드 시스템, 나아가 미묘한 뉘앙스를 표현할 수 있는 AI 커맨드 시스템 등을 구축했습니다. 하지만 이것들은 플랜 B에 지나지 않았고, 우리들은 크로스 플랫폼의 보이스 챗을 실현하지 못한 채 였습니다.
당시, 크로스 플래폼의 게임은 많지 않았고, 서로 다른 플랫폼의 플레이어의 협력 플레이를 지원하는 게임은 더욱이 제한적이었습니다. 그래서 우리는 다른 비슷한 게임들이 어떻게 작동하는지 확인할 길이 없었습니다. 또한, 당시는 완성품의 서드파티 솔루션이 없었기 때문에 보이스 챗의 연계를 우리가 직접 구축하는 시도는 결코 쉽지 않았습니다. 이것은 매우 어려운 문제였고, 우리는 긴 시간동안 실현이 불가능할 것이라 생각했습니다.
그러한 상황중 작년, 우리는 PC상에서 작동하는 보이스 챗 솔루션인 Photon Voice를 발견했습니다. 우리의 고유 게임 서버로써 Photon을 사용하고 있던 우리에게는 Photon의 사용 경험이 있었습니다. 또한, Photon의 네트워킹 패키지가 PS4상에서 작동하는 것도 알고 있었습니다. 그 후 우리는 Photon팀에 문의하여, Photon을 사용하면 크로스 플랫폼의 보이스를 실현할 수 있을지도 모른다는 점을 깨닫게 되었습니다.
패키지 자체는 매우 알기 쉽고, 간단하게 사용할 수 있었습니다. 그러나 Guns of Icarus의 기존 보이스 챗 시스템이 복잡했습니다. 우리가 군대에서 영감을 얻어, 대전중의 보이스챗을 멀티 채널 구조상에 설계했기 때문입니다. 같은 군함의 크루끼리가 아니면 대화를 할 수 없고, 선장은 같은 팀의 다른 선장과 대화하기 위한 채널을 추가로 가지고 있었습니다. 모두의 음성이 들리면 플레이어 측의 정보 과다로 인해 혼란이 발생하고, 이러한 상황을 피하기 위해 멀티 채널 구조를 설계했던 것이었습니다.
결과적으로, 통합하기 위해서는 시간이 조금 걸렸습니다. 같은 그룹의 플레이어 사이 뿐만 아니라, 같은 매치 로비의 플레이어 사이에서의 챗도 지원할 필요가 있어, 그룹과 매치로비에서 각각 다른 그룹의 플레이어가 될 가능성이 있었기 때문입니다. 또한, 매치 로비에서는 매치 챗, 팀 챗, 선장 챗, 크루 챗을 지원하고 있었기 때문에 듣는 사람은 누가 말하고 있는지 뿐 아니라, 플레이어가 어느 채널을 사용하고 있는지도 파악할 필요가 있었습니다. 이러한 기능은 Photon Voice이 제공하는 코드에서는 지원하지 않았기 때문에 우리는 소스코드를 보다 높은 레벨로 변환시켰습니다. Photon 솔루션의 유연성이 매우 높았기 때문에 Steam의 보이스와 똑같이 작동시킬 수 있었고, 크로스 플랫폼에서의 작동도 실현되었습니다!
하지만, 우리에게는 아직 발견하지 못한 주의점이 있었고, 이는 이후에 Sony의 FQA팀으로부터 보고받게 되었습니다. PS4의 플레이어는 헤드폰에 채팅 음성만을 출력하는 것은 불가능하여, 다른 음악이나 음성까지도 TV에 출력하고 있었던 것입니다. 이 기능은 PS4의 보이스 디바이스로의 입력 보이스 데이터를 루팅하는 Unity의 Net Chat Plugin으로 인해 지원되는 것으로, 반면 Photon Voice는 Unity의 AudioSource 클래스에 의해 보이스를 처리하기 때문에 같은 시스템 내의 다른 음성을 채팅 음성으로 분리하는 것이 불가능했기 때문이었습니다. 이 건에 대해서 우리는 Photon팀에 보고했고, 바로 서포트를 받을 수 있었습니다. Photon을 사용하는 모든 유저가 우리보다 훨씬 쉽게 이 문제점을 해결할 수 있기를 희망합니다. 깊은 어둠과 같은 과제에 몰두한 덕분에 우리는 Photon 팀의 훌륭한 멤버와 협동할 수 있는 기회를 얻었고, Photon의 제품과 플랫폼의 향상에 일조할 수 있었습니다. 이 경험들은 이번 개발에 있어서 가장 의미있는 일이었습니다.
끝으로
PS4에서의 출시를 실현하고, 크로스 플랫폼에서의 플레이와 보이스를 구현하는 솔루션을 발견하기 위해, 긴 시간 동안 곤란한 길을 걸어야만 했습니다. 결과적으로 Photon과 Photon Voice가 없었다면, 우리들은 결코 성공할 수 없었을 것 입니다. 또한 Exit Games 팀의 신속한 서포트도 성공에 연결되었습니다. 온라인 멀티플레이어의 프로젝트용으로 크로스 플랫폼 솔루션을 찾고 있는 분들께, 우리는 꼭 Photon을 추천하고 싶습니다.