실시간은 안 된다길래, 끝난 전투에 점수를 매기기로 했어요
와우 쐐기가 끝나면 파티원마다 역할별 점수를 매기는 애드온을 만들었어요. 가짜 데이터 목업부터 실제 게임 화면, WCL 95백분위 비교, 11개 언어까지 화면 위주로 따라가요.
목차 9개
월드 오브 워크래프트(와우)에서 전투나 쐐기 던전이 끝나면 파티원 다섯 명에게 역할별 점수와 등급을 매겨 주는 애드온, After Action Meter를 만들었어요. 딜러의 DPS와 힐러의 HPS는 Warcraft Logs(WCL) 통계에서 같은 전문화, 같은 던전, 같은 단수의 95백분위(P95) 값과 비교해요. CurseForge에 무료로 올려 두었어요.

애드온 코드는 주로 Codex와 Antigravity(Gemini)로 만들었어요. 애드온 목차 파일의 작성자 칸에도 아직 Codex라고 적혀 있어요. 매주 바뀌는 기준값을 새로 받아 올리는 이야기는 2편에서 따로 적을게요. 이 글은 애드온이 화면에서 어떻게 바뀌어 왔는지를 순서대로 담았어요.
실시간은 막혀 있어서, 가짜 데이터로 화면부터
처음엔 전투 로그를 실시간으로 분석하고 싶었어요. 그런데 한밤 확장팩부터는 전투 중에 애드온이 받는 수치가 "비밀 값"으로 넘어와요. 화면에 띄울 수는 있어도 코드가 그 값을 꺼내 계산할 수는 없어요. 쓸 수 있는 건 전투가 끝난 뒤 블리자드 기본 미터기가 내주는 합계뿐이라, 방향을 "끝난 전투를 종합해서 평가하기"로 잡았어요.
던전을 매번 돌며 확인할 수는 없으니 화면은 가짜 전투 데이터로 먼저 그려 봤어요. 탱커 1명, 힐러 1명, 딜러 2명에 받은 피해, 피할 수 있었던 피해, 차단 횟수를 적당히 넣은 데이터예요.

이 데이터는 지금도 애드온 안에 /aam test 명령으로 남아 있어서, 전투 없이도 창이 어떻게 보이는지 확인할 수 있어요. 점수는 역할마다 항목을 나눠 매기고 가중치를 곱해 평균을 내요.
| 역할 | 항목과 가중치 |
|---|---|
| 딜러 | 화력 55, 기믹 20, 차단·해제 15, 생존 10 |
| 탱커 | 생존 35, 기믹 25, 차단·해제 20, 공격 기여 20 |
| 힐러 | 치유·보호막 45, 기믹 20, 해제·차단 20, 생존 10, 공격 기여 5 |
첫 공개판에는 메모 칸이 있었어요
8월 30일에 CurseForge에 처음 올린 0.7.0에는 점수 말고도 메모 칸이 두 개 있었어요. 공략을 적는 자유 메모와, 점수 규칙을 적어 두는 메모예요. 글자 크기와 색, 굵기까지 바꿀 수 있었어요.

첫 버전은 게임에서 바로 문제가 났어요. 기본 미터기를 켜 두었는데도 "미터기를 켜라"는 안내만 뜨고 아무것도 집계되지 않았어요. 블리자드는 전투가 끝나면 진짜 전투 번호로 한 번, "전체"를 뜻하는 0번으로 한 번 알림을 보내는데, Lua에서는 0도 참이라 0번이 진짜 번호를 덮어쓰고 있었어요. 같은 날 0.7.1에서 한 줄로 고쳤어요.
if sessionID and sessionID > 0 then
AAM.activeSessionID = sessionID
end
미터기처럼 작게
다음 날인 8월 31일에는 버전 번호가 0.8.0부터 0.8.8까지 아홉 번 올라갔어요. 메모 칸과 서식 버튼을 전부 빼고, Details 같은 미터기 애드온처럼 한 줄씩 작게 만드는 쪽으로 계속 줄였어요. 맨 위 선택 버튼 하나에서 저장된 전투, 현재 전투, 종합을 고르는 방식도 이때 생겼어요.

창은 280×64까지 줄어들고, 가려진 줄은 마우스 휠로 넘겨요. 폭이 좁아지면 역할 칸을 숨겨서 이름과 점수 자리를 남겨요. 글자 크기와 투명도는 설정 창에서 바꿔요.

파티 안에서 비교하면 안 되는 이유
화력 점수의 기준은 세 번 바뀌었어요. 0.8.8까지는 파티 안에서 같은 역할의 중앙값과 비교했어요. 설정 화면의 점수 기준표에도 그 공식이 그대로 적혀 있어요.

