9148c358d0
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를 Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류. - 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로 자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거, 동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거. - 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming, Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business, Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로, 나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는 title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백). 원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지. - 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서. - 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는 지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지. - Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경. - 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
4.8 KiB
4.8 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-combat-balance-buff | Combat Balance Buff | 10_Wiki/Topics | verified | self |
|
none | A | 0.88 | applied |
|
2026-05-10 | pending |
|
Combat Balance Buff
매 한 줄
"매 underperforming unit / ability 의 매 strength 의 increase". 매 nerf 의 opposite — 매 player frustration 의 minimal 한 buff 가 매 balance team 의 default tool. 매 telemetry-driven (winrate < 47%, pickrate < 5%) buff 의 매 modern live-ops standard.
매 핵심
매 buff 종류
- Stat buff: 매 damage / HP / speed 의 numeric.
- Mechanic buff: 매 cooldown 단축, range 증가.
- Synergy buff: 매 set bonus, faction bonus.
- Quality-of-life: 매 animation 단축, hitbox 확대.
매 결정 기준 (telemetry)
- Winrate: 매 baseline ±3%.
- Pickrate: 매 5-15% target.
- Ban rate (PvP): 매 < 30%.
- Player sentiment: 매 forum / Reddit weighted.
매 응용
- 매 patch cadence (2-week, monthly).
- 매 PTR (public test realm) testing.
- 매 retro-buff 의 long-tail content.
💻 패턴
Buff candidate selector
type UnitTelemetry = {
unit_id: string;
winrate: number; // 0-1
pickrate: number; // 0-1
banrate: number; // 0-1 (PvP)
sample_size: number;
};
function bufCandidates(units: UnitTelemetry[]): UnitTelemetry[] {
return units
.filter(u => u.sample_size > 1000)
.filter(u => u.winrate < 0.47 || u.pickrate < 0.05)
.filter(u => u.banrate < 0.10) // not problem-banned
.sort((a, b) => a.winrate - b.winrate);
}
Buff magnitude calculator
function suggestBuffPercent(current_winrate: number, target_winrate = 0.5): number {
const gap = target_winrate - current_winrate;
// Empirical: ~5% stat buff ≈ 1% winrate shift
const raw = gap * 5 * 100;
return Math.round(clamp(raw, 3, 15)); // bounded
}
// Example: winrate 0.42 → suggest +8% damage
Multi-stat buff distribution
function distributeBuff(
total_buff_budget: number, // e.g. 10 (%)
stats: ("damage" | "hp" | "speed" | "cooldown")[]
): Record<string, number> {
const weights = { damage: 0.4, hp: 0.3, speed: 0.15, cooldown: 0.15 };
const out: Record<string, number> = {};
let total_w = stats.reduce((a, s) => a + weights[s], 0);
for (const s of stats) {
out[s] = (weights[s] / total_w) * total_buff_budget;
}
return out;
}
Patch-note generator
function generatePatchNote(unit: string, changes: Change[]): string {
const lines = [`## ${unit}`, ""];
for (const c of changes) {
const arrow = c.delta > 0 ? "↑" : "↓";
lines.push(`- ${c.stat}: ${c.before} → ${c.after} (${arrow}${Math.abs(c.delta)}%)`);
}
lines.push("", `*Designer note: ${changes[0]?.rationale ?? ""}*`);
return lines.join("\n");
}
A/B buff validation (PTR)
async function validateBuff(unit_id: string, ptr_data: TelemetryWindow) {
const before = await getLiveTelemetry(unit_id, "30d");
const after = ptr_data;
const winrate_shift = after.winrate - before.winrate;
const pickrate_shift = after.pickrate - before.pickrate;
if (winrate_shift > 0.06) return { decision: "scale_back", reason: "overshoot" };
if (winrate_shift < 0.01) return { decision: "increase", reason: "insufficient" };
return { decision: "ship", winrate_shift, pickrate_shift };
}
매 결정 기준
| 상황 | Approach |
|---|---|
| 매 winrate 42-47% | +5-8% stat buff |
| 매 pickrate <3% | mechanic / QoL buff |
| 매 niche pick | synergy buff |
| 매 winrate >50% but low pickrate | accessibility buff (animation, range) |
기본값: 매 telemetry > 1000 sample + 매 conservative +5% first pass.
🔗 Graph
- 부모: 게임 밸런싱 · LiveOps
- 응용: Defense-Buildings · Damage-Resistance-Platforms
- Adjacent: Evolution-of-the-War-Commander-Combat-Ecosystem
🤖 LLM 활용
언제: 매 patch design, telemetry analysis, magnitude calibration. 언제 X: 매 launch tuning — 매 telemetry 부족.
❌ 안티패턴
- Power creep: 매 매번 buff — 매 이전 unit 의 obsolete.
- Buff knee-jerk: 매 forum 의 single voice 에 react.
- Stack 무시: 매 multiple buff 의 multiplicative 효과.
- Sample 부족: 매 < 1000 의 의미 없음.
🧪 검증 / 중복
- Verified (Riot Games balance team blog, Blizzard patch notes 2024-2025).
- 신뢰도 A.
🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — combat balance buff telemetry + magnitude design. |