왜 방법론이 필요한가
포켓몬 대전 데이터는 인터넷에 흩어져 있지만 출처마다 표기·번역·검증 수준이 다릅니다. 본 사이트는 챔피언스 트레이너가 대전 중 1초 안에의존할 만한 자료를 만들기 위해, 데이터를 단순히 옮겨오지 않고 다음 4가지 절차를 거칩니다.
- 두 개 이상의 공인 출처에서 동일 항목을 가져와 교차 검증.
- 챔피언스 룰셋(Lv.50 / IV 31 / SP 66)에 맞춰 재계산.
- 한국어 번역 누락분을 자체 큐레이션으로 채우고 출처 명시.
- 핵심 로직(타입 상성·데미지 공식·스피드 체인)을 단위 테스트로 보호.
데이터 출처 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 파일에서 모든 누락 번역을 수동으로 채웁니다. 번역 기준은 다음 우선순위입니다.
- The Pokémon Company Korea의 공식 발표 자료가 있으면 그대로 사용.
- 없으면 Serebii의 일본어 명칭을 기준으로 의역.
- 본가 시리즈의 유사 기술명이 있으면 일관성을 위해 그것을 따름 (예: -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 의 적용 순서는 다음과 같습니다.
- 베이스 종족값 × Lv.50 + SP + 성격 보정 = 베이스 스피드 스탯.
- 랭크 변화 (-6 ~ +6 단계) 곱셈 적용.
- 구애스카프·테일윈드·쓱쓱·엽록소·모래헤치기·유설·곡예·서지서퍼 등 모든 모디파이어 순차 곱셈.
- 마비는 마지막 ÷2 (메인라인과 동일).
- 최종 결과는 10000으로 cap (메인라인 룰).
투명성과 재현 가능성
본 사이트의 모든 데이터·로직은 GitHub에서 공개됩니다. fetch 스크립트를 직접 실행해 동일한 데이터를 재현할 수 있고, 데미지·스피드 공식을 직접 읽어 검토할 수 있습니다. 데이터에 오류를 발견하면 GitHub Issues에 신고해 주세요 — 24시간 안에 검증 후 수정합니다.
데이터셋 단위의 마지막 갱신일은 /updates 페이지에서 항상 확인할 수 있고, 사이트 자체의 변경 이력(CHANGELOG)도 같은 페이지에 공개됩니다.
한계와 알려진 이슈
본 사이트가 현재 다루지 못하는 항목을 명시합니다.
- 카운터·미러코트·메탈버스트 — 전 턴 데미지에 의존하는 기술은 UI에서 전 턴 데미지를 입력받지 않아 정확한 계산이 불가합니다.
- 사용률 데이터 — 챔피언스의 공식 사용률 페이지가 아직 없어서
usage-rankings.json은 제3자 집계 사이트의 Top 20을 시즌마다 수동으로 옮깁니다. 출처는 각 시즌의 랭킹 페이지에 표기. - per-form 스프라이트 — Rotom-Wash·메가 가블리아스 등은 현재 베이스 폼의 스프라이트를 표시합니다. 폼별 스프라이트는 PokeAPI에 있으나 데이터 fetch가 아직 미완.
- e2e 자동화 테스트 — Playwright 등의 브라우저 단위 자동 테스트는 아직 도입 전. 단위 테스트로 핵심 로직만 보호.