개념
왜 이 기능만 법이 따라붙는가
게임의 대부분 기능은 "기획서대로 동작하는가"로 판정한다. 확률형 아이템은 다르다. 기획서대로 동작해도 보여 준 숫자와 서버가 쓰는 숫자가 다르면 그 자체가 위법 이 된다. 판정 기준이 회사 안이 아니라 법에 있고, QA의 증거가 소송에서 그대로 쓰일 수 있다는 뜻이다. 레슨 4의 등급분류가 출시 전 사전 절차라면 이쪽은 패치를 낼 때마다 새로 발생하는 지속적 의무 이므로, 확률 검증은 한 번 하는 일이 아니라 라이브 회귀 항목이다.
국내 법 근거 — 무엇이 언제부터인가
| 근거 | 내용 | 시점 |
|---|---|---|
| 게임산업진흥에 관한 법률 제33조 제2항 | 확률형 아이템의 종류·구성 비율·구성 확률 등을 게임물과 그 광고·선전물에 표시할 의무 | 2024년 3월 22일 시행 |
| 같은 법 시행령 제19조의2, 별표 3의2 | 확률형 아이템의 유형 구분, 표시 의무 대상 게임물의 범위, 표시 사항과 표시 방법 | 표시 의무와 같은 날 |
| 문화체육관광부 확률형 아이템 정보공개 해설서 | 개념·대상·표시 주체·표시 사항·표시 방법의 해석 기준 | 2024년 2월 배포 |
| 같은 법 제33조의2 (소송 특례) | 표시 의무 위반으로 인한 손해에 대해 손해액의 3배 이내 징벌적 손해배상, 사업자가 고의·과실 없음을 입증하지 못하면 면책되지 않음(입증책임 전환) | 2025년 1월 31일 공포, 2025년 8월 1일 시행 |
QA에게 결정적인 것은 마지막 줄의 입증책임 전환 이다. 일반적인 손해배상은 피해자가 고의·과실을 입증하지만, 제33조의2는 그 부담을 사업자 쪽으로 옮긴다. 회사가 "고의도 과실도 없었다"를 입증해야 하고, 그 재료가 확률 테이블 변경 이력, 검증 실행 기록, 대조 증거 다. 모듈 41에서 금융 규제 조문을 통제와 증거로 내려보냈던 방식 그대로 조문 한 줄 → 통제 한 개 → 증거 한 건 으로 옮긴다.
| 조문이 요구하는 것 | QA 통제 | 남기는 증거 |
|---|---|---|
| 확률 정보를 표시할 것 | 모든 확률형 아이템 화면·광고에 표시 존재 확인 | 표시 화면 스크린샷 + 대상 목록 대조표 |
| 표시가 실제와 일치할 것 | 표시값 ↔ 서버 테이블 ↔ 추출 결과 3중 대조 | 대조 리포트, 검정 결과, 원시 로그 |
| 변경 시 다시 표시할 것 | 확률 테이블 변경을 릴리스 체크 항목으로 고정 | 변경 이력, 승인자, 반영 빌드 번호 |
| 고의·과실 없음을 입증할 수 있을 것 | 매 릴리스 검증을 절차로 수행하고 보존 | 실행 일시·담당자·판정이 남은 기록 |
표시 의무는 어디까지 미치는가
해설서가 반복해 강조하는 지점이 QA 체크리스트의 뼈대가 된다.
- 게임 안만이 아니다. 광고·선전물에도 표시한다. 마케팅팀의 배너·영상·스토어 스크린샷이 검증 범위에 들어온다.
- 획득 가능한 결과를 빠짐없이. 종류·등급·성능별 공급 확률을 모두 적는다. 결과가 많다고 "주요 항목만" 적을 수 없다.
- 중첩 구조도 끝까지. 뽑기로 나온 상자를 또 여는 구조면 각 단계가 각각 표시 대상이다.
- 조건이 붙으면 조건까지. 천장, 회차에 따라 오르는 확률, 중복 제외, 등급 보장은 숫자만으로 표현되지 않으므로 함께 알린다.
공정거래위원회는 2024년 1월 넥슨의 메이플스토리 유료 아이템 확률 변경 미고지 건에 전자상거래법 위반으로 시정명령과 과징금 116억 4200만 원을 부과했다(넥슨이 취소소송으로 다투고 있어 최종 결론은 원문 확인). 표시 의무 시행 이전 행위에도 전자상거래법의 기만적 방법 금지가 적용됐다는 점이 QA에게 중요하다.
확률 검증은 세 곳을 대조하는 일이다
확률 결함은 한 곳만 봐서는 안 잡힌다. 반드시 세 곳을 서로 대조한다.
① 표시값 게임 내 확률 안내 화면 · 공식 홈페이지 · 광고물의 숫자
↕ 대조 A — 사람이 읽는 숫자 = 서버가 쓰는 숫자인가
② 서버 테이블 드롭 테이블 / 가중치 설정 / 라이브 컨피그의 실제 값
↕ 대조 B — 설정대로 추출 로직이 동작하는가
③ 추출 결과 실제 뽑기 로그(대량 표본)의 등급별 빈도
↕ 대조 C — 관측 분포가 표시 확률과 통계적으로 일치하는가| 대조 | 방법 | 자주 나오는 결함 |
|---|---|---|
| A 표시값 ↔ 서버 테이블 | 표시 문자열과 설정 파일·DB를 자동 비교 | 반올림으로 합이 100%가 안 됨, 국가별 빌드만 갱신 누락, 광고물이 옛 확률 |
| B 서버 테이블 ↔ 추출 로직 | 시드 고정 후 로직 단위 시험 | 가중치 합 계산 오류, 정수 나눗셈 절삭, 배열 경계로 마지막 등급이 안 나옴 |
| C 표시값 ↔ 추출 결과 | 대량 표본 + 적합도 검정 | 이벤트 배너가 기본 테이블을 덮어씀, 계정 조건에 따라 다른 테이블 적용 |
B를 건너뛰면 "설정은 맞는데 코드가 틀린" 결함을, A를 건너뛰면 "코드는 맞는데 안내가 틀린" 결함을 놓친다. 안내가 틀린 쪽이 법적으로 더 위험하다.
카이제곱 적합도 검정 — 숫자를 넣어 본다
표준 도구는 카이제곱 적합도 검정(chi-square goodness-of-fit test) 이다. 각 등급마다 "표시 확률대로면 몇 개 나왔어야 하나(기대도수)"를 구하고, 실제로 나온 수와의 차이를 기대도수로 나눠 모두 더한다.
χ² = Σ (관측도수 − 기대도수)² ÷ 기대도수
5개 등급 가챠를 10,000회 돌린 결과로 해 보자.
| 등급 | 표시 확률 | 기대도수 | 관측도수 | 셀 기여도 |
|---|---|---|---|---|
| SSR | 0.6% | 60 | 41 | 6.017 |
| SR | 5.4% | 540 | 511 | 1.557 |
| R | 14.0% | 1,400 | 1,388 | 0.103 |
| N | 30.0% | 3,000 | 3,050 | 0.833 |
| C | 50.0% | 5,000 | 5,010 | 0.020 |
| 합계 | 100% | 10,000 | 10,000 | 8.530 |
자유도는 등급 수 − 1 = 4. 유의수준 0.05에서 자유도 4의 임계값은 9.488 이다. 우리 통계량 8.530은 임계값보다 작으므로(p ≈ 0.074) "표시 확률과 다르다"고 말할 수 없다.
여기서 가장 많이 하는 실수가 나온다. 기각하지 못한 것은 "확률이 맞다"는 증명이 아니다. 셀 기여도를 보면 전체 8.530 중 70%가 SSR 한 칸에서 나왔다. SSR만 이항 분포로 보면 기대 60,
표준편차 √(10000 × 0.006 × 0.994) ≈ 7.72, 관측 41이므로 z ≈ −2.46 이라 단독으로는 유의해 보이지만, 5개 등급을 각각 검정하면 다중 비교 문제가 생겨 그대로 믿을 수 없다. 올바른
결론은 하나다. "현재 표본으로는 판정할 수 없다."
필요한 표본 수를 먼저 계산한다
희귀 등급일수록 필요한 표본이 폭증한다. 확률 p 를 상대오차 ε 이내로 추정하는 표본 수는 아래로 어림한다.
n ≈ z² × (1 − p) ÷ (ε² × p) (95% 신뢰수준이면 z = 1.96)
| 표시 확률 p | 상대오차 ε | 필요 표본 n |
|---|---|---|
| 0.6% | ±20% | 약 15,900회 |
| 0.6% | ±10% | 약 63,600회 |
"표시보다 이만큼 낮으면 잡아내겠다"는 검출력 기준이면 숫자가 더 커진다. 상대 차이 δ 를 검출력 80%로 잡으려면 n ≈ (1.96 + 0.84)² × (1 − p) ÷ (p × δ²) 다.
| 표시 확률 p | 검출하려는 상대 차이 δ | 필요 표본 n |
|---|---|---|
| 0.6% | 30% 낮음 | 약 14,400회 |
| 0.6% | 10% 낮음 | 약 130,000회 |
| 5% | 10% 낮음 | 약 14,900회 |
| 5% | ±10% 오차 추정 | 약 7,300회 |
앞의 10,000회 예제가 왜 결론을 못 냈는지 이제 보인다. 0.6% 등급에서 30% 차이를 잡으려면 14,400회가 필요한데 10,000회를 돌린 것이다. 표본 수는 시험 전에 정한다. 결과가
애매하니 더 돌리는 방식(선택적 중단)은 검정을 오염시킨다.
실무 제약도 있다. 카이제곱 근사가 성립하려면 모든 셀의 기대도수가 5 이상 이어야 한다. 0.6% 등급이면 n ≥ 834 는 되어야 하고, 그보다 희귀한 항목은 인접 등급과 묶거나 이항 검정으로
따로 본다. 이 표본을 손으로 뽑는 것은 불가능하므로 테스트 서버의 대량 추출 API나 디버그 명령 을 미리 요구해 두는 것이 QA의 사전 작업이다.
천장과 조건부 확률 — 평평하지 않은 확률을 시험하는 법
요즘 가챠는 확률이 고정되어 있지 않다. 실패가 쌓이면 확률이 오르고(소프트 천장), 일정 횟수에 도달하면 반드시 나온다(하드 천장). 이런 구조에 하나의 평균 확률로 카이제곱 검정을 돌리면 반드시 틀린 결론이 나온다. 조건부 확률은 조건별로 나눠서 봐야 한다. 예시 모델을 하나 놓고 보자.
1~50회차 : 매 회 1.0%
51회차~ : 매 회 1.0% + 4.0%p × (회차 − 50)
(51회 5%, 60회 41%, 70회 81%, 74회 97%)
75회차 : 100% 보장 (하드 천장)
성공하면 카운터 0으로 초기화이 모델의 기대 뽑기 횟수는 약 42.97회, 회당 종합 확률은 약 2.33% 다. "기본 확률 1%"만 적고 천장 규칙을 빼면 플레이어는 2.33%를 알 수 없고, 반대로 "종합 확률 2.33%"만 적고 기본 확률을 감추면 50회 이전 구간을 오해하게 만든다. 둘 다 표시 대상 이라고 보고 검증하는 것이 안전하다.
| 시험 대상 | 방법 | 합격 기준 |
|---|---|---|
| 구간별 조건부 확률 | 회차 구간별로 성공 수 ÷ 시도 수 집계 | 관측 비율이 모델 구간 확률의 신뢰구간 안 |
| 하드 천장 | 74회 연속 실패 상태를 만든 뒤 75회차 반복 | 75회차 성공률 100%, 예외 0건 |
| 카운터 초기화 | 성공 직후 다음 추출의 확률 확인 | 기본 확률로 복귀 |
| 카운터 이월·소멸 | 배너 교체, 시즌 전환, 재로그인, 기기 변경 | 기획이 정한 이월 규칙과 일치, 임의 소멸 0건 |
| 경계값 | 49·50·51회차, 74·75·76회차 | 규칙 전환이 정확히 그 회차에서 일어남 |
| 동시성 | 두 기기로 같은 계정의 추출을 동시 실행 | 카운터 중복 증가·누락 없음, 천장 우회 없음 |
천장 시스템의 결함은 확률 계산식보다 카운터의 생애주기 에서 훨씬 자주 나온다. 배너가 바뀔 때 카운터가 소리 없이 사라지는 결함은 금전 피해가 직결되는 블로커다.
릴리스마다 다시 확인해야 하는 것들
라이브에서 확률이 바뀌는 경로는 여러 개다. 이벤트 배너 가 기본 드롭 테이블을 덮어쓰고, 서버 설정 토글 은 빌드 배포 없이 값을 바꾸는데 클라이언트에 박힌 표시 문구는 함께 바뀌지 않으며, 국가별·스토어별 빌드 는 한쪽만 갱신되고, 신규 아이템 추가 로 항목이 늘면 기존 확률이 재계산돼 표시값과 어긋난다. 그래서 확률 테이블과 표시 문구는 같은 변경 단위로 묶어 릴리스 체크리스트에 고정 한다. 둘 중 하나만 바뀐 릴리스는 그 자체로 결함 후보다.
실무에서 왜 필요한가
다른 결함은 핫픽스로 끝나지만 확률 표시 불일치는 시정명령·과징금·집단 소송·환불·규제기관 조사로 이어지고, 2025년 8월부터는 징벌적 손해배상까지 얹힌다. 입증책임이 사업자에게 있으므로 "검증한 기록이 없다"는 것 자체가 불리한 사실 이 된다. QA의 검증 리포트가 회사의 방어 자료가 되는 흔치 않은 영역이다.
현장에서 이 일을 맡는 사람은 보통 사업 QA 또는 확률 검증 담당이다. 릴리스 브랜치에서 확률 테이블 diff를 뽑아 변경 항목을 추리고, 항목마다 표시 문구가 함께 갱신됐는지 확인하고, 테스트 서버에서 산정한 표본만큼 대량 추출해 SQL로 빈도를 집계하고, 검정으로 판정한 뒤 기각되면 로직·설정·표시 중 어디가 원인인지 좁혀 리포트한다. 광고와 홈페이지 표시물까지 대조하고, 릴리스마다 반복되므로 스크립트로 자동화한 팀이 훨씬 빠르다. 이미 나간 확률로 수십만 명이 뽑기를 했다면 되돌리는 비용은 보상 지급과 신뢰 하락으로 남는다. 확률 검증은 출시 전 차단이 유일하게 싼 시점 이다.
채용시장에서의 위치
확률형 아이템 규제가 강화된 뒤로 확률 테이블·과금 흐름·표시 정보의 일치를 전담하는 역할이 생겼다. "사업 QA", "과금·확률 검증", "라이브 컴플라이언스" 같은 이름으로 공고가 나오고, SQL로 로그를 집계할 수 있는가, 기초 통계 검정을 돌릴 수 있는가, 법령·해설서를 검증 항목으로 옮길 수 있는가 가 사실상의 선별 기준이다. 금융의 상품 고지 의무나 커머스의 표시·광고 규제처럼 "고지한 숫자와 실제 동작이 일치하는지 증명하는" 일 은 도메인만 다를 뿐 구조가 같아 게임 밖에서도 쓰인다.
면접에서 무게를 갖는 것은 "확률을 검증해 봤다"가 아니라 숫자와 판정이 함께 있는 문장이다. "표시 0.6% 아이템을 30% 차이 검출 기준으로 표본 15,000회를 산정해 추출했고, 카이제곱 통계량 24.7로 유의수준 0.01에서 기각돼 이벤트 배너가 기본 테이블 가중치를 덮어쓰는 설정 오류를 출시 3일 전에 찾았다" 같은 것이다.