포케포케

데이터 방법론

본 사이트가 어디서 데이터를 가져와 어떻게 검증하고, 한국어로 옮기는 과정에서 어떤 결정을 내렸는지 투명하게 공개합니다.

왜 방법론이 필요한가

포켓몬 대전 데이터는 인터넷에 흩어져 있지만 출처마다 표기·번역·검증 수준이 다릅니다. 본 사이트는 챔피언스 트레이너가 대전 중 1초 안에의존할 만한 자료를 만들기 위해, 데이터를 단순히 옮겨오지 않고 다음 4가지 절차를 거칩니다.

  1. 두 개 이상의 공인 출처에서 동일 항목을 가져와 교차 검증.
  2. 챔피언스 룰셋(Lv.50 / IV 31 / SP 66)에 맞춰 재계산.
  3. 한국어 번역 누락분을 자체 큐레이션으로 채우고 출처 명시.
  4. 핵심 로직(타입 상성·데미지 공식·스피드 체인)을 단위 테스트로 보호.

데이터 출처 1 — PokéAPI

PokéAPI는 무료·오픈 API로 전국도감 1025종·기술 808개·특성 284개의 종족값·타입·movepool· 한국어 명칭을 제공합니다. scripts/fetch-pokemon.mjs 가 전체 데이터를 fetch하여 src/data/generated/pokemon.json 등 4개 정적 JSON으로 빌드 단계에서 생성합니다.

버전 우선순위: Pokémon은 게임 세대마다 movepool이 달라지므로, 본 사이트는 가장 최근 게임 버전(SV 등)의 movepool을 우선 적용합니다. 해당 게임에 없는 포켓몬은 그 이전 버전(SwSh → SuMo → ORAS → ...)으로 자동 fallback 하는 VERSION_GROUP_PRIORITY 테이블이 fetch 스크립트에 들어 있습니다.

한국어 명칭은 PokéAPI의 species endpoint에 포함된 공식 KO 번역을 그대로 사용합니다 (예: bulbasaur → 이상해씨, miraidon → 미라이돈). 로마자 transliteration이 아니라 공식 한국 닌텐도 번역이므로 신뢰 가능합니다.

데이터 출처 2 — Serebii Pokémon Champions

Serebii의 챔피언스 섹션은 다음 3가지 챔피언스 전용 데이터의 가장 신뢰할 만한 출처입니다.

  • 합법 로스터 — 260 엔트리(186 종, Mega/리저널 폼 포함). 모든 dexNumber는 PokéAPI의 전국도감과 교차 검증해 잘못된 항목 0건 확인.
  • 합법 도구 — 30 hold items + 28 berries + 59 mega stones (총 117종). 메가스톤은 target 포켓몬 + form 매핑까지 포함.
  • 합법 기술 — 492 슬러그. 481개는 PokéAPI와 매칭, 11개는 LA 시그니처 등 PokéAPI에 없는 신규 기술. 11개의 누락 목록은 missingFromBaseData 에 공개돼 있고 메타에서 자주 사용되는 항목만 수동 보강합니다.

한국어 번역 큐레이션

챔피언스의 신규 기술 약 70종은 PokéAPI가 아직 한국어 번역을 제공하지 않습니다. src/data/overrides/movesKo.json 파일에서 모든 누락 번역을 수동으로 채웁니다. 번역 기준은 다음 우선순위입니다.

  1. The Pokémon Company Korea의 공식 발표 자료가 있으면 그대로 사용.
  2. 없으면 Serebii의 일본어 명칭을 기준으로 의역.
  3. 본가 시리즈의 유사 기술명이 있으면 일관성을 위해 그것을 따름 (예: -punch → -펀치).

새 시즌 또는 패치 시 공식 번역이 나오면 override 파일을 갱신합니다. /updates 페이지에서 모든 dataset의 마지막 갱신일을 확인할 수 있습니다.

데미지 공식 검증

데미지 계산기는 메인라인 Gen 5+ 공식(per-step floor 처리)을 그대로 사용합니다. 모든 모디파이어(STAB·타입 상성·급소·다중 타깃·화상·날씨·필드·랭크 변화·풀 HP 트리거 등 23종)의 적용 순서와 곱셈 단계가 본가와 동일합니다.

정확성은 src/lib/damage.test.ts 53개 단위 테스트로 보호됩니다. 본가의 알려진 매치업 (메가 차오리스 → 잠만보, 한카리아스 → 메가 갸라도스 등)을 케이스로 두고, 결과가 게임 내 데미지와 ±1 HP 범위 안에 있는지 매 빌드마다 자동 검증합니다. 테스트가 한 개라도 실패하면 빌드 자체가 실패하므로 잘못된 결과가 배포되는 일은 없습니다.

타입 상성 ( src/lib/effectiveness.test.ts ) + 폼 해석 ( src/lib/resolveForm.test.ts ) + 팀 공유 URL 인코딩 ( src/lib/teamCodec.test.ts )까지 합해 총 77개 테스트가 매 배포 전에 통과해야 합니다.

스피드 체인 검증

스피드 계산은 본가의 Gen 8+ 체인 순서(스탯 → 랭크 → 모디파이어 → 마비)를 그대로 따릅니다. 각 단계에서 floor 처리되어 결과가 게임 내 표시 수치와 동일합니다. src/lib/speedCalc.ts 의 적용 순서는 다음과 같습니다.

  1. 베이스 종족값 × Lv.50 + SP + 성격 보정 = 베이스 스피드 스탯.
  2. 랭크 변화 (-6 ~ +6 단계) 곱셈 적용.
  3. 구애스카프·테일윈드·쓱쓱·엽록소·모래헤치기·유설·곡예·서지서퍼 등 모든 모디파이어 순차 곱셈.
  4. 마비는 마지막 ÷2 (메인라인과 동일).
  5. 최종 결과는 10000으로 cap (메인라인 룰).

투명성과 재현 가능성

본 사이트의 모든 데이터·로직은 GitHub에서 공개됩니다. fetch 스크립트를 직접 실행해 동일한 데이터를 재현할 수 있고, 데미지·스피드 공식을 직접 읽어 검토할 수 있습니다. 데이터에 오류를 발견하면 GitHub Issues에 신고해 주세요 — 24시간 안에 검증 후 수정합니다.

데이터셋 단위의 마지막 갱신일은 /updates 페이지에서 항상 확인할 수 있고, 사이트 자체의 변경 이력(CHANGELOG)도 같은 페이지에 공개됩니다.

한계와 알려진 이슈

본 사이트가 현재 다루지 못하는 항목을 명시합니다.

  • 카운터·미러코트·메탈버스트 — 전 턴 데미지에 의존하는 기술은 UI에서 전 턴 데미지를 입력받지 않아 정확한 계산이 불가합니다.
  • 사용률 데이터 — 챔피언스의 공식 사용률 페이지가 아직 없어서 usage-rankings.json 은 제3자 집계 사이트의 Top 20을 시즌마다 수동으로 옮깁니다. 출처는 각 시즌의 랭킹 페이지에 표기.
  • per-form 스프라이트 — Rotom-Wash·메가 가블리아스 등은 현재 베이스 폼의 스프라이트를 표시합니다. 폼별 스프라이트는 PokeAPI에 있으나 데이터 fetch가 아직 미완.
  • e2e 자동화 테스트 — Playwright 등의 브라우저 단위 자동 테스트는 아직 도입 전. 단위 테스트로 핵심 로직만 보호.