pokemon.gameinfo.io 에서 스킬조합별 공격력 순위를 보면서 포켓몬을 키우고 있었는데 자속성보정이 안들어간 순위라는 것을 깨닫고 제가 직접 순위를 만들어보기로 하였습니다.

데미지 식을 보면 아래와 같습니다.

Damage = (1/2∗기술공격력∗(공격자의 공격력/방어자의 방어력)∗자속보정∗속성보정)+1

(소수점이하는 내림)


공격자의 공격력=(종족값+개체값)∗레벨 보정치

방어자의 방어력=(종족값+개체값)∗레벨 보정치


레벨, 개체값, 상대방 방어력과 속성이 동일하다고 가정한다면, 

Damage = k*기술공격력*자속보정*공격자의공격력 종족값 이 됩니다.


종족값은 https://pokemongo.gamepress.gg/pokemon-list-advanced 에서,

기술공격력은 https://pokemongo.gamepress.gg/quick-moves 와 https://pokemongo.gamepress.gg/charge-moves 에서 갖고 왔습니다.

https://pokemongo.gamepress.gg/moveset-grades-explanation 에 따라 critical hit은 구현되지 않았다고 가정하고 무시하였습니다.

자료를 외국사이트에서 갖고와 포켓몬 이름뺴고 다 영어로 기술된 점 양해부탁드립니다.

한글화 했습니다.

*썬더, 파이어, 프리저, 뮤, 뮤츠,  2세대 아기포켓몬은 제외했습니다.


체육관 공격시 100초의 시간을 가지고 quick move 와 charge move를 가지고 싸우게 됩니다.

quick move와 charge move 모두 cooldown 과 power값을 가지게 됩니다. cooldown 시 어떠한 move도 하지 못합니다. 보통은 power/cooldown이 dps가 되겠지요. 

하지만 charge move를 쓰기 위해서는 quick move를 통해 energy를 채워야 합니다.

이러한 매커니즘 하에서 시뮬레이션을 통해 각 기술의 dps를 구했습니다.

100초의 시간동안 쿨타임마다 quick move를 쓰고, energy가 다 차면 charge move를 쓰는 식으로 진행하며, 공격할 때 마다 move의 power*자속보정값을 계속 더해나갑니다. 그리고 시간이 100초가 지나면 더해진 damage를 100으로 나누어 해당기술의 dps를 구했습니다. 그리고 그 dps에 해당 포켓몬의 공격력을 곱해서 dps를 구했습니다.


*알고리즘 추가

1. 초기화. 시간, 데미지, 에너지 0

    time=0;

    damage=0;

    energy=0;

2. 에너지 찰때까지 기본공격

       while energy < 차지공격 시 필요한 에너지

           time = time + 기본공격 쿨다운 시간;

           damage = damage + 기본공격 자속성 보정 * 기본공격 파워;

           energy = energy + 기본공격 EPS * 기본공격 쿨다운 시간;

       end

3. 에너지 차면 차지공격

       time = time + 차지공격 쿨다운시간;

       damage = damage + 차지공격 자속성 보정 * 차지공격 파워;

       energy = energy- 차지공격 시 필요한 에너지;

4. 2, 3을 100초까지 반복후 그때까지 쌓인 damage를 100으로 나눠 dps 산출

    while time <100

        2.

        3. 

    end

    dps = damage / 100;


여기에는 중요한 3가지 가정이 들어간다는 것을 유념해주시기 바랍니다.

1) 방어력, 체력은 고려되지 않고, 무조건 100초까지 싸운다는 가정

2) 어떠한 시간오차도없이 cooltime 마다 딱딱 알맞은 move를 사용한다는 가정

3) 회피하지 않는다는 가정


*2017.02.11 오후 2시 자속성보정 수정, 포켓몬 타입 수정 (페어리타입)


Damage Top 50 



New CP (Damage * sqrt ( DEF*STA ) ) Top 50



*2017.02.11 오후 10시 100초 시뮬레이션 결과 수록(100초간 Quick move, Charge move의 공격횟수, 데미지 수록)으로 속성보정도 계산가능. 일반이용자를 위한 summary tab 추가


첨부한 엑셀파일을 이용하여 이보다 더 좋은 (ex : 기술 한글화(한글화완료), 탱킹력까지 고려한 공격랭킹, 방어랭킹 등등) 랭킹을 만들어주시면 감사하겠습니다.


혹여 틀린 점 있으면 말씀해주시면 수정해보도록하겠습니다.


모두 즐거운 주말 보내시길 :)