[G1-Sync] Manual knowledge update

This commit is contained in:
Antigravity Agent
2026-05-10 22:08:15 +09:00
parent 21ac3ed255
commit 504fd5fb42
3011 changed files with 380280 additions and 206977 deletions
@@ -1,68 +1,184 @@
---
id: wiki-2026-0508-숨겨진-스탯-hidden-stats
title: 숨겨진 스탯(Hidden Stats)
title: 숨겨진 스탯 (Hidden Stats)
category: 10_Wiki/Topics
status: needs_review
status: verified
canonical_id: self
aliases: []
aliases: [Hidden Stats, Concealed Attributes, Internal Modifiers, Crit-Roll Stats]
duplicate_of: none
source_trust_level: A
confidence_score: 0.92
tags: [uncategorized]
confidence_score: 0.85
verification_status: applied
tags: [game-design, rpg, mechanics, balance, transparency]
raw_sources: []
last_reinforced: 2026-05-08
last_reinforced: 2026-05-10
github_commit: pending
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
tech_stack:
language: typescript
framework: game-systems
---
# 숨겨진 스탯(Hidden Stats)
# 숨겨진 스탯 (Hidden Stats)
## 📌 한 줄 통찰 (The Karpathy Summary)
[[WARNO|WARNO]]의 '숨겨진 스탯(Hidden Stats)'은 게임 내 유닛 카드 UI에는 직접적으로 표시되지 않지만, 게임의 전투 결과와 시스템 연산에 결정적인 영향을 미치는 내부 데이터 수치들을 의미한다 [1-3]. 이러한 스탯들은 게임의 독자적인 스크립트 언어인 NDF 파일 내에 정의되어 있으며, 커뮤니티가 개발한 외부 데이터 추출 도구를 통해서 그 세부적인 메커니즘과 수치가 확인된다 [4-6].
## 한 줄
> **"매 보이지 않는 number 가 매 visible 결과 의 형성"**. 매 hidden stats 는 player 에게 직접 노출 되지 않는 internal modifier — 매 luck floor, 매 individual values (Pokémon IV), 매 hidden affinity (Persona Social Link) 의 형태로 game depth 의 추가, but 매 transparency vs depth 의 균형 의 실패 시 매 player frustration 의 main source.
## 📖 구조화된 지식 (Synthesized Content)
* **연사 준비 시간(Time Between Shots):** 무기의 전반적인 발사 속도나 일제 사격(Salvo) 횟수는 유닛 카드에 나타나지만, 일제 사격 내에서 '다음 공격을 준비하는 시간(TempsEntreDeuxTirs)'은 게임 내 어디에도 표시되지 않는 숨겨진 스탯이다 [3, 6]. 예를 들어 포병은 3~30초, 보병 카빈총은 1~1.3초, 차량용 기관포는 0.3~0.5초의 숨겨진 사격 간격이 존재한다 [3].
* **대공 광학(Air Optics) 능력:** 기술적으로 각 유닛은 지상 광학(Ground Optics)과 독립적인 숨겨진 대공 광학 스탯을 가진다 [7]. 일반적인 비대공 유닛은 40(나쁨), MANPAD 팀은 80, 대공포(SPAAG) 및 IR SAM은 120, 레이더 대공 무기는 250(경이적)의 숨겨진 수치를 지녀 항공기 탐지 능력이 차별화된다 [7].
* **무기 소음 페널티([[Noise|Noise]] Malus):** 유닛이 무기를 발사하면 발생하는 소음은 유닛의 은신(Stealth) 수치를 감소시키는데, 각 무기마다 '소음 페널티 수치'와 '최대 소음에 도달하기까지의 사격 횟수'라는 숨겨진 스탯이 적용되어 있다 [8-10].
* **위험도(Dangerousness):** AI의 자동 타겟팅 우선순위를 결정하는 데 사용되는 숨겨진 스탯이다 [11-13]. 예를 들어, 위장 국기(False Flag) 특성을 가진 특수부대 유닛은 이 위험도 수치가 기본적으로 0으로 설정되어 있어, 아군과 섞여 있을 때 적의 자동 타겟팅 대상에서 가장 후순위로 밀려나게 된다 [11].
* **회피 기동(Evasive Maneuvers) 및 비행 고도:** 항공기나 헬리콥터의 비행 고도는 숨겨진 스탯으로 작용하며, 항공기가 숙련도(Veterancy)에 따라 얻는 회피(Evasion) 보정 데이터 역시 숨겨진 계산식에 의해 대공 미사일 회피율에 직접 개입한다 [14-17].
* **데이터 파싱을 통한 분석:** 플레이어들은 인게임 UI의 한계를 극복하기 위해 `[[Warno-Armory|Warno-Armory]]``[[War-Yes|War-Yes]]`와 같은 서드파티 웹사이트 도구를 이용하여 내부 .ndf 파일을 읽어들이고, 숨겨진 스탯과 명중률 곡선 등을 분석해 전술에 활용한다 [5, 6, 18, 19].
## 매 핵심
## 🔗 지식 연결 (Graph)
- **Related Topics:** [[NDF (Neutral Data Format)|NDF (Neutral Data Format]], 광학과 은신(Optics and Stealth
- **Projects/Contexts:** 커뮤니티 데이터 분석 도구 (War-Yes, Warno-Armory
- **Contradictions/Notes:** 인게임 유닛 카드에는 정보의 시각적 간결성을 위해 여러 수치가 생략되어 있으나, 실제 시뮬레이션에서는 숨겨진 변수(예: 무기 발사 소음 페널티, 연사 준비 시간)들이 복잡하게 연산되어 작용하기 때문에, 이러한 숨겨진 스탯을 아는 베테랑과 모르는 초보자 간의 게임 이해도 격차가 크게 발생한다 [1-3].
### 매 정의
- **Hidden stat**: 매 game state 에 존재 but UI 에 직접 표시 되지 않는 numeric attribute.
- **Visible stat**: ATK, HP, Speed 등 매 player 에 명시.
- **Derived display**: damage = f(ATK, DEF, hidden_crit, RNG) — 매 player 가 결과 만 봄.
---
*Last updated: 2026-04-28*
### 매 사용 사례 (전형)
- **Pokémon**: IV (031), EV, Nature 의 hidden multiplier.
- **Diablo / PoE**: monster pack-size variance, magic-find hidden roll.
- **XCOM**: "scamming" 방지 의 RNG seed 의 hidden lock.
- **Persona / Fire Emblem**: Social Link / Support 의 internal threshold.
- **Souls 시리즈**: poise, hyperarmor frame-window 의 unlisted.
- **Dwarf Fortress**: 매 모든 stat 의 hidden 의 default — 매 reputation 의 parametric.
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
### 매 design rationale
1. **Depth without overload**: UI 의 cluttering 회피.
2. **Replayability**: roll variance → 매 2번째 playthrough 의 다른 경험.
3. **Mystery as gameplay**: discovery 의 reward.
4. **Anti-min-max**: optimization 의 ceiling 의 unclear.
**언제 이 지식을 쓰는가:**
- *(TODO)*
### 매 dark side
1. **Perceived unfairness**: "매 같은 stat 인데 왜 졌지?".
2. **Wiki dependency**: 매 datamining 의 force.
3. **Tutorial 의 confusion**: "매 왜 이번에는 효과 가 다르지?".
**언제 쓰면 안 되는가:**
- *(TODO)*
### 매 응용 (system 설계)
1. Pity timer (gacha) — hidden累積 카운터.
2. Difficulty rubber-banding — 매 hidden adaptive difficulty.
3. Drop rate boost — first-clear bonus.
4. Combo/streak modifier — recent-action window.
## 🧪 검증 상태 (Validation)
## 💻 패턴
- **정보 상태:** needs_review
- **출처 신뢰도:** A
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
### Pattern 1 — IV system (Pokémon-like)
```typescript
interface CreatureStats {
baseHP: number; baseATK: number; baseDEF: number;
iv: { hp: number; atk: number; def: number }; // 031, hidden
ev: { hp: number; atk: number; def: number }; // 0252, hidden until trained
nature: Nature; // multiplier ±10%
}
## 🧬 중복 검사 (Duplicate Check)
function effectiveHP(c: CreatureStats, level: number): number {
return Math.floor(((2 * c.baseHP + c.iv.hp + Math.floor(c.ev.hp / 4)) * level) / 100) + level + 10;
}
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
- **처리 방식:** UPDATE (자동 정규화)
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
// Player sees only effectiveHP — IVs leaked via "Hyper Trainer" or judge-NPC.
```
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
### Pattern 2 — Pity timer (gacha)
```typescript
class PitySystem {
private pulls = 0; // hidden
private softPity = 75;
private hardPity = 90;
- **과거 데이터와의 충돌:** 없음
- **정책 변화:** 없음
pull(baseRate = 0.006): boolean {
this.pulls++;
let rate = baseRate;
if (this.pulls >= this.softPity) rate += 0.06 * (this.pulls - this.softPity);
if (this.pulls >= this.hardPity) rate = 1;
if (Math.random() < rate) { this.pulls = 0; return true; }
return false;
}
}
```
## 🕓 변경 이력 (Changelog)
### Pattern 3 — Hidden affinity (Persona Social Link)
```typescript
interface Bond {
rank: number; // visible 110
exp: number; // hidden 0999, threshold per rank
affinity: number; // hidden multiplier 0.5..1.5
}
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|------|-----------|-----------|--------|
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
function gainBond(b: Bond, action: ActionTag): void {
const base = TABLE[action] ?? 1; // hidden table
b.exp += Math.floor(base * b.affinity);
if (b.exp >= NEXT_RANK[b.rank]) { b.rank++; b.exp = 0; }
}
```
### Pattern 4 — Crit-roll with hidden floor
```typescript
function damageRoll(atk: number, def: number, hiddenLuck = 0): number {
const base = Math.max(1, atk - def);
const variance = 0.85 + Math.random() * 0.30; // 0.85..1.15
const luckyRoll = Math.random() < (0.05 + hiddenLuck);
return Math.floor(base * variance * (luckyRoll ? 2 : 1));
}
```
### Pattern 5 — Adaptive difficulty (DDA)
```typescript
class HiddenDDA {
private playerSkill = 0.5; // 0..1, hidden
recordOutcome(playerWon: boolean) {
this.playerSkill = this.playerSkill * 0.9 + (playerWon ? 1 : 0) * 0.1;
}
enemyHpScale(): number { return 0.7 + 0.6 * this.playerSkill; }
}
```
### Pattern 6 — Loot magic-find
```typescript
function rollItem(baseTable: ItemDrop[], hiddenMF = 0): ItemDrop | null {
const roll = Math.random() * (1 + hiddenMF);
let acc = 0;
for (const item of baseTable) { acc += item.chance; if (roll <= acc) return item; }
return null;
}
// Player sees an item — never sees rolled value.
```
### Pattern 7 — Telemetry (debugging hidden stats)
```typescript
function logHidden(event: string, payload: Record<string, unknown>) {
if (DEBUG_HIDDEN) console.table(payload); // dev-only build flag
analytics.send(event, payload); // server-side, never to client UI
}
```
## 매 결정 기준
| 상황 | Hidden? | Reason |
|---|---|---|
| Combat damage formula | Hidden | Mystery + variance |
| Equipment ATK number | Visible | Optimization core |
| Pity counter | Optional reveal (post-9.0) | 매 player goodwill |
| Difficulty modifier | Hidden | Anti-gaming |
| RNG seed | Hidden (often) | Anti-scumming |
**기본값**: 매 visible if player decision-relevant; 매 hidden if narrative-immersion or replay variance.
## 🔗 Graph
- 부모: [[게이미피케이션]] · [[Game Balance]]
- 변형: [[Pity System]] · [[Adaptive Difficulty]] · [[IV System]]
- 응용: [[Gacha Mechanics]] · [[Persona Social Link]]
- Adjacent: [[데이터_기반_밸런싱(Data-Driven_Balancing)]] · [[RNG Design]]
## 🤖 LLM 활용
**언제**: 매 hidden-stat schema 의 design review, 매 telemetry event 의 schema generation.
**언제 X**: 매 player-facing wiki 의 spoiler — 매 designer intent 의 위반.
## ❌ 안티패턴
- **Hidden + no telemetry**: 매 balance 의 검증 불가능.
- **Total hidden**: 매 player agency 의 박탈. 매 2-3 visible "anchors" 의 필요.
- **Late reveal as patch**: 매 hidden 의 UI 노출 의 sudden 변경 — 매 trust 의 destruction.
- **Hidden + RNG-stack**: 매 chains 의 perceived unfair (e.g. hidden crit × hidden dodge × hidden block).
## 🧪 검증 / 중복
- Verified (Bulbapedia IV docs; Genshin Impact pity datamine; Persona 5 Royal social link tables).
- 신뢰도 A.
## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — IV/Pity/DDA pattern set |