['유나이트 서울 2018' 발표자 소개] 정성헌 에반젤리스트는 십여 년간 여러 회사에서 쌓아온 풀스택 프로그래머로서의 경력이 있다. 이 경험을 바탕으로 현재 Photon의 에반젤리스트로 활동하고 있다.

포톤은 게임 개발자들이 멀티 플레이를 간단하게 실현시킬 수 있도록 돕는 서버 엔진 개발사이다. 현재 기본형인 ‘포톤 서버’와 상위 버전에 해당하는 ‘포톤 클라우드’를 서비스 중이고 프리미엄급 서버인 '포톤 퀀텀'을 개발하고 있다. 포톤은 국내 유명 개발사 및 디즈니, 스퀘어 에닉스, 세가 게임즈 등을 주요 고객으로 두고 있다. 멀티 플레이 서비스를 생각하는 개발자를 위해 포톤의 정성헌 에반젤리스트가 ‘유나이트 서울 2018’의 연사로 나서 자사의 서비스와 노하우를 전했다.



정성헌 에반젤리스트의 말에 따르면 현재 2억 2천만 유저가 포톤 서버를 활용한 게임을 즐기고 있다. 포톤 서버가 한 달 동안 처리하는 데이터양은 4천 테라바이트 이상으로, 그는 "많은 데이터를 안정적으로 처리하는 서버로 검증 받았다"고 강조했다. 현재 포톤 서버는 해외 유명 게임 개발사인 스퀘어 에닉스와 세가 게임즈 등에서 활용하고 있으며, 디자인을 먼저 했던 개발자들이나 인디 게임 개발자들이 많은 찾는다고 그는 소개했다.

포톤 서버는 네트워크 엔진이다. 모든 클라이언트(플레이어)가 서버에 접속할 때 통신을 릴레이 하는 역할을 한다. 포톤 서버는 기본적으로 자체 처리 기능은 없으나, 용도에 따라서 웹후크(webhooks), 플러그인(plugin) 등을 이용한 커스터마이징으로 자체 처리를 할 수도 있다.

정성헌 에반젤리스트는 포톤의 서비스가 두 가지로 나뉜다고 설명한다. 기본형에 해당하는 '포톤 클라우드'는 서버를 포톤에서 운용한다. 클라이언트에 SDK를 적용시키기만 하면 간편하게 사용할 수 있으며, 정보를 따로 저장하지 않는 순수 멀티플레이 전용 서버 엔진이다.

다음으로 '포톤 서버'는 미들웨이 타입이다. '포톤 서버'는 소프트웨어 형태로 제공하기 때문에 사용자 측에서 운용한다. 서버를 자유롭게 커스터마이징할 수 있다는 장점이 있다.

▲ '포톤 클라우드'의 라인업, 필요에 따라 사용할 수 있다

포톤 '클라우드'와 '서버'의 차이점은 CCU 제한의 차이다. '포톤 클라우드'의 CCU는 5,000으로 제한되어 있다. 그는 "5천 CCU를 넘어 행복한 고민에 빠지면 '포톤 서버'를 사용하는 게 좋다"며 "일반적으로 먼저 '포톤 클라우드'를 사용해본 뒤 만족한다면 '포톤 서버'로 업그레이드한다"고 덧붙였다.

정성헌 에반젤리스트는 "'PUN'은 유니티 게임에 적합한 서버, 'BOLT'는 대전 게임 서비스에 적합한 서버"라고 요약했다. 게임 개발 외에 커뮤니티 서비스에도 포톤 서버는 사용될 수 있다. '포톤 챗'과 '포톤 보이스'는 커뮤니티 서비스에 적합한 서버 엔진이다. '포톤 챗'의 경우 비속어 필터 기능을 추가 요금으로 활용할 수도 있다.


본격적으로 '포톤'을 배워보자

포톤은 릴레이 서버다. 서버에서 연산하는 기능이 포함되지 않아 플레이어가 서로의 정보를 송수신할 필요가 없다. 게임에 따라 다르지만, 보통의 액션 게임의 경우 1초에 약 5~10회의 정보를 주고받게 된다.

▲ 포톤 엔진의 기본 시퀀스

그의 설명에 따르면, 두 유저가 게임을 즐길 경우 가운데에 포톤 서버가 위치한다. 유저1이 정보를 포톤에 보내면, 포톤은 유저2에게 유저1의 정보를 보낸다. 이때 유저2의 클라이언트에서 정보를 갱신하고, 다시 포톤을 통해 유저1에게 정보가 가는 시퀀스다.

포톤의 다른 형태로는 '협력 플레이' 방식이 있다. RPG에서 플레이 중에 회복 아이템을 사용했을 경우 사용된 아이템의 정보를 공유하는 경우, 레이드에서 보스의 HP나 아군의 공격 내용을 공유할 때, 리듬 게임에서 다른 플레이어의 스코어나 상태, 특수효과 등을 공유하는 경우가 협력 플레이에 해당한다.

▲ 포톤의 협력 플레이 시퀀스

그는 유저1의 협력 정보를 포톤에 보내면, 유저2와 유저3, n번째 유저까지 동시에 유저1의 정보를 보내는 구조라고 설명했다. 그리고 각자의 클라이언트에서 각자의 정보를 갱신한다고 덧붙였다.

