▲(좌) 넥슨 이나은 콘텐츠 기획 (우) 정지영 개발자

MMORPG는 재밌다. 그런데 가끔 게임 속에서 일을 하는 느낌이 든다. 사냥에 질리고, 레이드에 지쳐 힐링의 시간을 갖고 싶은 마음이 때때로 솟구치곤 한다. 지친 나의 마음을 치유해줄 무언가가 절실하다. 물론 게임 속에서 말이다.

메이플스토리2(이하 메이플2)의 악기 연주는 지친 유저들을 위한 단비 같은 콘텐츠다. 홀로 악보를 만들며 음악에 심취할 수도 있고, 다 같이 모여 밴드 공연을 하듯 즐길 수도 있다. 간단하고 자유로우며 즐겁기까지 하다. 하지만, 이걸 만들어가는 과정은 결코 만만치가 않았다.






넥슨의 이나은 기획자는 어느날 ‘메이플2’에 악기 연주 기능이 있으면 좋겠다는 생각이 들었다고 말했다. 게임의 분위기는 유쾌하고, 유저간의 커뮤니티 활동을 추구하고 있지만 막상 즐길거리가 없다는 것이 그녀의 생각이었다. 이후의 결단은 신속했다. 디테일한 기획서 없이 ‘왜 필요한지’, ‘어떤 모습일지’ 만을 그려서 보고를 올렸다.

애초에 큰 욕심을 부리지 않았다. UU는 약 5%가량으로 설정했다. 많지는 않더라도 커뮤니티 기능을 즐기는 이들에게 할 거리를 늘려주자는 마음이었다. 물론 다른 콘텐츠와의 연계성이나, 플레이에 대한 보상 등도 고려했다.

개발에 본격적으로 착수한 뒤 마주한 첫번째 난관은 ‘시간’이었다. 겨우 2개월 남짓한 시간 내에 악기 시스템과 작곡 시스템을 구현해야하는 상황을 마주했다. 아울러 개발 비용도 아껴야하고, 해외 서비스도 대비해가며 준비해야했다.


개발을 담당하게 된 정지영 개발자는 처음에 막막함을 느꼈다고 회고했다. 개발기간도 짧은데다가 경험이 없는 분야이기도 했다. 리서치에만 무려 1개월이 걸려, 본격적인 개발 기간은 딱 1개월 밖에 남지 않은 상황이었다.

일단 서비스 방식을 결정해야했다. 선택지는 악보 연주와 수동 연주, 두 가지가 있었다. 악보 연주는 퀄리티가 좋았고, 수동 연주는 접근성이 좋았다. 무엇 하나 포기하기가 힘들고 애매했다. 결과적으로 둘 다 개발하기로 결정했다.


본격적인 개발에 착수하고, 우선 게임 내 악기를 구현해야 했다. 그런데 또 문제가 생겼다. 제너럴 미디(General MIDI)를 사용할지, 실제 악기로 녹음을 해야할지 선택해야 했다. 최종적으로 선택한 건 제너럴 미디였다. 기본적으로 128개의 악기를 갖추고 있고, API를 제공하기 때문에 추가 작업할 필요없이 지속적인 업데이트 가능하다는 강력한 장점을 갖추고 있었다. 아울러 악기 소리 자체를 담고 있는 것이 아니라 특정 음을 내게 하는 프로토콜이기 때문에 용량도 간추릴 수 있었다.

포맷은 MS2MML이라는 새로운 형식을 만들어 적용했다. 자사 게임인 마비노기에서 쓰이던 MML을 개량한 버전으로 기존 방식에 익숙해져있던 유저들을 위한 배려였다.


메이플2 악기 연주를 구현하는 데 사용된 미디 프로그래밍은 하나의 짧은 메세지와 같다. 어디서 음을 내기 시작해(Note On), 어디서 끊을 건지(Note Off)를 설정해 입력하기만 하면 된다. 이렇게 만들어진 미디 메세지를 미디 시스템으로 전송하게 되는데, 이러한 작업을 총괄하는 것이 뮤직 매니저(Music Manager)다.

서버는 ‘뮤직 오브젝트(Music Object)’와 뮤직 컴퍼넌트(Music Component)’로 이루어져있다. 뮤직 오브젝트는 실제 연주 정보를 갖고 있는 오브젝트로 주위 클라이언트에게 음악을 전달하는 역할을 한다. 쉽게 말해 주변 캐릭터에게 음악을 들려주는 캐릭터다. 뮤직 컴퍼넌트는 전반적인 패킷과 뮤직 오브젝트의 생성 및 파괴를 관리한다.


앞서 언급한 요소들은 연주 방식에 따라 각기 다르게 기능한다. ‘즉흥 연주’의 경우, 반응 속도가 굉장히 중요하다. 즉각적인 피드백을 위해 연주자에게는 즉시 반응한다. 이후 다른 유저(클라이언트)에게는 서버를 통한 동기화가 먼저 이루어진 뒤 일괄적으로 패킷이 전송되는 방식을 갖고 있다.

반면, 악보를 통한 독주는 연주자와 타 유저가 동일한 취급을 받는다. 악보가 가진 정보 자체를 그대로 재생하기만 하면 되기 때문에 동시에 패킷을 전송받는다.


악보 합주는 비교적 복잡한 구조를 보인다. 우선 대기자와 실행자(합주 파티장)로 역할이 나뉘게 된다. 모든 구성원이 서버에 악보 ID를 전송하게 되면 실행자의 연주 신호에 의해 일괄적으로 뮤직 오브젝트가 생성되고 연주가 시작된다.

메이플2에서 유저는 악기 연주에 관한 볼륨 제어를 할 수가 없다. 볼륨 관리자가 직접 채널별 소리를 제어하며, 거리에 따른 편차가 적용된다. 앞서 언급했듯 소리의 발생지는 뮤직 오브젝트인데 만약 여러 개가 동시에 존재할 경우 독자적인 중심점을 따로 갖추게 된다.


유저에게 악기 연주 볼륨 제어 권한을 주지 않은 것은 ‘소음 공해’를 방지하기 위함이다. 수많은 뮤직 오브젝트가 곳곳에서 큰 볼륨으로 연주를 진행하게 되면 타 유저(클라이언트)에게 불편을 끼칠 우려가 있었다. 또 하나의 방지책으로 차단 기능을 도입했다. A 유저가 B 유저를 차단할 경우, B 유저의 연주 소리는 A 유저에게 들리지 않게 된다. 이 외에도 부는 악기류는 특정 악보에서 과도한 소음을 유발할 수 있어 서스테인 기능(소리의 유지)을 제외했다.

정지영 개발자는 강연 말미에 악기 연주 콘텐츠가 개발비 대비 높은 효율성을 보여줬다고 평가했다. 하지만 몇 년간 구현하지 못하고 있는 피아노롤과 한계에 부딪힌 악기 소리의 종류가 아쉬움을 남긴다고 토로했다.

이나은 기획자 역시 악기 연주가 업데이트 된 이후 유저들이 직접 연주회를 열며 즐기는 등 좋은 모습을 지켜볼 수 있었다고 소감을 밝혔다. 일간 UU 역시 보완 패치 이후 두배 가량 뛰어오르며 긍정적인 모습을 보였으나 작곡 콘텐츠의 난이도 개선 등 아직 해결하지 못한 숙제가 많다고 언급했다.