본문으로 건너뛰기
maple-spec: 메이플 복귀 어드바이저 CLI 화면
PERSONAL TOOL개인용 CLI
2026.06.08 – 06.09

maple-spec: 메이플 복귀 어드바이저 CLI

메이플스토리 복귀 유저를 위한 CLI입니다. 넥슨 Open API에 마지막 접속일이 없어서, 과거 날짜의 경험치를 샘플링해 휴면 기간을 역산합니다. 스탯 환산은 커뮤니티 수치를 베끼지 않고 공개 공식에서 유도해, 외부 계산기 계수와 1~5% 안에서 일치함을 확인했습니다.

ROLE
1인 설계·개발
PERIOD
2026.06.08 – 06.09
STACK
Node.js · TypeScript · Open API
OUTPUT
1,751줄 · 런타임 의존성 0
  1. 06.08

    v1 휴면 기간 추정 리포트

  2. 06.08

    What-if 스펙업 분석

  3. 06.09 (전환점)

    스탯 환산표, 외부 계수와 오차 1~5%

  4. 06.09

    두 캐릭터 VS 비교

요약

메이플스토리를 오래 쉬다 돌아오면 "언제부터 쉬었지, 그동안 뭐가 바뀌었지, 뭐부터 올려야 하지"를 알기 어렵습니다. maple-spec은 캐릭터 이름 하나로 휴면 기간, 공백기 패치, 스펙업 우선순위를 한 번에 정리해 주는 터미널 도구입니다.

2026년 6월 8일과 9일, 이틀 동안 Claude Code와 페어로 만들었습니다. 제 캐릭터로 쓰는 개인 도구이고 공개 배포는 하지 않았습니다.

항목내용
코드TypeScript 약 1,750줄, 넥슨 API 호출은 파일 하나로 격리
의존성새로 추가한 런타임 의존성 0
기능복귀 리포트, What-if 스펙업 분석, 스탯 환산표, 두 캐릭터 VS 비교

마지막 접속일이 없다

넥슨 Open API에는 "마지막 접속일"이 없습니다. 휴면 기간을 알려주는 도구인데 정작 그 데이터가 없는 상황이었습니다.

단계내용
결정API가 날짜를 지정한 과거 조회를 지원한다는 점을 이용해, 과거 13개 시점의 경험치를 샘플링하고 경험치가 가장 오래 움직이지 않은 구간을 휴면기로 봅니다
결과실제 캐릭터에서 2025년 8월부터 2026년 3월까지의 공백을 찾아냈고, 그 기간에 걸친 패치만 골라 보여줍니다

숫자를 베끼지 않는다

스펙업 우선순위를 정하려면 "공격력 1이 주스탯 몇과 같은가" 같은 환산이 필요합니다. 커뮤니티에 도는 수치를 그대로 옮기면 출처도 검증도 없는 숫자가 됩니다.

대신 커뮤니티 계산기(MathBro)에 공개된 데미지 공식으로 환산 계수를 직접 유도했습니다. 그리고 다른 외부 계산 사이트의 계수와 대조해 주스탯 비율은 약 1%, 크리티컬 데미지 대 데미지 비율은 약 5% 안에서 일치하는 것을 확인했습니다. 대조만 했을 뿐, 그 사이트의 데이터를 도구에 넣지는 않았습니다. 강화 단계별 절대 수치처럼 공식만으로 확신할 수 없는 부분은 아직 넣지 않았습니다.

실제 값으로 잡은 버그

첫 버전은 하이퍼스탯 "남은 포인트"를 계산할 때 전체 포인트 풀을 읽고 있었습니다. 필드 이름이 use_available이라 사용 가능한 양처럼 보였지만, 실제로는 이미 쓴 것까지 포함한 총량이었습니다. 실제 캐릭터로 결과를 보다가 숫자가 이상하다는 걸 제가 알아챘고, 남은 포인트 필드로 바꿨습니다. API 필드 이름만 믿지 말고 실제 값으로 확인해야 한다는 걸 다시 배웠습니다.

호출 쪽도 보수적으로 짰습니다. 넥슨 API 경계는 파일 하나뿐이고, 요청은 순서대로 보내며, 429가 오면 지수 백오프로 기다립니다.

지금 상태

  • 개인용 CLI로 동작합니다. 6월 이후 기능 추가는 없습니다
  • 계산 결과에 대한 자동 테스트는 없고, 외부 계산 사이트 계수와의 대조로 검증했습니다

배운 점

데이터가 없을 때 가장 쉬운 선택은 다른 곳의 숫자를 빌려오는 것입니다. 이 프로젝트에서는 있는 데이터(과거 조회, 공개 공식)로 없는 값을 유도하는 쪽을 택했고, 그 덕에 결과가 왜 그렇게 나오는지 끝까지 설명할 수 있었습니다.