안녕하세요?

 

주기적으로 렙업 보고 드렸던 렙업 머쉰입니다 (__)

 

오늘자 패치로 인하여 핫한 글들을 보면서도...

그리고 지난 글들을 보면서도 몇번이나 댓글로 설명드렸지만 다들 아직 잘 모르시는거 같아서

오늘은 트래커와 서드파티에 대해서 한번 설명해보고자 합니다.

 

 

들어가기 앞서서, 일단 술을 먹어서 두서 없을수도 있다는 점 양해부탁드리며.......

 

저는 4년제 대학교의 사회과학쪽을 전공한 전형적인 문과생이었지만, 취직의 한계를 느껴,

IT로 전향하게되어 뒤늦게 공부하게된 초보 개발자이자 취업준비생 입니다.

 

초보 개발자이지만, 홈페이지 하나정도는 설계하고 디자인만 나오면 몇일내로 만들어낼 정도는 되며..

개인적으로 포켓몬고 관련한 프로그램도 개발하고 싶어서 여기저기 많이 알아보고 개발을 시도했었기 때문에

 

좀 더 많이 알고 있다는점 먼저 설명드리고 들어가겠습니다.

 

 

더 잘하시는 개발자분들이 보시고 틀린점이 있다면 따끔한 지적도 환영합니다.

 

 

 

 

-------------------------------------------------------------------------------------------------------

 

(※ 밑에서 나오는 '쿼리' 란 명령어 라는 개념으로 생각하시면 됩니다.)

 

 

먼저, 이번 패치에 대해서 논하기 전에 트래커의 개념에 대해서  알필요가 있습니다.

 

 

1. 트래커(Tracker)란 무엇인가?

 

트래커(Tracker)란 사전적 의미로 추적자 라는 의미를 갖습니다. 이를 포켓몬고(이하 포고)에 적용한다면,

포켓몬이 등장하는 위치와 정보에 대해서 추적을 해주는 앱과 웹 등의 모든 서비스를 통칭하는 서비스를 말하게 됩니다.

 

대표적으로 안드로이드에서 Txxxxxxxxxxxxxxxxxxxx 라는 앱이 있었으며,

아이폰에서도 Txxxxxxxxxxxxxxxxxxxxxx 라는 앱이 있었습니다.

현재에는 흔히 이야기하는 서x맵과 부x맵이 있습니다.

 

 

2. 트래커(Tracker)는 왜 문제인가?

 

트래커(Tracker)가 왜 문제인지를 알기 위해서는 DataBase(이하 DB)에 대한 기본적인 지식이 필요합니다.

거의 모든 인터넷 서비스는 서버에 있는 DB를 기반으로 서비스가 운영됩니다. (아닌곳도 어쩌다 있긴 있음)

 

특히, 로그인을 통하여 활동하는 사이트의 경우 DB는 반드시 필요한데 이 DB에는 기본적인 4가지 기능이 있습니다.

데이터를 불러오는 select, 데이터를 삽입하는 insert, 데이터를 수정하는 update, 데이터를 삭제하는 delete

위의 이 4가지 명령어를 기본으로 모든 DB의 명령문의 작성되게 됩니다.

 

이것을 포켓몬 게임으로 설명을 드리면, 처음 설치하고 회원가입을 하는 것은 insert 명령문이 한번 실행됩니다.

이후 로그인을 하게되면, 유저의 정보를 select 쿼리로 확인을 하는데, 이때 아이디 비밀번호가 일치하는 여부를 확인하는 select 쿼리 한번과, 로그인이 성공했을 경우 이후에 유저 정보를 불러오는 select 쿼리를 한번 더 실행하게 됩니다.

 

그럼 여기서 의문이 생깁니다. 유저의 정보의 경우엔 포켓몬 부터 도감, 메달 등등 다양한 정보들이 있는데 이걸 각각 계속 불러줘야되는게 아니냐?

결론부터 말하자만 아닙니다. 개발자가 아닌 분이 보시기엔 길고 복잡한 쿼리가 될수는 있지만 select 쿼리 하나로 처리가 가능합니다.

 

 

 

(실제로 간이로 했던 프로젝트 DB 관계도, 실제 서비스 되는 것들은 최소 10배는 더 복잡합니다.)

 

약간 더 심화해서 설명드리면, DB는 Table이라는 구조로 짜여져 있는데, 각각 독립된 구조입니다.

하지만, 각각의 Table 사이에 위에 보이는 것처럼 연결된 선구조 (Foregin Key)일 경우 여러가지 방법을 통해서 DB끼리 연결하여 한번의 select 쿼리로 불러올수가 있습니다.

 

(해당 이미지는 실제로 개발에 사용했던 쿼리로 게시글과 댓글과 호스팅정보 등 Table 여러개에 담긴 정보를 한번의 쿼리로 불러오는 쿼리본 입니다. 물론 결과는 지금 DB가 없어서 안나옴) 

 

 

다시 포고로 돌아오면, 포고는 유저의 캐릭터가 프로그램상에서 정해진 일정 거리의 좌표를 이동하게 되면 해당 좌표점을 기준으로 프로그램상에서 설정된 (추정치 약 10m) 반경내를 select 쿼리문을 통해서 호출하게 됩니다.

 

이 다음이 굉장히 중요한데.

해당 좌표점을 기준으로 포켓몬 정보가 담긴 포켓몬 젠 Table의 정보를 select 쿼리로 호출하게되면

