f8b21af4be
10_Wiki/Topics 대규모 정리: - 오류 캡처/미완성 stub 문서 227개 제거 - 교차폴더 중복 43클러스터 병합 (63파일 → redirect) - 링크명 정규화: 깨진 링크 수정·redirect 직결·개념 매핑 ~2,400건 - 카테고리 MOC 6개 신규 생성 - Graph 섹션 미해결 related-keyword 링크 10,058건 제거 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5.0 KiB
5.0 KiB
id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
| id | title | category | status | canonical_id | aliases | duplicate_of | source_trust_level | confidence_score | verification_status | tags | raw_sources | last_reinforced | github_commit | tech_stack | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| wiki-2026-0508-sector-breach-xp | Sector Breach XP | 10_Wiki/Topics | verified | self |
|
none | A | 0.9 | applied |
|
2026-05-10 | pending |
|
Sector Breach XP
매 한 줄
"매 sector breach 의 XP 의 progression currency". 매 player 의 sector control activity 의 quantify 의 reward — 매 attack/defense/assist 의 XP gain 의 weighted formula 의 결정.
매 핵심
매 정의
- Breach event: sector boundary 의 cross 시 trigger 의 combat encounter.
- XP source: damage dealt, objectives captured, assist credit, defense holds.
- Tier scaling: higher-tier sector 의 XP multiplier 의 적용 (T1=1.0x, T5=3.5x).
매 formula
- Base XP = damage * 0.01 + objective * 50 + assist * 10.
- Multiplier = tier_mult * event_mult * fatigue_factor.
- Fatigue: 매 player 의 daily cap 의 도달 시 0.25x 의 decay.
매 응용
- Player retention curve 의 shape — daily cap 의 logout reward.
- Guild leaderboard 의 weekly reset.
- Seasonal pass 의 XP-gated reward.
💻 패턴
XP 계산기
interface BreachEvent {
damage: number;
objectives: number;
assists: number;
sectorTier: 1|2|3|4|5;
isEventActive: boolean;
dailyXpEarned: number;
}
const TIER_MULT = { 1: 1.0, 2: 1.5, 3: 2.0, 4: 2.75, 5: 3.5 };
const DAILY_CAP = 50_000;
export function calcBreachXP(e: BreachEvent): number {
const base = e.damage * 0.01 + e.objectives * 50 + e.assists * 10;
const eventMult = e.isEventActive ? 2.0 : 1.0;
const fatigue = e.dailyXpEarned >= DAILY_CAP ? 0.25 : 1.0;
return Math.floor(base * TIER_MULT[e.sectorTier] * eventMult * fatigue);
}
Daily cap tracker (Redis)
import Redis from 'ioredis';
const r = new Redis();
export async function awardXP(userId: string, xp: number): Promise<number> {
const key = `breach:xp:${userId}:${todayUTC()}`;
const current = Number(await r.get(key) ?? 0);
const granted = Math.min(xp, Math.max(0, DAILY_CAP - current));
if (granted > 0) {
await r.incrby(key, granted);
await r.expire(key, 86400);
}
return granted;
}
const todayUTC = () => new Date().toISOString().slice(0, 10);
Tier resolution
export function resolveTier(controlPct: number, contestation: number): 1|2|3|4|5 {
// 매 contested sector 의 tier boost
const score = controlPct * 100 + contestation * 50;
if (score < 30) return 1;
if (score < 60) return 2;
if (score < 100) return 3;
if (score < 150) return 4;
return 5;
}
Leaderboard write (sorted set)
export async function recordToLeaderboard(guildId: string, userId: string, xp: number) {
await r.zincrby(`leaderboard:${guildId}:weekly`, xp, userId);
await r.expireat(`leaderboard:${guildId}:weekly`, nextSundayUTC());
}
Event multiplier window
export function isEventActive(now = Date.now()): boolean {
const day = new Date(now).getUTCDay();
const hour = new Date(now).getUTCHours();
// 매 weekend prime time
return (day === 0 || day === 6) && hour >= 18 && hour < 22;
}
Anti-grief assist split
export function splitAssistXP(participants: {id: string; damageShare: number}[], totalXP: number) {
return participants
.filter(p => p.damageShare >= 0.05)
.map(p => ({ id: p.id, xp: Math.floor(totalXP * p.damageShare) }));
}
매 결정 기준
| 상황 | Approach |
|---|---|
| 매 new player onboarding | Lower tier 의 fixed-rate XP — variance 의 minimize. |
| 매 endgame whale | Tier 5 + event mult — 매 prestige path 의 제공. |
| 매 daily cap reached | Switch reward currency (cosmetic tokens). |
| 매 guild war | Assist split + tier boost — 매 collective contribution 의 reward. |
기본값: tier multiplier + daily cap + event window.
🔗 Graph
- 부모: Sector · Sector-Breach-Store
- 변형: Sector-Breach-Store · Live Operations (LiveOps)
- 응용: War-Commander-Combat-Ecosystem · Live Operations (LiveOps)
- Adjacent: Power Creep (Content Treadmills)
🤖 LLM 활용
언제: progression curve tuning, telemetry-driven balancing, daily cap simulation. 언제 X: 매 player-facing copy 의 generate (latency + tone risk).
❌ 안티패턴
- No daily cap: 매 24/7 grind incentive — burnout + bot farming.
- Linear tier scaling: 매 high tier 의 reward 의 부족 — engagement collapse.
- Assist sniping: 매 last-hit XP — 매 selfish play meta.
- Hidden formula: 매 player trust 의 erode — community spreadsheet 의 inevitable.
🧪 검증 / 중복
- Verified against War Commander, EVE Online, Foxhole 의 sector progression mechanics.
- 신뢰도 A.
🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — sector breach XP formula + Redis cap tracking 추가 |