0. 서론
지난 글에서 언급했듯이 온라인 게임, 특히 MMORPG 에서는 게임 내 캐릭터끼리 다양한 사회 활동이 일어납니다. 이를 테면, 캐릭터 간에 아이템을 서로 주고 받기도 하고, 2~6명 정도의 캐릭터들이 ‘파티 (party)’ 라고 하는 일시적인 그룹을 만들어 혼자서는 무찌르기 힘든 강한 몬스터를 같이 무찌르거나 혹은 어려운 퀘스트를 수행하기도 하죠. 심지어 캐릭터끼리 서로 결투를 벌이기도 합니다. 이런 활동들은 모두 네트워크 구조로 표현이 가능하기 때문에 목적에 따라 다양한 네트워크 분석이 가능합니다. 여기서는 아래 세 가지 사례를 통해 네트워크 분석 기법을 실제 어떻게 활용할 수 있는지 소개하겠습니다.
- 유저간 전투 유형 분류 – 네트워크 시각화를 통해 전투의 맥락을 파악한 사례
- 이탈 예측 – 이탈 유저와 잔존 유저의 파티 네트워크 구조 상의 차이를 분석하고 이 차이점을 이탈 예측 모델의 피처로 활용한 사례
- 아이템 현금 거래 규모 추정 – 네트워크 커뮤니티 간의 거래를 분석하여 아이템 현금 거래 규모를 추정한 사례
1. 유저간 전투 유형 분류 – 전투 네트워크 시각화
온라인 게임에서 얻는 재미 중에는 유저 간에 파티 활동과 같은 협업을 통해 어려운 목표를 달성함으로써 느끼는 성취감도 있지만 때론 서로 경쟁을 통해 상대보다 우월감을 느낌으로써 얻는 재미도 큽니다. 따라서 상당수의 MMORPG에서는 유저 간의 전투와 관련된 컨텐츠가 차지하는 비중이 매우 높습니다. 또한 유저 간의 전투가 게임의 몰입도에 미치는 영향도 크죠. 따라서 유저 간의 전투에 영향을 주는 요인이나 반대로 전투가 유저에게 미치는 영향에 대한 체계적인 분석이 필요합니다.
이를 위해선, 어떤 두 유저가 전투를 벌일 때 왜 싸우는지 전투의 목적을 잘 추정하는 것이 필요합니다. 그런데 유저 간의 전투 목적은 꽤 다양합니다. 우연히 사냥터에서 시비가 붙어 싸울 수도 있고, 어떤 두 혈맹 간에 세력 다툼 목적으로 대규모 전투를 벌일 수도 있고, 때론 그냥 친한 유저끼리 친밀감의 표시로 싸우는 경우도 있습니다. 심지어 어떤 유저는 자신의 캐릭터보다 약한 캐릭터들을 소위 ‘학살’하는 재미로 게임을 하기도 하죠 (이런 걸 속칭 ‘막피’라고 부릅니다).
그림 1. 유저들의 PvP 에는 다양한 의도가 숨겨져 있습니다.
비록 온라인 게임에서는 로그를 통해 유저의 세부적인 활동을 추적할 수 있지만 단지 개별적인 전투 활동만 보고 전투 목적을 파악하기는 쉽지 않습니다. 이 때 전투를 수행하는 유저들 간의 네트워크 구조를 확인하면 맥락을 이해하는데 도움이 됩니다. 예를 들어 <그림2>는 노드가 캐릭터이고 엣지가 캐릭터 간의 전투 행위를 의미하는 네트워크를 시각화한 것입니다. 이 그림에서 노드의 색깔은 해당 캐릭터가 속한 혈맹(혈맹에 속하지 않으면 검정색)을 의미하며 degree centrality 가 클수록 노드를 크게 표현했습니다.
그림 2. 캐릭터 간의 전투 네트워크 시각화 – A는 막피 전투, B는 혈맹간의 세력전을 의미합니다.
그림을 보시면, 전투 네트워크는 서로 다른 구조를 갖는 여러 개의 커뮤니티로 구성되어 있습니다. 예를 들어 A 의 경우 하나의 노드가 다수의 노드와 1:n 으로 연결된 구조를 갖고 있습니다 (이런 구조의 네트워크를 ‘star network’ 라고 부릅니다). 이건 위에서 언급한 전투 사례 중 ‘막피’의 전형적인 구조입니다. 한 명이 다수를 일방적으로 학살하고 다니는 것이죠. 한편 B 의 경우엔 반대로 다수의 캐릭터들이 서로 난전을 벌이고 있는 모습입니다. 그런데 노드의 색깔을 보면 크게 세 개의 혈맹으로 구성되어 있죠. 따라서 세 개의 혈맹이 서로 세력 다툼을 벌이는 것으로 추정할 수 있습니다.
결국 캐릭터끼리의 전투를 개별적으로 보기 보다는 이렇게 전투에 관여된 주변 캐릭터의 속성과 네트워크 구조를 같이 파악할 경우 전체적인 맥락을 좀 더 쉽게 파악할 수 있습니다. 또한 이를 통해 각 전투를 목적에 따라 몇 가지 유형으로 나눠서 지표로 만든 후 그 변화를 추적할 수도 있습니다.
2. 이탈 예측 – 파티 네트워크 커뮤니티 분석
이탈 예측이란 게임 내에 활동하고 있는 유저들의 활동 정보를 이용하여 조만간 게임을 그만 둘 유저를 분류하는 모델을 만드는 작업을 말합니다. 이탈 예측은 업계에서 이미 폭넓게 활용되고 있는 대표적인 데이터 분석 사례 중 하나이죠. 게임 분야에서도 이탈 유저를 분류하기 위해 여러 가지 방법들이 활용되고 있는데 보통 각 유저별 접속이나 결제, 기타 게임 내 활동 정보 위주로 분석합니다.
그러나 앞서 언급했듯이 온라인 게임에서는 유저 간 상호 작용이 중요하기 때문에, 다른 유저와 사회적으로 어떤 관계를 갖고 있느냐가 유저의 이탈에 영향을 줍니다. 가령, 다른 유저와 함께 게임을 즐기는 유저는 반대로 다른 유저와 잘 어울리지 못하고 혼자 플레이하는 유저보다 게임을 더 오래할 가능성이 높습니다. 특히, MMORPG에서는 다른 유저와 파티나 길드를 결성해야만 즐길 수 있는 컨텐츠들이 많이 있기 때문에 이런 사회 활동은 게임을 계속 유지하는데 중요한 요인입니다.
저희는 위 가설이 맞는지 확인하기 위해 엔씨소프트의 대표적인 MMORPG 중 하나인 ‘아이온’ 이라는 게임에서 유저들의 파티 활동에 대한 네트워크 분석을 진행했습니다. 이를 위해 캐릭터가 노드이고 캐릭터끼리 같이 파티 활동을 한 적이 있는 경우를 엣지로 표현한 네트워크를 구성했습니다. 이 때 네트워크가 불필요하게 커지는 것을 막기 위해 엣지를 표시할 때 ‘일주일 동안 최소 두 번 이상 같이 파티 활동을 한 경우’로만 한정했습니다.
이렇게 생성한 파티 네트워크는 다시 커뮤니티 탐지 알고리즘을 이용해 여러 개의 커뮤니티로 분류한 후 이탈 유저가 속한 커뮤니티와 그렇지 않은 커뮤니티를 나눠 두 네트워크 구조를 비교해 보았습니다. 만약 우리 가설이 맞다면 이탈 유저의 커뮤니티는 잔존 유저의 커뮤니티에 비해 커뮤니티 멤버 간의 결속력이 약한 구조를 갖고 있을 것이라 생각했죠. 즉, 이탈 유저는 <그림3>에서 엣지의 밀집도가 높은 커뮤니티(왼쪽 위)보다는 밀집도가 낮은 커뮤니티(왼쪽 아래)에 속할 가능성이 더 클 것이라 생각했습니다.
그림 3. 유저간의 파티 활동에 대한 시각화 – 서로 응집력이 높은 커뮤니티와 낮은 커뮤니티들이 있습니다.
우리는 이탈 유저와 잔존 유저가 속한 커뮤니티의 전체 파티 횟수 (party count), 같이 파티활동을 한 유저수 (party-user count), 유저 당 파티를 한 횟수 (party count per user), 커뮤니티의 밀집도 (density), 클러스터링 계수 (clustering coef.), 그리고 커뮤니티의 크기 (community size) 를 비교해 본 결과 두 집단의 클러스터링 계수 차이가 큰 것을 발견했습니다. <그림4>는 이 비교 결과를 CDF (Cumulative Density Function) plot 으로 표현한 것인데, 잔존 유저 (not churn) 들은 대체로 클러스터링 계수 값이 큰 유저의 비율이 높은 반면, 이탈 유저 (churn) 는 상대적으로 값이 작은 유저들이 많습니다 (CDF 그래프가 위쪽에 있다는 건 작은 값을 갖는 유저의 비율이 높다는 의미입니다).
그림 4. 이탈 유저와 잔존 유저의 파티 관련 피처 비교 – 특히 클러스터링 계수에서 두드러진 차이가 있습니다.
여기서 클러스터링 계수가 의미하는 것은 ‘나와 일주일동안 최소 두 번 이상 같이 파티 활동을 한 유저들끼리도 같은 기간에 두 번 이상 같이 파티를 한 비율’을 의미합니다. 따라서 잔존 유저들은 자주 파티를 결성하는 멤버들이 서로 자기들끼리 뭉쳐있는 반면, 이탈 유저는 개인적으로는 어떤 유저와 두 번 이상 파티 활동을 하더라도 다른 파티 멤버와는 아무런 관련이 없는 유저일 가능성이 크다고 추정할 수 있습니다. 다시 말해, 이탈 유저의 파티 멤버들은 서로 모르는 사람들끼리 일시적으로 모인 모임인 반면, 잔존 유저는 소위 ‘고정팟 (항상 파티를 같이 하는 고정 멤버들로 이뤄진 파티)’ 이라고 부르는 좀 더 응집력이 높은 모임에 속해 있는 가능성이 높은 것이죠.
결국 우리는 유저의 이탈을 예측하는 모델을 만들 때 파티 횟수 등의 개별 활동 정보 뿐만 아니라 이렇게 클러스터링 계수와 같은 네트워크 구조 정보를 피처로 같이 활용하였습니다.
참고로 여기서 간략히 소개한 아이온 이탈 분석에 대해 좀 더 상세한 내용이 궁금하신 분은 https://ieeexplore.ieee.org/document/8485736 에 있는 논문을 읽어 보시기 바랍니다.
3. 아이템 현금 거래 규모 추정 – 거래 네트워크 커뮤니티 유형 분류
마지막으로 앞선 두 사례보다 좀 더 복잡한 사례를 들어 보겠습니다. 네트워크 분석 기법을 이용해 아이템 현금 거래를 추정한 사례입니다. 여기서 대략적인 내용을 소개해 드리겠지만 혹시 좀 더 세부적인 내용이 궁금하신 분은 올 4월에 있었던 ‘The Web Conference 2018’ 에서 발표한 논문(https://arxiv.org/abs/1801.06368)을 읽어 보시면 좋을 것 같습니다.
3.1. 분석 배경 및 목적
온라인 게임에서는 유저들끼리 게임 내에서 아이템을 서로 주고 받을 수 있습니다. 보통 물물 교환을 하거나 게임 내에서 통용되는 돈을 이용해서 사고 파는 거래가 일반적이지만 때론 현실 세계의 통화를 이용해 아이템을 사고 파는 거래를 하기도 합니다. 이것을 아이템 현금 거래, 영어로는 Real Money Trade (줄여서 RMT) 라고 부르죠. <그림5>는 RMT 구조를 간략하게 도식화한 것입니다.
그림 5. 아이템 현금 거래에서 돈과 아이템의 흐름 예시
RMT 는 현재 굉장히 활성화되어 있어서 심지어 아이템 구매자와 판매자 사이를 중개해주고 수수료를 받는 일을 전문적으로 하는 회사도 존재합니다 (아이템 현금 거래 시장에 대한 좀 더 자세한 내용은 http://lecture.cfe.org/info/bbsDetail.php?cid=13113&idx=42943 를 참고하시기 바랍니다). 인기 있는 게임일수록 RMT 시장이 활성화되어 있기 때문에 RMT 규모는 곧 게임의 인기를 가늠하는 외부 지표 역할을 합니다. 그래서 보통 게임 회사에서는 RMT 시장의 변화나 아이템 시세를 주기적으로 확인합니다.
그런데 이렇게 게임 아이템이 돈이 되다 보니 대량의 게임 캐릭터를 운영하여 게임 재화를 모아 파는 것을 전문적으로 하는 사람들도 생겨났습니다. 이들을 속칭 ‘작업장’ 이라고 부릅니다 (<그림6> 참조). 이들은 좀 더 수월하고 효율적으로 돈을 벌기 위해 게임 회사에서 금지하는 불법적인 행위를 하는 경우가 많기 때문에 여러 가지 문제를 일으키고 있습니다.
심지어 악성 코드 유포를 통해 일반 유저들의 계정을 도용하여 게임 내 아이템들을 탈취하거나 피싱 등으로 불법 취득한 현실 세계 재화의 돈 세탁을 위해 아이템 현금 거래를 이용하는 경우도 종종 발생하기 때문에 이런 다양한 불법 행위들을 막기 위해선 아이템 현금 거래를 탐지하는 것이 중요합니다.
그림 6. 대량의 게임 캐릭터들을 운영하는 작업장 예시
정리하자면 게임 회사에서는 앞서 언급한 여러 가지 이유로 인해 RMT 규모를 집계하고 판매/구매자를 탐지하고 싶어합니다. 그런데 RMT를 정확히 탐지하는 것은 현실적으로 매우 어렵습니다. 여기에는 크게 두 가지 이유가 있습니다.
첫째, 게임 회사에서는 유저들이 현실 세계에서 돈을 주고 받는 내역을 파악하기 불가능합니다.
둘째, 게임 내에서 어떤 캐릭터가 다른 캐릭터에게 아무런 대가없이 비싼 아이템이나 많은 게임 재화를 전달할 때 그 목적을 파악하기 어렵습니다. 왜냐하면 유저가 두 개의 캐릭터를 키우면서 자신의 또 다른 캐릭터에게 아이템을 전달하는 경우이거나 혹은 친한 친구에게 도움을 주기 위해 선물을 주는 경우도 있기 때문이죠. 심지어 위에서 언급한 ‘작업장’도 좀 더 효율적인 아이템 파밍을 위해 분업화를 하는 과정에서 자기들끼리 아이템을 주고 받기도 합니다.
3.2. 기본 아이디어
위 문제를 해결하기 위해 유저 간의 거래 네트워크를 개인 단위가 아니라 커뮤니티 단위로 묶어서 파악하는 방법을 고안했습니다. 즉, <그림7>처럼 유저 단위로 거래 행위를 분석하기 보다는 <그림8>처럼 먼저 커뮤니티 단위로 유저들을 묶은 후, 각 커뮤니티의 특징을 분석해 이 커뮤니티가 아이템 현금 거래 관점에서 공급자에 해당하는지 소비자에 해당하는지를 파악한 다음, 공급자 커뮤니티에서 소비자 커뮤니티로 유입되는 거래를 탐지하는 것이죠.
그림 7. 유저 간의 거래 활동만 보면 거래 의도를 파악하기 힘들지만…
그림 8. 커뮤니티 단위로 분석하면 좀 더 의도를 명확히 이해할 수 있습니다.
이를 통해 우리가 의도한 것은 다음과 같습니다.
첫째, 친한 유저들끼리의 거래나 작업장 캐릭터 간의 거래는 대부분 커뮤니티 내부 거래로 묶일 가능성이 높습니다. 왜냐하면 이런 거래들은 RMT에 비해 좀 더 빈번하게 발생할 것이고, 따라서 대개의 경우 좀 더 밀집도가 높은 네트워크 구조를 갖기 때문이죠. 반면, RMT는 상대적으로 덜 빈번한 거래이기 때문에 같은 커뮤니티에 묶일 가능성이 적습니다. 따라서 커뮤니티 간 거래만 추출하면 대가성 없는 아이템 전달 중 RMT만 추출될 가능성이 높습니다.
둘째, 앞선 두 사례에서 보셨듯이 캐릭터 단위에서는 파악하기 힘든 특징들을 커뮤니티 단위의 네트워크 구조를 통해 파악할 수 있습니다. 따라서 우리는 커뮤니티의 특징을 잘 분석하면 RMT 구매자와 판매자 그룹을 분류할 수 있을 것이고, 이를 통해 커뮤니티 간 거래 중에서도 RMT를 더 잘 찾아낼 수 있을 것이라 생각했습니다.
셋째, 만약 판매자가 구매자 그룹에 잘못 묶이는 오류가 발생하더라도 결국 이 판매자에게 유입되는 아이템은 대부분 커뮤니티 간 거래에서 탐지되기 때문에 전체 거래량을 추정하는 데에는 큰 문제가 없을 것이라 생각했습니다.
위 아이디어를 토대로 다음과 같은 작업을 진행했습니다.
3.3. 커뮤니티 분류 및 주요 커뮤니티 특징 분석
먼저 <그림9>처럼 유저 간에 일방적으로 재화를 전달하는 거래만 추출해 거래 네트워크를 생성한 후 커뮤니티 탐지 알고리즘을 이용해 수백 개의 커뮤니티로 묶습니다.
그림 9. 수만 개의 노드로 된 거래 네트워크를 수백 개의 커뮤니티로 분류한 예시 – 노드의 색은 각 커뮤니티를 의미합니다.
이렇게 분류한 커뮤니티를 노드로 하고 커뮤니티 사이를 오가는 거래만 엣지로 만든 네트워크를 만듭니다. 흥미롭게도 제가 분석한 데이터에서는 <그림10>처럼 대다수의 커뮤니티는 엣지가 없이 분절되어 있는데 일부 커뮤니티들은 특정 하나의 커뮤니티로 거래가 몰리는 형태를 띄고 있었습니다.
그림 10. 커뮤니티 간 거래 네트워크 시각화 – 특정 하나의 거대 커뮤니티로 대부분의 거래가 몰림
그래서 커뮤니티간 거래에 참여하는 커뮤니티들의 네트워크 구조와 커뮤니티 멤버들의 특징을 분석한 결과 다음과 같은 주요 커뮤니티들을 발견할 수 있었습니다.
A. Consumer community
먼저 커뮤니티간 거래에서 대부분의 재화가 유입되는 중심 커뮤니티를 분석한 결과 이 커뮤니티 멤버들은 대부분 일반 유저 성향을 갖고 있었습니다. 특히, 네트워크 구조에서 흥미로운 점은 이 커뮤니티 멤버들 간의 거래 네트워크 구조가 페이스북이나 트위터 같은 소셜 네트워크 서비스들의 네트워크 구조와 유사하다는 점이었습니다 (<그림11>의 오른쪽 그림 참조). 결국 우리는 네트워크 구조와 유저들의 행동 패턴이 갖고 있는 특징을 토대로 이 커뮤니티를 RMT 소비자 커뮤니티로 추정하였습니다.
그림 11. 아이템 현금 거래 소비자 그룹
B. Gold farming group
반면 소비자 커뮤니티에게 아이템을 전달하는 공급자 역할을 하는 커뮤니티들의 상당수는 <그림12>와 같은 star network 형태를 띄고 있었습니다. 이들은 수십 ~ 수백개의 캐릭터들이 한 두개의 캐릭터들과 재화를 주고 받는 형태를 갖는데, 말단 노드에 해당하는 캐릭터들은 주로 사냥이나 채집과 같은 아이템 획득을 위한 활동에 치중하며 중앙에 있는 캐릭터들은 접속 시간의 대부분을 거래 활동만 하고 있었습니다. 우리는 이미 알고 있던 지식과 기존 연구 사례 ([https://ieeexplore.ieee.org/document/7727944](https://ieeexplore.ieee.org/document/7727944))를 근거로 이런 커뮤니티를 ‘작업장’ 집단으로 추정하였습니다.
그림 12. 작업장으로 추정되는 커뮤니티 네트워크
C. Arbitrage group
공급자 커뮤니티 중에는 <그림13>처럼 노드들이 일렬로 연결되어 있는 chain network 형태를 띄는 집단들도 있었습니다. 네트워크 구조상 star network 와 정반대되는 특성을 갖고 있는 이들 그룹을 저희는 ‘Arbitrage group’이라고 이름 붙였습니다. ‘Arbitrage’는 우리말로 ‘차익거래’라고 하는데 말 그대로 물건을 사고 팔때 시세 차익을 통해 이익을 얻는 행위를 말합니다.
그림 13. 차익거래 활동을 전문적으로 수행하는 집단의 거래 네트워크
세부적인 게임 활동을 조사한 결과, 이들은 게임 내에서 엄청난 자본을 바탕으로 대량의 아이템을 구매한 후 이것에 약간의 마진을 붙여 소량으로 나눠 판매하는 방식으로 부를 축적하고 있었습니다. 그런데 해당 게임에서는 너무 빈번하게 아이템을 사고 파는 행위를 하는 것을 막기 위해 일주일에 일정 횟수 이상 거래를 할 경우 일종의 페널티 목적으로 세금을 징수하는 시스템이 있었습니다. 따라서 이들은 이 세금을 회피하기 위해 한 캐릭터가 계속 물건을 사고 팔다가 제한 횟수에 다다르면 다른 캐릭터에게 보유한 전체 아이템을 모두 넘깁니다. 그러면 전달받은 캐릭터가 이어서 사고 파는 활동을 하고 다시 제한 횟수에 다다르면 다른 캐릭터에게 전달하고…를 반복하는 것이었죠 (<그림14>는 이런 활동을 도식화한 것입니다). 이들이 <그림13>과 같은 네트워크 구조를 갖는 건 이 때문이었습니다.
그림 14. 차익거래 그룹의 활동 구조 – 세금 회피를 위해 다수의 계정을 이용하여 돌아가며 차익거래를 반복하는 구조
3.4. 커뮤니티 유형 분류 및 RMT 추정
위 분석을 통해 우리는 각 커뮤니티별 네트워크 구조를 피처로 사용하면 아이템 현금 거래의 소비자와 공급자 역할을 하는 커뮤니티들을 분류해 낼 수 있다는 것을 알게 되었습니다. 그래서 커뮤니티 단위로 다음과 같은 피처들을 추출한 후 ‘k 평균 군집화 알고리즘’을 이용해 전체 커뮤니티를 5가지 유형으로 분류하였습니다.
- degree centrality 의 평균 및 분산
- betweenness centrality 의 평균 및 분산
- degree assortativity
- clustering coefficient
- radius
- community size
그림 15. 전체 커뮤니티들을 네트워크 구조에 따라 5가지 유형으로 분류한 예
이렇게 분류된 정보를 바탕으로 공급자 역할을 하는 커뮤니티와 소비자 역할을 하는 커뮤니티 사이의 아이템 거래를 RMT 로 추정할 수 있었습니다.
3.5. 요약
지금까지 설명한 아이템 현금 거래 탐지 방법을 요약하여 정리하자면 다음과 같습니다.
- 아이템 거래 행위 중 일방적으로 아이템을 전달하는 거래만 추출하여 네트워크를 구성한다.
- 커뮤니티 탐지 알고리즘을 이용해 수만 개의 노드를 수백 개의 커뮤니티로 묶는다.
- 각 커뮤니티별 네트워크 구조와 관련된 피처들을 추출한다.
- ‘k 평균 군집화 알고리즘’을 이용해 전체 커뮤니티를 몇 개의 유형으로 분류한다.
- 공급자 커뮤니티와 소비자 커뮤니티 사이에 아이템이 전달된 거래만 추출한다.
4. 결론
지금까지 게임 데이터를 이용한 네트워크 분석 사례를 세 가지 소개했습니다. 이들 사례가 갖는 공통점은 네트워크 분석 기법을 이용해 추출한 정보를 활용하면 개체 단위의 분석으로는 구분하기 어려운 문제를 해결하는데 도움이 된다는 것입니다. 특히 커뮤니티 단위에서 추출하는 정보는 개체 단위 분석에서 놓치기 쉬운 거시적인 맥락을 파악하는데 큰 도움이 됩니다.
여기서 주의할 점은 네트워크 분석은 기존 데이터 분석 기법의 대체재가 아니라 보완재라는 점입니다. 간혹 네트워크 분석을 일반적인 데이터 마이닝 방법과 다른 것으로 오해하는 분이 있습니다. 그러나 네트워크 분석은 별개의 기법이 아니라 개체 단위 분석에서 추출하기 힘든 피처들을 제공하는 역할을 합니다. 결국 데이터 분석을 하거나 예측 모델을 만들 때 네트워크 분석 기법을 통해 얻을 수 있는 정보를 최대한 활용한다면 좀 더 풍부한 모델링이 가능하다고 생각합니다.