스프레드시트를 활용한 계산기(포켓몬고)

확률형 게임을 하다보면, 투자에 대한 생각을 하지 않을래야 안할 수 없다. 이것은 마치 재무재표를 보고 주식 투자를 결정하는 것과 같은 논리이기도 한데, 결국 자원이 한정되어 있는 대부분의 유저는 합리적인 판단을 하는 쪽이 훨씬 더 빠르게 성장할 수 있기 때문이다.

개소리이고, 사실 포고를 하면서 외국의 수많은 사이트들과 포케지니라는 앱 등을 보면서 불만족스러웠던 부분이 있었다. PvP에 대한 건 뭐 어느 정도 그래도 구체화가 되어 있는데 PvE에 대해서는 왜 등수를 체크하지 않는거지? 사실 효율적인 부분에 있어서 개체값이 PvE에서 얻을 수 있는 성과에 크게 영향을 미치지 못한다는 것은 맞다. 무조건 높은 게 좋을 경우도 맞고 말이다.

그렇지만, 더 자세한 걸 알고 싶었다. 말하자면, 지식의 탐구욕이다. 심각한 ADHD라는 판정을 받은 이놈의 뇌는 정말 비효율적인 활동을 하는 것에 특화되어 있어서, 꽂힌 게 있으면 무조건 해야하는 성질이 있었다. 기존에는 그래도 계속 피차 미루는 성질이 있었는데, 저번 주에 콘서타를 54mg에서 증량하여 81mg을 먹기 시작하니 프로젝트도 그렇고 집중해서 무언가를 할 수 있는 원동력이 태생 처음으로 생긴 듯 싶었다. 물론 덕분에 이제 약효가 돌 때 식당에만 들어가면 구역질이 날 때도 있고 부작용도 여럿 있지만, 효과는 탁월했다. 그래서 빡 집중해서, 미뤄놨던 프로젝트를 하나둘씩 끝내감과 동시에 이 장난감 계산기도 만들어낼 수 있었다.

계산기의 메인은 결국 등수 체크이다. 말하자면, 내가 잡은 포켓몬이 어떤 등수를 가지고 있는지, 투자를 받을 만한(별의 모래 및 사탕) 가치가 있는지를 확인할 수 있는 지표인 것이다.

PvE 세팅에는 적을 Default로 설정할 것인가, 혹은 특정한 적을 설정할 것인가에 따라 다른 데이터를 뽑아낼 수 있다. 뭐 양덕들이 수많은 아티클 등으로 적어 놓은 글들을 보면서, DPS(Damage per Seconds) ToF(Time of Fields) TDO(Total Damage Output) ER(Equivalent Rate) 등의 지표를 참고하면서 가치 평가를 수행할 수 있게 제작했으며, 그냥 딱지치기로 배운 파이썬 기초적인 기능을 사용하여 데이터 크롤링 수행 이후 스프레드시트에서의 조잡한 수식을 사용하여 내가 원하는 기능을 수행할 수 있게 만들었다.

PvP 세팅 역시도 조금 현실적으로 접근할 수 있게, 기존의 데이터 계산기들(Iv4U 등)의 기능에 추가하여, 일정 개체 이상의 순위 역시도 체크할 수 있게 조작했다. 레이드나 부화, 그리고 이를 교환하는 방식, 혹은 정화 등등으로만 얻을 수 있는 포켓몬들은 당연히 그에 맞게 현실적인(Equivalent) 계산 방법이 필요하다고 생각하였다.

참고할 사람은 아래 링크를 참고하면 된다. 배포용이고, 아마추어 작품이다 보니 최적화도 꽝이고 데이터가 너무 많이 있다 싶을 수 있으니 그런 게 고치고 싶다면 걍 사본 만들기 하고 고치면 된다.

(https://docs.google.com/spreadsheets/d/1R8s083cumdhksg5_anBIqSMyxAeIMfrVB8gQwx6Ui84/edit?usp=sharing)

PvE_CalcIV PvE IV Calculator,Reshiram's Raid stats (versus Genesect) 검색이 완료되었습니다.,타입,이 포켓몬의 배틀 랭크는 1등입니다! 1등 개체는 [15/15/15] 개체이며 이 개체는 평균적으로 48.74dps 딜이 나오면서 최고의 공격개체보단 [-0.0850] 정도 초당 딜을 덜 넣고, 평균적으로 40.77초 더 버티며 최고의 방어개체보단 [0.00초] 빨리 죽을 것이며, 평균적으로 1986.93 정도로 최고의 개체보다 [0.00]정도 살아있...

docs.google.com

아무튼, 참 조잡한 계산기를 만들면서 느꼈던 점은 크게 두 가지이다. 나는 이제 앱으로 제작하면 조금 접근성이 떨어질 수 있다고 생각했기 때문에 스프레드시트로 만들었는데, 나의 미숙함으로 아마 폰에서 접근하기는 힘들 정도로 데이터 처리가 느릴 것이다. 사용자들의 사용성을 맞추기 위해서는 최적화가 필수라는 걸 느꼈다. 지역톡 오픈톡방 등에서 스스로 느낀 고쳐야 할 점이다. 두 번째로는, 역시 사람들은 나같은 머저리와 다르게 똑똑하다는 점이다. 솔직히 이 데이터는 데이터를 얻기 위해서 진행해야 할 귀찮음에 비해 큰 밸류가 없다. 계산을 하는 것에 걸리는 로딩 시간과 세팅을 해야하는 입력 과정을 진행하기보다는 걍 그 시간에 게임을 더 즐기는 게 낫다.

최적화에 대해서는 아예 식을 새로이 짜서, 걍 base stat과 skill value, 그리고 er과의 연관성을 상관분석법을 사용하던가 스스로 공식을 만들던가 해서 수식을 간단하게 생략하는 게 좋았을 것이다. 말하자면, 코딩에서는 쓸 데 없는 코딩을 다 빼버리는 거다. 두 번째로는 raw data를 사실 그대로 옮겨왔는데 이것 역시도 가공해서 실제로 쓸만한 수준으로 만들어 버리는 것이다. 역시, 첫번째와 병행하면 더 좋은 접근법이 되었을 것이다.

업데이트는 아마 스프레드시트로는 하지 않을 것 같다. 앱으로 만들지 않을까 싶다. 사실 처음에는 앱시트로 만들어버릴까 싶었는데, 사용자가 10명 이상이면 돈이 들어간다는 이야기에 접근성을 위하여 진행하지 않았다. 그런데, 지금 생각해보니 차라리 아예 앱을 만들어버리는 것도 괜찮은 솔루션이었을 것 같다.