01 · 전투 규칙
피해량 측정을 위한 진입과 종료 조건.
도전 횟수보다 한 번의 결과를 기록
| 항목 | 처리 |
|---|---|
| 진입 비용 | 별도 입장 재화를 소모하지 않는다. |
| 도전 횟수 | 반복 도전할 수 있다. |
| 측정값 | 전투 종료 시점까지 보스에게 가한 누적 피해량. |
| 정상 종료 | 보스가 설정된 턴에 도달하면 클리어로 처리한다. |
| 조기 종료 | 아군 전멸 또는 게임 내 중도 이탈도 클리어로 처리한다. |
| 강제 종료 | 앱 종료와 통신 단절 시 완료 정책을 별도로 정의한다. |
02 · 보상 데이터
등급 판정과 지급에 필요한 대표 항목.
대표 항목과 역할
| 항목 | 컬럼명 | 형식 | 용도 |
|---|---|---|---|
| 보상 등급 | reward_grade | integer | 피해량 기준으로 결정되는 결과 단계. |
| 등급 도달 기준 | score_threshold | integer | 해당 등급에 필요한 최소 피해량. |
| 회차 지급 배수 | reward_multiplier | integer | 이번 클리어에서 지급을 시도할 횟수. |
| 일일 획득 상한 | daily_reward_limit | integer | 해당 일자에 누적 지급할 수 있는 최대 횟수. |
03 · 보상 정산
최고 기록과 이번 결과를 다른 기준으로 사용.
상한과 회차 지급량의 기준 분리
| 계산 대상 | 적용 기준 |
|---|---|
| 일일 획득 상한 | 해당 일자의 최고 기록 등급. |
| 이번 지급 배수 | 이번 도전에서 획득한 등급. |
남은 지급 가능 횟수는 일일 상한에서 누적 지급 횟수를 뺀 값이다. 실제 지급 횟수는 이번 지급 배수와 남은 지급 가능 횟수 중 작은 값을 사용한다. 지급 배수는 반복 플레이를 줄이기 위한 편의 기능이며, 상한을 넘은 횟수는 이월하지 않는다.
| 도전 | 지급 배수 | 진입 전 누적 | 실제 지급 | 지급 후 누적 |
|---|---|---|---|---|
| 1회차 | 5배수 | 0회 | 5회 | 5회 |
| 2회차 | 5배수 | 5회 | 5회 | 10회 |
| 추가 재진입 | 5배수 | 10회 | 0회 | 10회 |
04 · 일일 초기화
서버 업데이트 시점에 일일 상태를 초기화.
서버 기준 Daily 초기화
| 시점 | 처리 |
|---|---|
| Daily 초기화 | 서버 기준 Daily 초기화 업데이트 시점에 일일 상태와 보상 누적값을 초기화한다. |
| 초기화 직전 진입 | 종료 시각이 아니라 전투 시작 시점의 일일 상태로 정산한다. |
05 · 처리 위치
클라이언트와 서버의 담당 범위.
결과 산출과 지급 처리
클라이언트
- 전투 종료까지 누적 대미지를 선계산한다.
- 적의 실드 버프가 흡수한 피해는 누적 피해량에 포함하지 않는다.
- 독·출혈 등 디버프 피해는 누적 피해량에 포함한다.
- 선계산한 대미지와 결과를 패킷으로 전송한다.
서버
- 클라이언트의 대미지 결과 패킷을 받아 이용자 정보를 갱신한다.
- 최고 기록과 누적 지급 상태를 갱신한다.
- 남은 상한을 반영해 보상을 지급한다.
처리 순서: 클라이언트 대미지 선계산 → 결과 패킷 전송 → 서버 이용자 정보 갱신.
06 · 테스트 케이스(QA)
결과 패킷과 지급 상태의 검증 항목.
테스트 케이스(QA)
| 검사 | 판정 |
|---|---|
deck_id가 비어 있는가 | 캐릭터를 편성하지 않은 상태에서는 클리어할 수 없으므로 유효하지 않은 결과로 처리. |
turn_count가 0인가 | 0턴 클리어는 존재할 수 없으므로 유효하지 않은 결과로 처리. |
| 같은 완료 요청이 재전송되는가 | 이미 반영한 요청은 중복 지급하지 않음. |
| 최고 기록으로 상한이 증가했는가 | 기존 누적 지급량을 차감한 남은 횟수만 지급. |
| Daily 초기화 직전에 진입했는가 | 전투 시작 시점의 일일 상태로 정산. |