빨간 네모 친 2번 칸이 그 옛 공식이고, 밑줄 친 곳처럼 역할이 한 명이면 75점으로 고정돼요. 문제는 쐐기 파티에 탱커와 힐러가 한 명씩이라 비교할 상대가 없다는 거였어요. 9월 1일 0.8.9에서 같은 역할 최고 기록을 100점으로 바꿔 봤지만, 파티 전체가 못해도 그중 1등은 100점을 받는 건 그대로였어요. 그래서 같은 날 0.9.0부터 WCL 통계의 같은 전문화, 던전, 단수 95백분위를 100점 기준으로 바꿨어요.
게임 안에서는 인터넷을 쓸 수 없어서, WCL 통계 화면의 표를 브라우저로 모아 애드온 파일 안에 넣어 둬요. 던전 8개, 단수 +2부터 +30까지, DPS와 HPS라서 표가 464개예요. 처음 넣은 9월 1일 데이터는 5,895개 조합이었어요. WCL 기록이 바뀔 때마다 이 표도 다시 모아 넣어야 해요.
실제 게임에서 본 "기준 없음"
9월 4일 저녁, 실제 던전에서 찍은 화면이에요. 던전 안의 1분 55초짜리 전투가 끝났는데 다섯 명 모두 점수 대신 "기준 없음"이 떴어요. WCL 기준값은 던전 한 판 전체 기록이라, 한 판 안의 개별 전투에는 비교할 값을 찾지 않고 있었던 거예요.

이 캡처를 Antigravity에 보여 주고 고친 게 0.9.5예요. 개별 전투에도 같은 WCL 기준으로 점수를 매기고, 기준값이 없을 때 쓸 대체 순서를 넣었어요. 같은 던전의 가장 가까운 단수 값에 단수 차이만큼 1.08을 곱하고, 그것도 없으면 시즌 던전 평균, 그다음은 파티 안 비교예요. 대체 기준을 쓰면 세부 창 계산식 끝에 "+22단 인접 보정" 같은 표시가 붙어요. 1.08은 어림한 배율이지 WCL이 주는 값은 아니에요.
쐐기 한 판이 한 줄뿐이었어요
이틀 뒤에 찍은 +16 화면이에요. 점수는 92점 S부터 72점 B까지 제대로 나오는데, 전투 선택 목록을 열어 보니 "쐐기 전체" 한 줄만 있었어요. 한 판 동안 싸운 잡몹 무리와 보스 전투가 기록에서 빠지고 있었어요.

0.9.7에서 개별 전투를 모두 남기고, 저장 개수를 25개에서 50개로 늘렸어요. 쐐기 한 판이 보통 25~35번 정도의 전투로 나뉘기 때문이에요. 점수 곡선도 이 무렵 두 번 바뀌었어요. 0.9.6에서 기준의 50% 이하를 0점으로 엄격하게 바꿨더니 이번엔 너무 짜게 나와서, 9월 7일 0.9.8에서 지금 곡선으로 정했어요.
if ratio <= 0.30 then return 0
elseif ratio >= 1.0 then return 100
elseif ratio >= 0.70 then return ratio * 100
else return ((ratio - 0.30) / 0.40) * 70 end
기준의 70~100%는 그대로 70~100점이라 읽기 쉬워요. 80%면 80점이에요. 그 아래는 60%가 53점, 50%가 35점이에요.
11개 언어
와우 클라이언트 언어를 자동으로 감지해서 영어, 한국어, 독일어, 프랑스어, 스페인어 두 가지, 브라질 포르투갈어, 이탈리아어, 러시아어, 중국어 간체와 번체로 보여 줘요. 한국어와 영어는 계산식 설명까지 모두 옮겼고, 나머지 언어는 주요 창과 설정, 점수 항목 이름을 옮겼어요. 번역이 없는 문장은 영어로 나와요.

써 보니
좋은 점은 전투가 끝나자마자 점수가 나온다는 거예요. 줄을 누르면 세부 창에 "내 DPS ÷ WCL P95 = 비율 → 점수" 계산식이 그대로 보여서, 왜 이 점수가 나왔는지 바로 알 수 있어요. 던전은 이름 대신 인스턴스 번호로 찾아서, 한국어 클라이언트의 "왕들의 안식처"와 영어 "Kings' Rest"가 같은 기준값을 써요.
아쉬운 점도 분명해요. 쿨기 타이밍, 버프 유지율, 탱커 위치 선정, 오버힐처럼 종료 합계에 없는 건 재지 못해요. 게임 미터기의 DPS와 WCL의 rDPS는 버프 기여를 나누는 방식이 달라서 차이가 날 수 있어요. WCL 기록이 없는 높은 단수는 추정한 기준으로 비교해요.
지금 상태와 남은 것
- 버전 0.9.8(9월 7일). 기준값은 9월 1일 데이터로 5,895개 조합이에요. WCL 기록은 매주 바뀌어서, 기준값도 계속 새로 넣어 줘야 해요.
- CurseForge 소개글이 아직 첫 공개판 문구예요. 없앤 메모 기능이 적혀 있고, WCL 백분위가 아니라는 문장까지 남아 있어요. 새 소개글은 파일로만 준비돼 있어요.

- 갤러리 이미지도 0.8.8 예시 데이터 화면이에요. WCL 계산식이 보이는 지금 세부 창을 실제 게임에서 찍어 바꿔야 해요.
- README에는 저장 개수가 25개로, 기준이 없으면 무조건 "기준 없음"으로 적힌 곳이 남아 있어요. 코드는 50개를 저장하고 대체 기준을 먼저 써요.
- 작성자 이름과 라이선스를 아직 정하지 않았어요.
- 블리자드 정책상 애드온에 유료 기능을 넣을 수 없어서, 애드온은 무료로 두고 수익은 다른 길을 찾아야 해요.
댓글 0
아직 댓글이 없어요. 첫 이야기를 남겨 주세요.