정성헌 에반젤리스트는 "길드전이나 FPS, TPS와 같은 대전 게임에서도 포톤을 활용할 수 있다"고 소개했다. 그의 설명에 따르면 포톤은 몇 프레임에 한 번씩 자신의 정보를 주고받아, 그 정보를 서로의 클라이언트 상에 반영함으로써 상대의 위치나 상태 등을 파악할 수 있다. 또한, 공격 정보를 보냄으로써 클라이언트 상에 액션을 실행하거나 게임이 진행된다.

▲ 대전 게임의 시퀀스는 기본과 유사하다

최근 게임사에서 많이 생각하는 'MMO 같은 MO 게임'도 포톤을 통해 서비스할 수 있다. 단, 기본 포톤 서버는 유저의 정보를 저장하지 않아 플러그인을 활용해야 한다. 정성헌 에반젤리스트의 설명에 따르면, 유저가 로비에 들어오면 포톤이 로비를 인지하게 된다. 이때 신청한 유저만 따로 게임을 만들어 실행시킨다. 포톤 내에 로비와 룸이 있는 형태다.

▲ 신청한 유저만 따로 게임을 만들어 실행시키는 구조

그는 클라우드만으로 충분히 MMO 게임을 실현할 수 있다고 소개한다. 게임 구현에 필요한 함수가 많지 않기 때문에 손쉽게 멀티플레이 게임을 만들고, 유저 관리 역시 편하다고 전했다. 단, 플러그인 활용은 '포톤 서버'와 '포톤 엔터프라이즈 클라우드'에서만 제공된다.


포톤 최신 정보와 활용 Tip

정성헌 에반젤리스트는 'PUN' 1.81 버전부터 로비 관련 기능이 개선되어 매칭에서 필터 기능이 충실해졌다고 소개했다. 그는 "포톤 내의 SQL Lobby 로직이 발전해 레벨이 비슷한 플레이어의 매칭이 더 쉬워졌다"고 설명했다.

그의 말에 따르면 '포톤 챗'과 '포톤 보이스'의 실시간 기능도 발전해 메신저 엡 '라인'이나 '카카오톡'과 같은 채팅 화면도 손쉽게 구현할 수 있게 됐다. 이 기능은 해외 진출 시에도 유용하게 쓰여, 기존 네트워크 코드를 거의 변경하지 않고도 사용할 수 있다. 그는 "특히 비속어 필터 기능이 강화돼 게임 개발자는 부수적인 요소에 신경 쓰지 않고 온전히 재밌는 게임 개발에면 신경 쓸 수 있다"고 덧붙였다.

▲ 하반기 출시 예정인 '퀀텀'

정성헌 에반젤리스트가 강조해 설명한 포톤의 서비스는 '퀀텀' 버전이다. '포톤 퀀텁'은 기존과 비교해 강력한 처리 속도를 자랑하는 디터미니스틱 엔진이다. 그는 '퀀텀'이 '롤'이나 '히어로즈 오브 더 스톰'과 같은 MOBA 장르나 실시간 전략 게임, 스포츠 게임 등 빠른 처리가 요구되는 게임에 적합하다고 설명했다. 현재 '퀀텀'은 올해 하반기 출시를 목표로 개발 중이다.


세계적인 게임의 서비스 수준을 원한다면 '엔터프라이즈'

정성헌 에반젤리스트의 발표에 따르면 '배틀그라운드'의 2017년 CCU는 약 200만이다. 올해는 더 올라갈 것으로 추정한다. 200만 CCU는 보통의 서버에서는 처리하기 힘든 수치다. '포톤 클라우드'의 경우에도 5천 CCU 제약이 있어서 불가능하다. '배틀그라운드'와 같은 게임의 서비스를 위해 준비된 것이 '포톤 엔터프라이즈'라고 그는 소개했다.

▲ '엔터프라이즈'의 차별점은 CCU 제한이 없다는 것

'포톤 엔터프라이즈 클라우드'의 상호 변경은 별도의 코드 수정 없이도 가능하다. 정성헌 에반젤리스트는 먼저 클라우드로 서비스해본 뒤 규모가 커지면 '엔터프라이즈' 서비스를 사용하길 권했다. 또한, '엔터프라이즈'는 플러그인 사용이 자유로워 높은 커스터마이징을 자랑한다고 그는 강조했다.

▲ 서비스 규모에 따라 적합한 포톤 서비스를 선택하는 것이 좋다



안정적인 서비스를 돕는 포톤의 플러그인

정성헌 에반젤리스트는 포톤의 플러그인은 '.NET(c#)의 DLL로 localBalacing 단에서 움직이며, 룸 내의 이벤트에서 작동한다고 설명했다. 그는 "하나의 앱에서 사용할 수 있는 플러그인은 1DLL 이지만, 1DLL 내에서는 여러 플러그인을 구현할 수 있다"고 덧붙였다.

그의 말에 따르면 플러그인을 웹후크와 서버와 비교했을 때, 자유도와 간편함, 운영 부담 면에서 적정선을 자랑한다. 또한, 멀티플레이의 상황을 파악하고 싶거나 게임 컨트롤을 서버에서 실행하고 싶을 때, 치트나 해킹 대책이 필요할 때 플러그인은 좋은 해결책이 될 수 있다고 조언했다.

▲ 효율적인 운영을 돕는 플러그인

▲ 포톤의 플러그인은 하이브에서 함수를 호출에 작동한다