# 8칸 빌드 계산 도구

분석 기준은 2026-10-13, 게임 클라이언트26.102.018이다. 실제 서버 DPS·최적 빌드의 검증 결과와 구분한다.

## 사용 방법
1. PvE 보스, PvE 주변 적, PvP 중 전투 모드를 선택한다.
2. 전 스킬 보유 가정이 기본이다. 스킬별 사용/필수/제외를 지정한다. 제외하지 않은 스킬은 모두 보유로 간주한다. 계열·등급 목록 필터는 표시만 바꾸므로 보유 조건을 별도로 설정한다.
3. 실제 장착 제한이 있으면 최대 계열 수·궁극기 수를 입력한다. 기본은 제한 없음이다. 기타 장착 조건은 제외 설정으로 반영한다.
4. 각 스킬의 강화 등급을0부터 입력하고 해당 등급의 총 피해 계수 또는 검증한 강화 배율을 입력한다. 등급1이상에서 보정이 없으면 해당 스킬을 계산 후보에서 보류하며, 필수 스킬은 명시적인 입력 오류를 표시한다. 각 등급의 계수/배율은 보관되어 해당 등급을 다시 선택하면 복원된다. 희귀도와 강화 등급은 별개이다. 레벨 성장식을 확인하지 못했고 LvCombatPointPer를 피해 배율로 사용하지 않았다.
5. 시전 잠금·쿨타임·추가 적중 지연·적중 대상 수를 필요하면 실측값으로 보정한다. 250%계수는2.5로 입력한다.
6. 보유 조건으로8칸 덱 탐색 또는 현재8개 순서 최적화를 실행한다. 시전 흐름·스킬별 기여·피해/효과 사건을 확인한다.
7. 브라우저에 자동 저장된 설정과 덱·결과 JSON을 보관하거나 전달할 수 있다. 다른 방문자는 각자의 브라우저 설정을 사용한다.

## 데이터와 근거
- 기존 선별105개 Active/Ultimate 스킬을 후보 목록으로 사용한다. Chain/BasicActive 등은8칸 장착 후보로 자동 넣지 않았다.
- 기존 출력의 행동 그래프 BinaryData를 로컬에서 파싱했다. Update→Sequencer→Delay/Repeat/DamageToTarget의 선언된 직접 경로를 제한적으로 읽었다. 원본·baseline·working은 새로 읽거나 변경하지 않았다.
- 직접 경로 후보42개, 수동 입력 필요37개, 직접 피해 없음/그래프 미확보26개이다. 결과 요약은 output/build-graph-summary.json, 공개용 선별 요약은 build-data.js이다. 원본 바이너리·원시 그래프 바이트를 공개하지 않는다.
- 피해 행 식별 키6b816fe8c1d42004, Delay 키d3401f23c2877a5e, Repeat 횟수 키0e951054e110dedd, buff ID 키530eb1980bfe609f의 대응은 기존 구조 관찰에 근거한 해석이다. 네이티브 구현·서버 실행으로 검증한 것이 아니다.
- 각 타격의 DamageId/계수/노드ID/노드 바이트 오프셋과 자산 이름·번들·TextAsset ID를 남긴다. 단순히 모든 피해 행을 더하지 않는다. Branch 아래 조건부 추가 피해는 기본값에 포함하지 않는다.
- 기본 시전 잠금은 DelayMs, 쿨타임은 초 단위 후보, 적중 시각은 순차 Delay 누적/Repeat 전개 후보이다. 투사체 거리 지연은 사용자 추가 지연으로 보정한다. 500ms와330ms를 자동 합산하지 않는다.
- 삼단 찌르기의 기본 직접 경로는 첫 피해 행3회, 추가 조건 분기의 별도 피해 행은 제외한다. 휘둘러 내려치기의 Repeat3회 경로와 파쇄 부여를 후보로 사용한다.

