|
2026-11-05 14:33
조회: 19
추천: 0
[AI 활용 팁] Codex로 만든 메이플스토리 ‘명예의 전당’ 홈페이지AI를 활용해 NEXON Open API의 게임 데이터를 이것저것 다뤄보다가, ‘이런 것도 실제로 만들 수 있을까?’ 하는 호기심이 생겼습니다. 그중 재미있어 보였던 아이디어를 Codex와 함께 ‘명예의 전당’ 홈페이지로 만들어 보았습니다. 1. 왜 ‘명예의 전당’을 만들었나요? 메이플스토리의 전투력 순위를 보여주는 홈페이지는 이미 있습니다. 하지만 저는 나와 같은 레벨에서는 누가 가장 강한지, 특정 레벨 구간에서 특정 직업만 골랐을 때는 순위가 어떻게 되는지 궁금했습니다. 제가 보고 싶은 조건으로 비교 범위를 좁혀 볼 수 있는 순위표를 만들고 싶었습니다. 메이플스토리에서 레벨은 캐릭터가 성장한 정도, 직업은 전사나 마법사처럼 캐릭터가 싸우는 방식, 월드는 캐릭터가 속한 서버를 뜻합니다. 전투력은 캐릭터가 얼마나 강한지를 장비와 능력치 등을 바탕으로 게임에서 숫자로 보여주는 지표입니다. 명예의 전당에서는 기준일을 고르고, 레벨 범위와 직업, 서버를 선택하면 그 조건에 맞는 상위 10명이 나옵니다. 1~3위는 캐릭터 모습과 함께 금·은·동 시상대로 보여주고, 4~10위는 표로 정리했습니다. 캐릭터 이름을 누르면 그 숫자가 어디에서 나왔는지도 확인할 수 있습니다. ![]() 그림 1. 날짜와 레벨·직업·서버를 골라 보고 싶은 순위표를 만드는 화면입니다. 2. 그런데 순위표를 만들려니, 어떤 상태의 전투력을 쓸지가 문제였습니다 넥슨은 외부 개발자가 게임 정보를 활용할 수 있도록 NEXON Open API라는 공개 데이터 창구를 제공합니다. 여기에서 기준일에 기록된 캐릭터의 장비와 능력치, 실제 착용 상태의 전투력을 가져올 수 있습니다. 문제는 같은 캐릭터가 상황에 따라 장비를 바꾼다는 점이었습니다. 예를 들어 캐릭터를 키울 때는 경험치를 더 많이 얻는 장비를 쓰고, 강한 몬스터를 상대할 때는 공격에 도움이 되는 장비로 갈아낄 수 있습니다. 운동으로 비유하면, 같은 선수가 평소 훈련할 때와 경기에 나갈 때 다른 장비를 쓰는 것과 비슷합니다. 메이플스토리에서는 이렇게 용도별로 저장해 두는 장비와 설정을 프리셋이라고 부릅니다. 공개 데이터에 그날 사냥용 장비를 끼고 있던 상태가 기록됐다면, 거기에 나온 전투력은 그 차림에서의 값입니다. 하지만 제가 만든 순위표에서는 그 캐릭터가 저장해 둔 다른 조합으로 바꾸면 전투력이 어떻게 달라지는지도 보고 싶었습니다. 그래서 기준일의 실제 착용 전투력은 그대로 가져오고, 같은 날짜의 자료로 검증할 수 있는 다른 조합의 전투력을 따로 계산했습니다. 두 값 중 높은 값을 순위에 쓰되, 상세 화면에서 게임이 제공한 값인지, 제가 만든 계산 도구가 계산한 값인지 확인할 수 있도록 했습니다. 3. Codex에게는 다른 장비를 계산하기 전에, 지금 끼고 있는 장비부터 검산하게 했습니다 사용한 AI는 OpenAI Codex이고, 당시 ChatGPT Pro 유료 플랜으로 작업했습니다. 처음 맞닥뜨린 문제는 실제로 끼고 있는 장비를 기준으로 계산했는데도 게임에서 제공한 전투력과 다른 경우가 있었다는 점입니다. 지금 입고 있는 장비의 전투력도 재현하기 어렵다면, 다른 장비로 갈아입었을 때의 계산을 믿을 근거도 부족합니다. 실제로 원인을 살펴보니, 장비 정보에는 들어 있지만 해당 상태에서는 발동하지 않는 효과가 있었습니다. 반지에 붙은 효과도 정해진 조건을 만족해야 적용됩니다. 장비를 세트로 착용하면 한 부위를 바꿨을 때 세트 전체의 보너스가 달라지기도 합니다. 이런 경우에는 최종 숫자만 보면 어디에서 차이가 났는지 알기 어렵습니다. 제가 Codex에 맡긴 일은 차이가 생기는 지점을 좁혀가는 것이었습니다. 먼저 같은 날짜에 같은 캐릭터의 자료를 비교하는지 확인하고, 실제로 적용되는 효과만 골라 현재 착용 상태를 다시 계산했습니다. 그 값이 게임에서 제공한 전투력과 1 단위까지 맞는지 검산했습니다. 계산 규칙을 수정할 때는 원래 맞던 캐릭터와 틀리던 캐릭터에 같은 규칙을 적용해 함께 확인했습니다. 다른 자료에도 써볼 수 있는 프롬프트 아래는 실제 작업에서 사용한 기준을 다른 자료에도 적용할 수 있도록 정리한 예시입니다. 한글과 영문은 같은 요청이며, 둘 중 편한 쪽을 사용하면 됩니다. 한글 프롬프트 기준 자료에 나온 숫자와 제가 계산한 숫자가 다릅니다. 먼저 두 자료가 같은 대상, 같은 날짜, 같은 상태를 비교하는지 확인해 주세요. 첫 단계는 원인 분류까지만 진행해 주세요. 1. 차이가 생긴 사례를 자료 누락, 날짜·상태 차이, 적용 조건 누락, 계산 규칙 오류, 원인 미확인으로 나눠 주세요. 각 판단의 근거도 적어 주세요. 2. 확인된 자료와 모든 사례에 공통으로 적용할 수 있는 규칙만으로 다시 계산해 주세요. 기준 자료의 숫자는 검산용으로 따로 두세요. 3. 수정이 필요하다면 원래 맞던 사례와 틀리던 사례에 같은 변경을 적용해 주세요. 기준값, 수정 전 계산값, 수정 후 계산값을 한 표에서 비교해 주세요. 4. 확인할 자료가 부족한 항목은 ‘확인 필요’로 남겨 주세요. 실제 자료에서 확인한 값과 가정을 넣어 계산한 값은 따로 표시해 주세요. 5. 기준값에 맞추기 위한 사례별 보정값을 임의로 넣지 마세요. 결과가 일치하더라도 다른 사례와 조건에서 검증하지 않았다면 그 한계를 명시해 주세요. English prompt The reference value and my calculated value do not match. First, verify that both sources refer to the same subject, date, and state. In the first step, only classify the possible causes. 1. Classify discrepancies as missing data, date/state differences, missing activation conditions, calculation-rule errors, or unknown causes. Provide evidence for each classification. 2. Recalculate using only verified inputs and rules that apply consistently across cases. Keep the reference values separate for validation. 3. If a change is needed, apply the same change to cases that previously matched and cases that did not. Show the reference value, the previous result, and the updated result in one table. 4. Mark items with insufficient evidence as “Needs verification.” Clearly distinguish observed values from values calculated under assumptions. 5. Do not add arbitrary case-specific offsets to force a match. Even when the results match, state the limits if the rules have not been validated on other cases and conditions. 예를 들어 엑셀에서 거래내역 합계와 월별 보고서의 금액이 다를 때도 써볼 수 있습니다. 같은 달을 보고 있는지, 취소 거래를 양쪽에서 똑같이 처리했는지, 한 거래가 두 번 들어갔는지부터 비교하게 하면 됩니다. 차이가 난 위치를 찾고 나면 어느 수식을 고쳐야 하는지, 어느 자료를 더 받아야 하는지 구분하기가 쉬워집니다. 4. 실제 페이지에서 같은 캐릭터의 7억과 23억을 비교해 봤습니다 아래는 2026년 11월 4일 기준 공개 화면입니다. 이날 전체 공개 기록은 173,150명이고, 아래 화면에 표시된 161,898명은 그중 ‘일반 월드’를 선택했을 때의 인원입니다. ![]() 그림 2. 조건을 선택한 뒤 나오는 시상대입니다. 위쪽에 기준일과 비교 범위가 함께 표시됩니다. 가운데 1위 캐릭터의 상세 화면을 열면 숫자 세 개를 볼 수 있습니다.
여기서 검산한 숫자는 앞의 두 값입니다. 둘 다 721,158,571로 일치했습니다. 그다음 확인 가능한 다른 조합을 계산했더니 약 23억이 나왔습니다. 이 캐릭터는 그 값이 더 높아 순위에 반영됐고, 화면에는 ‘가정 프리셋 전투력’이라고 표시했습니다. 다른 조합으로 실제 게임에 접속해 찍은 기록인지, 공개 자료로 계산한 값인지를 이 표시로 구분할 수 있습니다. ![]() 그림 3. 왼쪽에는 캐릭터 모습, 오른쪽에는 공식 착용값·검산값·다른 조합의 계산값이 나옵니다. 반대로 다른 조합을 계산할 자료가 부족하거나, 비교해 보니 원래 착용 상태가 더 높거나 같으면 게임에서 제공한 값을 사용합니다. 아래 표에서 7위 숫자 밑의 ‘API 착용 상태’가 그런 값의 표시입니다. ![]() 그림 4. 같은 순위표 안에서도 숫자 아래를 보면 어떤 기준이 적용됐는지 알 수 있습니다. 5. 잘 안된 점: 직업별 계산과 데이터·검증의 한계 제논·데몬어벤져: 직업별 계산을 충분히 검증하지 못했습니다 제논과 데몬어벤져는 메이플스토리 캐릭터가 선택할 수 있는 두 직업의 이름입니다. 두 직업 모두 실제로 장비를 착용하고 있던 상태의 전투력은 공식 데이터에서 조회할 수 있습니다. 제가 해결하지 못한 부분은 다른 장비로 바꿨을 때의 전투력을 여러 캐릭터에서 일관되게 계산하는 것이었습니다. • 제논은 힘·민첩·운에 해당하는 세 능력치가 함께 쓰입니다. 장비 하나를 교체할 때 여러 능력치가 동시에 바뀔 수 있어, 그 변화가 최종 전투력에 어떻게 들어가는지 검증해야 했습니다. 넥슨도 두 직업에 별도의 전투력 보정 공식이 적용되고, 업데이트에서 그 공식을 조정했다고 안내했습니다. 착용 중인 장비에서 한 번 숫자가 맞더라도, 다른 장비로 바꿨을 때도 계산이 맞는지는 별도로 확인해야 합니다. 이번에는 그 수준까지 검증하지 못해 두 직업을 명예의 전당 집계에서 제외하고, 검색 화면에 이유를 공개했습니다. ![]() 그림 5. 두 직업에서 조회할 수 있는 값과 아직 검증하지 못한 계산 범위를 설명하는 안내입니다. 기술적으로는 ‘결과값 조회’와 ‘계산 과정 재현’이 달랐습니다 API가 알려주는 최종 전투력 한 개만으로는 그 숫자를 만든 내부 계산 과정을 모두 알아낼 수 없습니다. 여러 장비 효과와 능력치가 합쳐진 결과이기 때문입니다. 최종 금액이 적힌 영수증 한 장만 보고 각 상품의 할인과 세금 계산을 전부 복원하기 어려운 것과 비슷합니다. 다른 장비 조합을 계산하려면 기존 장비가 더하던 효과를 빼고, 새 장비의 효과와 바뀐 세트 보너스, 적용 조건을 다시 반영해야 합니다. 단순히 ‘새 장비의 공격력 − 옛 장비의 공격력’만 최종 숫자에 더하는 것으로는 부족했습니다. 제논의 여러 능력치와 데몬어벤져의 체력 환산도 이 계산 과정에 들어가므로, 일반적인 직업에서 맞던 규칙을 그대로 적용하기 어려웠습니다. 한 번 숫자가 맞았다고 공식 전체가 검증된 것은 아닙니다 서로 다른 계산 방식이 우연히 같은 결과를 만들 수도 있습니다. 따라서 현재 착용값과 1 단위까지 일치했다는 것은 그 상태의 검산을 통과했다는 뜻이지, 모든 직업과 모든 장비 조합의 정확성을 증명했다는 뜻은 아닙니다. 이 글의 약 23억도 다른 조합으로 실제 게임에서 측정한 값이 아니라 공개 자료와 계산 규칙을 바탕으로 얻은 값입니다. 기술적으로 필요한 것은 계산 규칙을 바꾼 뒤 기존에 맞던 사례가 계속 맞는지 함께 확인하는 회귀 검증입니다. 한 캐릭터의 숫자만 맞추려고 임의의 보정값을 붙이면 다른 캐릭터나 다른 조합에서 다시 틀릴 수 있습니다. 그래서 재사용할 프롬프트에도 ‘같은 변경을 여러 사례에 적용하고, 기준값과 수정 전후 결과를 함께 비교하라’는 조건을 넣었습니다. Codex가 오류 없이 실행되는 코드를 작성했다고 해서, 그 코드가 실제 게임의 내부 계산식까지 정확히 재현했다는 뜻은 아닙니다. 화면이 정상적으로 뜨는지 확인하는 것과 숫자가 맞는지 확인하는 것은 별도의 검증입니다. 특히 공개 자료에 없는 규칙을 AI의 설명만으로 확정하면, 그럴듯하게 작동하면서도 잘못된 결과를 내는 계산기가 될 수 있습니다. 두 직업 외에도 계산이 어려운 경우가 있었습니다 입력값 자체가 빠진 경우에는 AI가 코드를 더 작성해도 실제 상태를 확정할 수 없습니다. API에서 확인되는 정보와 추정이 필요한 정보를 구분해야 했습니다. 실제로 어떤 화살이나 표창을 썼는지 자료에 없는 경우가 대표적입니다. 같은 장비를 끼고 있어도 사용하는 탄약에 따라 계산값이 달라질 수 있습니다. 11월 4일 공개본에서는 실제 사용 탄약을 확인할 수 없으면 공식 착용값까지만 반영했습니다. 다른 장비 조합에 필요한 정보가 빠졌거나 현재 착용 상태의 검산이 맞지 않은 경우에도, 확인된 공식값까지만 사용했습니다. 11월 4일 공개 기록 173,150명 중 101,929명은 다른 조합의 계산값이, 71,221명은 공식 착용값이 순위에 반영됐습니다. 공식 착용값을 반영한 쪽에는 계산 근거가 부족한 경우와, 비교 결과 공식값이 더 높거나 같은 경우가 함께 들어 있습니다. 화면에 적힌 ‘수집본 내 순위’는 이 날짜에 확보한 자료와 공개 범위 안에서 매긴 순위라는 뜻입니다. 이후 장비를 바꾸거나 기간제 효과가 끝나면 지금 게임에서 보이는 숫자도 달라질 수 있습니다. 6. 다음에 AI로 숫자를 검증할 때도 써먹을 방법 이번에 가장 도움이 된 요청은 “지금 상태의 숫자부터 다시 계산해 보고, 일치한다면 어떤 자료와 규칙으로 일치했는지 보여줘”였습니다. 먼저 답을 알고 있는 사례에서 검산한 뒤 새 조합으로 넘어가니, 언제 계산값을 보여줄 수 있고 언제 확인된 값까지만 써야 하는지 기준을 세울 수 있었습니다. 그 과정을 웹페이지에도 그대로 남겼습니다. 순위만 궁금하면 시상대를 보고, 숫자가 궁금하면 상세 화면을 열고, 빠진 직업이 궁금하면 제외 사유를 볼 수 있습니다. 이번 글에 가져온 화면은 개발 중인 홈페이지의 일부 기능인 ‘명예의 전당’만 분리해 만든 시연본입니다. 2026년 11월 4일 기록을 기준으로 레벨·직업·서버를 골라 검색하고, 캐릭터 상세를 확인할 수 있습니다. 실시간 조회가 아니라 해당 날짜에 준비한 자료를 탐색하는 방식입니다. |






