온라인 게임의 부정 프로그램을 사용해 재화를 모으는 무리, 소위 '작업장'을 둘러싼 문제는 끊이지 않고 있다. 각종 제재에도 굴하지 않고 계속 나타나는 그들. 온라인 게임의 유지를 위해서는 작업장 봇을 탐지하는 것은 당연한 일이다.
넥슨 데이터 분석팀의 장창완 프로그래머도 그런 상황을 겪은 사람이다. 그는 ‘애니메이션의 유사도 분석을 활용한 온라인 액션게임 어뷰징 탐지’란 강연을 통해 팀이 작업장 유저를 탐지하기 위해 활용한 기술적 노하우를 소개했다. 강연을 정리했다. /디스이즈게임 김규현 기자
넥슨 데이터 분석팀의 장창완 프로그래머
# 흥행하는 마비노기 영웅전, 창궐하는 작업장 봇
장창완 프로그래머는 6년간 <마비노기 영웅전>(이하 마영전)의 라이브 서비스를 맡아왔다. 신규 캐릭터와 신규 게임모드, 콘텐츠 해외 서비스 런칭 등을 지속한 결과 게임은 흥행할 수 있었다. 그러나 게임이 서비스되면서 어둠의 무리, '작업장'도 서서히 유입되기 시작했다.
초기에는 하드코딩, 서버 패턴 감지 툴 등 다양한 시도를 했으나 효과는 별로였다. 작업장의 대응이 빨랐기 때문이다. 작업장의 존재는 <마영전> 서버에서 대규모 크래시를 일으켜 유저들에게 불편함을 줬다. 그리고 작업장 봇이 얻은 골드가 급증해 인플레이션이 발생, 게임 경제에도 부정적 영향을 끼쳤다.
어려운 상황에서 등판한 희망, 로그 분석 툴
작업장 성행으로 인해 유저 피해가 계속 늘어나고 있는 상황이지만, 탐지방식은 안정화, QA검수과정 이후서버에 넣는 과정을 거쳐야 했다. 그러다 보니 작업장에 빠르게 대응하기 어려웠다.
이런 상황을 뒤집은 것은 '로그 분석 툴' 도입이었다. 다행히, 결과는 매우 효과가 좋았고 지금까지 안정적으로 운용할 수 있었다. 회사 내에선 상(?)도 받았고. 덕분에 NDC에서 강연도 하게 됐다.
물론 이렇게 끝났더라면 좋았겠지만, 작업장은 여전히 활동 중이다. 무엇보다도 작업장은 <마영전> 단독의 문제가 아니다. 다른 넥슨의 라이브 서비스 중인 게임 전반에 걸쳐있는 문제였다. 그래서 장창완 프로그래머는 데이터 분석팀으로 이동, 넥슨 게임 전반에서 본격적으로 작업장과의 전쟁에 나선다.
# 실시간으로 봇을 잡아내자, LBD 솔루션
장창완 프로그래머가 데이터 분석팀에서 처음 시도한 일은 <마영전>에서 사용한 봇 탐지 시스템을 확장해 시도하는 것이었다. 그러나 결과는 좋지 않았다. <마영전>에 고도화 돼 있던 툴은 다른 게임으로의 확장성을 고려하지 않아 다른 게임에는 적용하기 어려웠던 것이다. 그렇다고 확장성을 고려하면 해당 게임에서 쓰던 툴보다 성능이 떨어져 오히려 역효과를 낳을 수도 있었다.
두루 쓰일 수 있는 솔루션을 위해서라면 넥슨의 게임들은 훌륭한 무대다.
데이터 분석팀은 이 딜레마에 대해, 확장성을 우선으로 하되 나중에 고도화하는 구조로 만들기로 했다. 이런 선택의 배경은 넥슨의 환경 구조 때문에 가능했다. 넥슨에는 여러 라이브 게임이 있고, 라이브 경험이 풍부했다. 그리고 유사한 장르 게임이 있어 공통될 수 있는 부분이 많았다. 이런 장점을 활용해, 분석팀은 작업장 봇 유저를 걸러내는 라이브 봇 탐지 솔루션 (Live Bot Detection; LBD)를 개발하기로 한다.
그러나, LBD는 통합솔루션 개발을 두고 여러 부서가 느끼는 부담으로 인해 또 다른 난관을 겪었다. 그래서 데이터 분석팀은 부서별 부담을 최소화 하는 쪽으로 진행했다. 가령, 비용관리 부서는 비용대비 효율을 최대로 하는 솔루션을 주문했는데 분석팀은 탐지로직을 모듈화해 다른 게임의 성공사례를 전체가 공유할 수 있게 하여 비용을 줄였다.
LBD 솔루션의 효과: 시스템 내에서 직접 봇을 찾는다.
그렇게 제작된 LBD 솔루션은 확실히 효과가 있었다. 과거엔 엑셀 시트로 수동 조건 설정해서 봇을 잡았지만 이제는 시스템에서 직접 분포를 확인해 탐색이 가능해졌다. 그리고 과거의 시스템에서는 봇이 우회할 수 있었지만, 이제는 머신 러닝을 기반으로 해서 분포가 바뀌어도 잡을 수 있도록 시스템이 향상됐다.
LBD 솔루션은 기존 라이브 성공사례를 적용하고 있으며, 현재도 확장하고 있다. 최종목표는 넥슨이 서비스하는 게임에서 작업장 피해를 최소화시키는 것이다. LBD는 대용량 데이터를 처리하고 실시간 분석도 유연하게 할 있는 게 장점이다. 그리고 전문 웹/ETL 개발자 없이도 효율적인 솔루션으로 개발될 수 있다. 인재 채용이 어렵고 신규 인원의 초기 교육 비용이 많은 단점이 있지만, 일회성 비용이므로 LBD는 장기적 이점이 더 컸다.
# LBD의 애니메이션 유사도 분석
LBD는 여러 봇 탐지 모듈을 포함하는데, 그 중 장창완 프로그래머가 가장 애착을 느낀 것은 애니메이션 유사도 모듈이다. <마영전>에서 사람이 컴퓨터 앞에서 봇 유저를 계속 감시하기 어렵자, 이미 제재한 봇 캐릭터와 유사한 패턴의 캐릭터를 자동으로 제재하고 싶은 것에서부터 시작됐다.
애니메이션 유사도 분석은 우선 일반 캐릭터와 봇 캐릭터의 행동 패턴을 구분하는 것으로 시작한다. 이를 위해 일정 시간마다 특정 애니메이션이 얼마나 자주 발생하는지를 로그로 기록하게 했다. 그 다음 LBD의 데이터 수집-저장-분석 체계인 데이터 파이프라인으로 로그를 실시간 수집했다.
사람과 봇의 애니메이션에는 행동 로그부터 차이가 있다.
그러자 사람과 봇 사이에는 분명한 차이가 있었다. 사람은 다양한 행동을 하고 그 중엔 사망이나 사다리 타기 같은 비효율적인 행동도 있었다. 반면 봇은 특정행동을 반복했고, 이동/공격 없이 전투가 끝나는 비정상적인 플레이를 유추할 수 있었다.
이후, 이를 더 정확하게 측정할 방법에 대해 생각하기 시작했다. 정보 검색 분야에는 문서 간 유사도를 측정하는 방법이 있다. 문서 내 단어가 얼마나 빈번하게 출현하는 가를 찾아내는 것이다. 이를 애니메이션에 대입해 보면, 빈번하게 출현하는 단어는 빈번한 캐릭터 애니메이션이고, 문서들은 캐릭터 애니메이션 집합으로 비할 수 있다. 그래서 데이터 분석팀은 문서간 유사도를 측정하는 TF-IDF 와 VSM을 사용해 애니메이션 패턴을 정량화하기로 했다.
TF-IDF는 중요도에 따라 가중치를 부여해 유사도를 비교하는 방법이다. 가중치를 부여하는 이유는 발생빈도가 적은 애니메이션에 변별력을 주기 위해서다. 가령 봇은 ‘이동’과 ‘사다리타기’ 둘 다 안 하지만, 사람은 ‘이동’은 하고 ‘사다리타기’는 가끔 한다. 이 때 이동은 봇과 사람을 확실히 구분하지만, 사다리타기는 알기 어렵다. 그래서 발생빈도가 적지만 중요한 항목에 가중치를 주기 위해 TF-IDF를 사용하는 것이다. 그리고 VSM은 분석한 TF-IDF 값을 가진 딕셔너리 값을 벡터로 하여 유사도를 측정하는 것이다.
이런 정밀한 정량화의 결과, 데이터 분석팀은 사람 유저와 봇의 차이를 확연히 구별할 있었다. 사람은 TF-IDF에서 SP스킬이나 감정 표현 등의 다양한 기술 사용에서 가중치가 높은 반면, 봇은 피격 상황이나 제자리 행동 등의 행동에서 가중치가 높았다.
그리고 이를 시각화 하면 차이는 더 뚜렷해진다, 애니메이션 발생 빈도를 워드 클라우드로 바꾸어 보면 사람과 봇이 어떤 행동을 우선으로 하는지가 뚜렷이 구별된다. 특히 평균 사람 행동 차트와 대조해 봤을 때 사람 유저는 이와 거의 근접했지만, 봇은 그렇지 않음을 알 수 있다.
#아직 쉽지 않은, 그래서 함께 싸워야 하는 봇과의 전쟁
이런 LBD 솔루션이 '봇'으로 판명하면 사람의 검수 결과로도 봇인 경우가 100%였다. 그러나 이것이 제재로 이어지진 않았는데, 탐지 로직의 오인으로 억울한 피해자를 가리기 위해서였다. 온라인 게임은 동접 유저가 10만 명이면, 탐지 정확도에 1%만 부족해도 하루에 1,000명이 오인 제재를 받을 수 있다. 그러므로 다른 요소를 추가해 교차 검증하고 무조건 쫓아내는 대신, 작업장의 효율이 떨어지는 식으로 제재를 하는 방법으로 피해를 최소화하게 했다.
끝으로, 장창환 개발자는 이러한 방법으로 봇과의 전쟁을 금새 끝낼 수 있을 것이라고 판단했지만, 여전히 작업장 봇은 암약하고, 그 싸움은 끝나지 않고 있다고 말했다. '이 전쟁을 함께 할 동료를 모집한다!'는 말을 남기며 강연을 마쳤다.
봇은 여전히 넘쳐나고 잡을 인력은 확실히 부족하다.