## 사건 계산 규칙
- 관찰 구간[0,T)의 타격 계수 합/T를 상대 점수로 사용한다. 공격력·서버 방어 공식·치명타·반올림·장비 공식이 없는 점수이다.
- 매 시전 가능 시점에 사용자 덱의1번부터 준비된 스킬을 선택한다. 기존 SortingOrder를 실제 우선순위로 쓰지 않는다.
- 스킬별 쿨타임 시작은 시전 시작 또는 잠금 종료 중 선택한다. 공통 잠금 가정은 스킬 잠금과 큰 값을 사용한다. 기본 최소 잠금은0.02초로 무한 사건 반복을 방지한다.
- 신규 연계 효과는 발동 타격 이후 적용한다. 파쇄/관통5초, 증가/방어 감소10초, 교체/재부여 갱신, 조건 표시 소비 여부를 가정한다. 동일 시각은 먼저 예약한 사건부터 처리하며 종료 경계는[시작,종료)이다.
- 피해 증가를 별도1.05배로 적용하는 것이 기본 가정이다. 실제 가산·곱산 공식의 확정이 아니다. 방어 감소의 피해 환산은 미확인이므로 기본0%, 실측 증가율을 입력할 수 있다.
- 다수 적에서는 대상별 표시/효과를 분리한다. 표시가 있는1명을 대상으로 발동한 효과를 나머지 적에게 확산시키지 않는다. 적들은 계속 생존하며 항상 같은 대상 순서로 적중한다고 가정한다.
- 적중률은 기대 피해에 곱한다. 표시 부여/효과 발동 자체는 성공한다고 가정한다. 확률적인 명중 실패에 따른 연계 단절까지 모델링하지 않았으므로 저명중 PvP 결과는 특히 제한적이다.
- PvP는 PvpFactorValue로 대체하는 가정이다. 누락 값은0으로 복원하지 않고 수동 입력이 필요하다. PvP 군중 제어·생존·상대 이동은 점수에 없다.
- 사용자 총 계수를 직접 경로가 있는 스킬에 입력하면 기본 개별 타격 비율에 따라 분배한다. 경로 미복원 스킬은 잠금 종료 시 직접 타격1회와 입력 지연을 가정한다. 지속 피해·조건부 효과는 자동 복원하지 않는다.

## 탐색 알고리즘과 한계
- 사용·필수·제외 및 계열/궁극기 수 제한을 적용한다. 계산 입력이 없는 필수 스킬은 오류를 표시하며 임의 계수로 채우지 않는다.
- 개별 계수/쿨타임 기준과 연계 기준 등 여러 시작 덱에서1개 후보 교체와 순서 교환으로 최대4회 개선한다. 계열 제한이 있으면 계열 중심 시작 덱을 추가한다.
- 마지막에 선택된8개 스킬의40,320가지 우선순위를 모두 평가한다. 이는 해당8개 구성과 입력 모형 안에서의 최적 순서이며 모든8개 조합의 전역 최적 구성은 보장하지 않는다.
- 제외된 조건부 추가 타격·지속 피해·기본 공격·다른 버프·파멸 게이지·스킬 성장·이동·생존·타깃 변경·보스 페이즈가 순위를 바꿀 수 있다. 레벨/스킬 등급 차이는 직접 보정값을 넣기 전에는 모델에 반영되지 않는다.
- 현재 한 캐릭터의 성장식·실제 장착 규칙·서버 최고 DPS를 분석만으로 확정할 수 없다. 추천은 실측할 후보를 줄이는 도구로 사용한다.

## 검증 및 재개
- combat-engine.test.cjs:8칸/필수 조건, 연계 조건과 적용 순서, 대상별 효과, 시간 종료·만료 경계, 적중률, 쿨타임 시작 기준,40,320개 순서 전수 탐색 검사.
- 브라우저:필수 화염 분출 포함·제외 주먹 지르기 제거·PvP 전환·다수 적·숫자 입력/강화 배율 반영·미확인 필수 스킬 차단·취소·JSON 내보내기/불러오기 확인.
- 코드:사이트 소스 폴더. prepare_build_data.py로 기존 로컬 결과에서 선별 데이터 재생성, node tests/combat-engine.test.cjs로 모형 검사, node generate_build_examples.cjs로 기본 가정 예시 생성.
- 기본 가정 예시는 output/build-examples.json 및 build-examples.md. 사용자 실제 보유/레벨을 적용한 추천이 아니다.

## 0부터 시작하는 강화 등급 입력 갱신

설정 형식은 schema2이다. schema1의 미보유는 제외로 가져오며, 기존 계수·배율·제외·필수·덱은 보존한다. 기존 레벨 숫자와 새 강화 등급의 대응은 미확인이므로 레벨 숫자는 legacyLevel에 보관하고 새 강화 등급은0부터 시작한다. 임의로 레벨1→등급0 같은 성장식 변환을 하지 않는다.


## 2026-10-14 구조·데이터 갱신

궁극기는 일반8개에 넣지 않고1~5칸의같은계열3개에따라9번고정칸에자동배치한다. 장착칸과사용우선순위를분리한다. 궁극기수설정은제거하고궁극기사용순서를설정한다. 새성장표5550행의결합식은미확인으로성장자동미적용이기본이며가산/곱산가정을비교할수있다. 강화등급과데이터레벨은다르다. 사거리/도형자료·수정메뉴·빈계수설명·작은화면검증은 review-report-20261014.md에정리했다. 설정형식3은이전형식1/2를불러오며기존일반칸궁극기를분리한다. 이전브라우저설정은 dokkaebi-build-before-fixed-ultimate-v3에1회백업한다.