보통 개발과 이후 과정의 편의를 위해서 해당 포켓몬의 모든 정보를 가져올수 있습니다.

 

물론, 데이터 마이닝을 해본것이 아니기 때문에 인게임 내에서 모든 정보를 가져오는지는 알수는 없습니다만,

불러오는것은 가능합니다. 이 정보 안에는 논란이 되는 개체값, 기술값 등 모든 정보를 가져오게 합니다.

 

 

그렇다면 다시 질문으로 돌아와서 왜 트래커(Tracker) 문제인가?

 

트래커는 두가지 방식이 있습니다.

 

첫번째 방식은 PTC계정을 랜덤하게 생성하여 봇을 통해서 무한 select 쿼리를 남발하며 포켓몬 검색이 되는 최대 속도인 30km/h로 움직이며 어마어마한 트래픽을 발생시키면서 검색을 하고 지속적으로 서버에 엄청난 문제를 발생시키는 봇 방식. (기존의 앱 방식)

 

두번째 방식개조된 포고 API를 통하여 직접적으로 서버에 접근(사실상 해킹이랑 다를바 없음)하여 데이터를 한번에 탈취하는 방식입니다. 두번째 방식의 경우엔 사실 뒤에서 돌아가는 Back-End 코드를 볼수 없기 때문에 얼마나 트래픽을 유발하는지는 '정확하게'는 알 수 없습니다. 다만, API를 통하여 편하게 접근하다는 면에서 볼때, 봇보다는 상대적으로 트래픽을 '덜' 발생시킨다는것을 아주 간단히 유추 할 수 있습니다. (서x맵 방식)

 

위의 설명을 통해서 결론을 내자면, 트래커(Tracker)는 어떤 방식이든 간에 서버의 트래픽 과부하를 일으키면서 렉을 발생시키는 가장 큰 요인이면서, 게임의 공정성을 해치는 요소이기 때문에 문제인 것입니다.

 

(부가적으로 IV go등 개체값 확인 앱에 대해서 말들이 많은데, 인게임내에서 움직이면서 select 쿼리를 남발하는것이 훨씬 많고, IV go는 한번의 조회당, 단 한번의 select 쿼리로 모든 정보를 불러오기 때문에 상대적으로 서버에 부담은 덜 주는 편입니다. 이 부분에 대한 논쟁은 끝도 없으니 여기서 생략.)

 

 

 

 

 

3. 그럼 이번 패치의 경우 효과가 있는가?

 

저는 단기적인 효과밖에 없다고 생각합니다. 자체적으로 계속 수정해서 사용하는 트래커(Tracker)들의 API를 조금 수정해줘서 레벨별로 개체값을 받아오면 되기 때문입니다.

개체값, 기술값 자체를 완전히 랜덤으로 돌릴 수는 없습니다. (서버 트래픽 문제) 그렇기때문에 100% 레벨별로 개체값과 스킬은 정해져있을 것입니다.

 

그렇다고 의미가 없다고는 못하는게, API를 이용한 개발자가 아니라 개인적인 봇을 이용한 트래커(Tracker)개발자들은 이제 섯불리 트래커(Tracker) 개발을 손대기 힘들기 때문에 조금은 더 나아진 상황이라고 생각합니다.

 

그리고, 나이언틱이 더 이상 놀지 않고 일하고 있다는거 자체가 가장 큰 시사점이라 생각합니다.

 

 

 

 

 

4. 트래커(Tracker) & GPS & 봇의 해결책은 있는가?

 

생각하는 해결 방안은 많습니다만, 근본적으로 모든 문제를 차단하는것은 불가능합니다.

따라서 개발자 자체를 조지는게 가장 빠른 방법입니다. (타 게임에서 겪은 실제 경험)

물론, 블리자드가 오버워치 핵개발자를 조지려고 소송까지 냈지만 진 경우처럼, 각 국의 법이 달라서

또 완전하게 조질수는 없습니다. 아주 상당히 힘이 듭니다.

 

하지만, 그럼에도 불구하고 유저들이 한마음 한 뜻으로 노력한다면 클린한 포고가 되지 않을까 싶습니다.

 

저는 필드에 나가서 사냥을 하면서 포고하는 유저들과 많은 대화를 나눕니다.

많은 유저들을 봤고, 트래커와 GPS, 봇등에 대해서 많은 이야기를 나누어 보았습니다.

어느 사용자건 다 똑같이 말합니다. 셋 다 없어져야 한다고. (필드에 나온사람 기준)

 

특히, 인벤에서도 아직 논란이 되는 트래커(Tracker) 사용자의 경우에도

사용자이긴 하지만 공정성을 위해서 차라리 없어졌으면 좋겠다 라고 말씀하신분들이 상당히 많았습니다.

 

그러니 무조건 트래커 사용자라고 해서 트래커 옹호론자 라고 생각하는것은 조금 위험한 생각이라 생각합니다.

(극히 주관적 생각)

 

 

뭐 두서없이 글이 길긴 했지만, 클린한 게임을 위해서 노력하는 유저와 게임사 모두의 노력이 합해져서 클린해지는것이야 말로 가장 바람직한 게임의 방향성이 아닌가 싶습니다.

 

긴글 읽어 주셔서 감사합니다.

오류에 관해서 지적해주실 부분이 있거나 추가적인인 설명이 필요하다면 댓글 혹은

시간이 많이 지난 경우에는 쪽지로 주시면 됩니다 '-'

 

모두 즐 포고 하세요!