본 문서는 캐릭터(플레이어·몬스터)가 가지는 수치 구조를 정의한다. 스테이터스(원천 능력치) → 스탯(파생 능력치) → 런타임 스탯(실시간 출력값) 3계층으로 나뉜다.
이 시스템의 핵심
모든 파생 스탯은 Δ-더블 힐 함수 로 계산된다 — 스테이터스 투자 방향이 전투·생존·파밍 효율을 결정한다.
RuntimeStat은 매 틱 갱신되는 계산 결과 캐시 — HP·스태미너 외에 Mental(정신력)과 Penalty(디버프 축적)도 정식 자원이다.
공격등급(AR) 보정 곡선은 무기 카테고리별로 다르다 — 같은 STR/DEX여도 무기 종류에 따라 AR 효율이 다르다.
flowchart LR
subgraph SHEET [시트]
S[PlayerStatusTableData<br/>7종 스테이터스]
T[PlayerStatTableData<br/>16종 파생 스탯]
end
subgraph CALC [Δ-더블 힐 계산]
F[F_dh 함수<br/>스테이터스 → 스탯]
end
subgraph RT [런타임]
R[RuntimeStat<br/>HP · Stamina · Hunger · Thirst<br/>Mental · Penalty · Weight · AR]
EV[UI 이벤트 디스패치<br/>OnChangeHP 등]
end
S --> F --> T --> R --> EV
classDef sheet fill:#e0f2fe,stroke:#0284c7,stroke-width:2px,color:#075985
classDef calc fill:#ede9fe,stroke:#7c3aed,stroke-width:2px,color:#4c1d95
classDef rt fill:#fef3c7,stroke:#d97706,stroke-width:2px,color:#78350f
class S,T sheet
class F calc
class R,EV rt
원칙 규칙 의미 3계층 분리 Status → Stat → RuntimeStat. 단방향 계산 수치 출처를 명확하게 추적할 수 있다 Δ-더블 힐 곡선 대부분의 파생 스탯은 두 변곡점 Hill 함수 합산형 스테이터스 투자 효율이 구간별로 달라진다 무기 종속 보정 공격등급 계산은 무기 카테고리별로 곡선 파라미터가 다르다 무기 선택이 스탯 활용 방식을 결정한다 런타임 = 출력 캐시 RuntimeStat은 매 틱 갱신, UI 이벤트를 발행한다 직접 저장값이 아니라 계산 결과다
원천 능력치. 코드(CharacterStatusTableData) 기준.
코드 이름 영향 (요약) strength근력 근접 공격력, 드는 무게 vitality체력 HP, 제약 지속 시간 endurance지구력 스태미너·회복 속도·이동속도 agility민첩 손재주·이동속도·아이템 확인 속도 sensitive섬세 청각·시각 인지·발소리 영향 intellect지능 주문 공격력·주문 기억 수·효과 지속 시간 luck행운 획득 아이템 양·질
코드 의미 주 영향 스테이터스 hpHP 한도 Vitality, Endurance stamina스태미너 한도 Strength, Endurance staminaRegen스태미너 회복 속도 Endurance thirst갈증 게이지 크기 Vitality (추정) hunger허기 게이지 크기 Vitality (추정) auditoryPerception청각 인지 거리 Sensitive visualPerception시각 인지 Sensitive itemSearch아이템 확인 속도 Agility, Intellect dexterity손재주 (PDF의 Precision 대체) Agility spellMemory주문 기억 수 Intellect moveSpeed이동속도 Endurance weightCapacity최대 중량 Strength, Vitality buffTime버프 지속 시간 Intellect debuffTime디버프 저항 시간 Vitality (추정) quantityItem루팅 수량 보정 Luck qualityItem루팅 등급 보정 Luck
코드 의미 0 도달 시 HP생명력 사망 Stamina행동 자원 행동 불능 / 가드 풀림 Thirst갈증 게이지 단계 페널티 후 HP 5/초 DoT Hunger허기 게이지 단계 페널티 후 HP 5/초 DoT Mental정신력 (두려움·공포 누적) 멘탈 붕괴 — 환각·컨트롤 상실 Penalty디버프 축적값 임계 도달 시 디버프 효과 발동
항목 Mental (정신력) Penalty (디버프 축적) 방향성 감소형 (0이 위험) 증가형 (임계가 위험) 발동 트리거 도깨비·괴람·고위 몬스터 노출, 어둠·고립 독·저주 등 디버프 피격 임계 도달 효과 환각·일부 컨트롤 상실 해당 디버프 DoT·능력치 저하 회복 시간 자연 회복 + 주막(안전 지점)에서 회복 해독제·정화·시간 경과
코드 의미 StunGauge스턴 게이지. 0이 되면 그로기·자세 풀림 HittedGauge강인함 게이지. 0이 되면 자세 풀림 애니메이션
시간 경과 자동 회복. 상세는 강인함 참조.
콤보 단계별 5타로 운영. 각 타마다 공격등급·피격값·스턴값이 따로 정의된다.
코드 의미 AttackRating01 ~ AttackRating05콤보 1~5타 공격등급 HittedValue01 ~ HittedValue05콤보 단계별 강인함 감소량 StunValue01 ~ StunValue05콤보 단계별 스턴 감소량
무기 콤보 타수가 3타라면 01~03만 채우고 나머지는 0 또는 비워둔다.
코드 의미 FontFatalDamageRate앞잡 데미지 배수 BackFatalDamageRate뒤잡 데미지 배수 SprintAttackDamageRate질주 공격 데미지 배수 ChargeAttackDamageRate차지 공격 데미지 배수
코드 의미 Weight현재 휴대 무게 WeightMoveSpeed무게 적용 이동속도 계수 WeightMoveSpeedModifier추가 보정 (현재: OverweightPenalty)
WeightMoveSpeed는 base + modifier 합산으로 매번 재계산된다.
대부분의 파생 스탯은 다음 형태로 계산된다.
F(x) = Δ1 × x^n1 / (k1^n1 + x^n1) + Δ2 × x^n2 / (k2^n2 + x^n2)
항 의미 x입력 스테이터스 값 Δ1, Δ2각 변곡점에서의 최대 기여치 k1, k21차·2차 변곡점 위치 n1, n2곡선의 가파름
Δ1 + Δ2가 최대 기여 상한. clamp로 절대 상한 강제.
HP(V, E) = HP_Base + F_V(V) + F_E(E)
곡선 Δ1 Δ2 k1 k2 n1 n2 F_V (Vitality) 400 200 20 60 2 2 F_E (Endurance) 120 80 15 45 2 2
동일 함수를 쓰는 스탯: HP, Stamina, CarryWeight, IdentifyTime, 공격등급 보정.
▶ 스테이터스 투자 방향 선택
플레이어가 레벨업으로 스테이터스 포인트를 얻는다. 근력(STR)에 투자할지 민첩(AGI)에 투자할지 결정한다.
현재 STR이 k1=20 근처 — Δ-더블 힐 1차 변곡점 직전. 이 구간은 STR 1 투자당 AR 증가 효율이 높다.
반면 AGI는 이미 k2=45를 넘어 — 2차 변곡점을 지나 효율이 평탄화됐다.
같은 포인트를 써도 STR 투자 효율이 더 높은 구간이다 — Δ-더블 힐 곡선을 알면 투자 판단이 명확해진다.
시스템 연결 지점 전투 AttackRating·Defense·HittedGauge·StunGauge·Fatal*DamageRate 계산. 인벤토리·창고 Weight·WeightMoveSpeed·WeightCapacity. 아이템·루팅·드랍 quantityItem·qualityItem (행운 보정). 런 구조 Hunger·Thirst·HP 사망 처리. 감지 시스템 auditoryPerception·visualPerception.
영역 시트 / DTO 플레이어 Status PlayerStatusTableSheet → PlayerStatusTableData플레이어 Stat PlayerStatTableSheet → PlayerStatTableData몬스터 Status / Stat MonsterInfoTableSheetΔ-더블 힐 파라미터 무기 테이블 / 스탯별 파라미터 시트 (예정)
Mental·Penalty 시트화 위치 (PlayerStatTableData 컬럼 추가 vs 별도 매니저) — 보류.
Grit(근성) 스탯 도입 여부 (코드 TODO — 8번째 스테이터스 후보) — 보류.
캐릭터 클래스 시스템(PlayerData.ClassType)이 Status/Stat 초기값에 미치는 영향.