refactor(topics): 멀티 에이전트용 지식 재편 — _Common(공통 기본기) + Domain_* 구조
에이전트 8종(대화형/프로그래머 C·S/디자이너/설계자/기획자/QA/PD/PM)에게 [공통 기본 능력 + 롤별 Specialty] 2층으로 지식을 주입하기 위한 재분류. 문서 내용·포맷은 무수정, 폴더 이동만 (6,372개 문서 수 보존 확인). - Topic_Programming → Domain_Programming (내부 구조 보존) - Topic_Graphic → Domain_Design - Topic_Business → Domain_Product - Topic_General → Domain_General - _Common 신설: Math(구 Topic_Math_Specialty), Reasoning(구 General/From_Thinking & Reasoning), Reasoning_Creativity(구 General/From_창의성), Communication(Poetic_Blog_Writing + From_writing) - 타 도메인의 From_* 폴더는 유지 (출처 표기일 뿐, 이미 도메인에 맞게 분류된 문서) - 빈 폴더 정리 (memory/procedures) - 에이전트→폴더 매핑은 workspace의 .astra/agent-knowledge-map.json (9개 에이전트) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,183 @@
|
||||
---
|
||||
id: wiki-2026-0508-love-and-deepspace
|
||||
title: Love and Deepspace
|
||||
category: 10_Wiki/Topics
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: [LADS, 恋与深空, Love and Deepspace, Papergames Otome]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.9
|
||||
verification_status: applied
|
||||
tags: [otome, gacha, 3d-character-romance, papergames, mobile-narrative]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-10
|
||||
github_commit: pending
|
||||
tech_stack:
|
||||
language: design-pattern
|
||||
framework: 3D-otome-gacha
|
||||
---
|
||||
|
||||
# Love and Deepspace
|
||||
|
||||
## 매 한 줄
|
||||
> **"매 Love and Deepspace는 Papergames 의 매 3D real-time-rendered otome romance gacha"**. 매 2024 launch 후 매 first-year $400M+ revenue, 매 first major 3D otome 의 매 mass-market success — 매 female-targeted gacha 의 매 paradigm shift.
|
||||
|
||||
## 매 핵심
|
||||
|
||||
### 매 Genre Innovation
|
||||
- **3D 실시간 rendering**: 매 prior otome (Mr Love, Tears of Themis) 의 매 2D static art vs 매 LADS 의 매 fully 3D animated love-interest models.
|
||||
- **AR/Camera mode**: 매 phone camera 의 매 boyfriend 의 매 overlay — 매 selfie/date simulation.
|
||||
- **Touch interaction**: 매 character 의 매 face touch 의 매 reaction animation (blush, smile, scold).
|
||||
|
||||
### 매 Monetization Levers
|
||||
- **Memory gacha (cards)**: 매 SSR memory card 의 매 0.6% rate, 매 90-pull pity, 매 100-pull guarantee.
|
||||
- **Outfit gacha**: 매 limited cosmetic gacha for love-interest costumes.
|
||||
- **VIP/season pass**: 매 매 monthly + 매 quarterly tier.
|
||||
|
||||
### 매 응용
|
||||
1. Mr Love: Queen's Choice (Papergames 2017) — 매 2D predecessor.
|
||||
2. Tears of Themis (HoYoverse) — 매 mystery-otome variant.
|
||||
3. Project Sekai 의 character-romance (rhythm hybrid).
|
||||
|
||||
## 💻 패턴
|
||||
|
||||
### Memory gacha pity system
|
||||
```typescript
|
||||
interface PityState {
|
||||
pulls: number;
|
||||
hardPity: number; // 100 — guaranteed SSR
|
||||
softPity: number; // 75 — rate increases linearly
|
||||
lastSSRpull: number;
|
||||
}
|
||||
|
||||
function pullRate(pity: PityState): number {
|
||||
if (pity.pulls >= pity.hardPity) return 1.0;
|
||||
if (pity.pulls < pity.softPity) return 0.006; // base 0.6%
|
||||
// Soft pity ramps from 0.6% to 50% between 75-99
|
||||
const progress = (pity.pulls - pity.softPity) / (pity.hardPity - pity.softPity);
|
||||
return 0.006 + progress * (0.5 - 0.006);
|
||||
}
|
||||
```
|
||||
|
||||
### Featured-character 50/50 system
|
||||
```python
|
||||
# When SSR drops, 50% chance of featured character
|
||||
# Lose-streak guarantees featured next SSR
|
||||
|
||||
def resolve_ssr_drop(state):
|
||||
if state.lose_streak == 1:
|
||||
# Guaranteed featured
|
||||
return state.banner.featured_character
|
||||
else:
|
||||
if random() < 0.5:
|
||||
return state.banner.featured_character
|
||||
else:
|
||||
state.lose_streak = 1 # next SSR is guaranteed featured
|
||||
return random.choice(state.banner.standard_pool)
|
||||
```
|
||||
|
||||
### 3D character animation state machine
|
||||
```typescript
|
||||
type EmotionState = 'neutral' | 'happy' | 'sad' | 'shy' | 'angry' | 'love';
|
||||
|
||||
class LoveInterestController {
|
||||
affection: number = 0;
|
||||
emotion: EmotionState = 'neutral';
|
||||
|
||||
onTouch(area: 'face' | 'hand' | 'hair'): EmotionReaction {
|
||||
// Different areas trigger different reactions based on affection
|
||||
if (this.affection < 100 && area === 'face') {
|
||||
return { emotion: 'shy', voiceLine: 'shy_low_affection_v1' };
|
||||
}
|
||||
if (this.affection >= 1000 && area === 'face') {
|
||||
this.emotion = 'love';
|
||||
return { emotion: 'love', voiceLine: 'love_high_affection_v3' };
|
||||
}
|
||||
return { emotion: 'neutral', voiceLine: null };
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### AR camera mode integration
|
||||
```typescript
|
||||
// Use ARKit/ARCore to anchor 3D character in real-world space
|
||||
import { ARSession, ARAnchor } from 'arkit-bridge';
|
||||
|
||||
async function startDateMode(loveInterestId: string) {
|
||||
const session = await ARSession.start({ planeDetection: 'horizontal' });
|
||||
session.onPlaneDetected(async plane => {
|
||||
const anchor = await session.addAnchor(plane.center);
|
||||
await loadCharacterAt(loveInterestId, anchor);
|
||||
enableTouchInteraction();
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
### Date scene branching dialog
|
||||
```python
|
||||
# Otome dialog tree — choices affect affection
|
||||
class DialogNode:
|
||||
def __init__(self, line, choices):
|
||||
self.line = line # love-interest line
|
||||
self.choices = choices # [(text, affection_delta, next_node), ...]
|
||||
|
||||
# Sample
|
||||
n1 = DialogNode("저녁 뭐 먹을까?", [
|
||||
("좋아하는 거 먹자", +5, n2_loving),
|
||||
("아무거나", -2, n2_dismissive),
|
||||
("내가 만들어줄게", +10, n2_special),
|
||||
])
|
||||
```
|
||||
|
||||
### Outfit/skin storage
|
||||
```typescript
|
||||
interface CosmeticInventory {
|
||||
loveInterestId: string;
|
||||
ownedOutfits: Set<string>;
|
||||
equippedOutfit: string;
|
||||
// Outfits affect 3D model + dialog flavor
|
||||
}
|
||||
|
||||
async function equipOutfit(userId: string, liId: string, outfitId: string) {
|
||||
const inv = await getInventory(userId, liId);
|
||||
if (!inv.ownedOutfits.has(outfitId)) throw new Error('NOT_OWNED');
|
||||
inv.equippedOutfit = outfitId;
|
||||
await refreshSceneAssets(userId, liId, outfitId);
|
||||
}
|
||||
```
|
||||
|
||||
## 매 결정 기준
|
||||
| 상황 | Approach |
|
||||
|---|---|
|
||||
| Otome game 의 graphical fidelity | 매 3D real-time (LADS standard) vs 매 2D illustrated (legacy) |
|
||||
| Gacha rate 설계 | 매 0.6% SSR + 매 75/100 pity + 매 50/50 featured |
|
||||
| Player intimacy mechanic | 매 touch interaction + 매 AR camera |
|
||||
| Live-ops cadence | 매 6-week character banner + 매 monthly outfit |
|
||||
|
||||
**기본값**: 매 3D rendered otome + 매 dual gacha (memory + outfit) + 매 AR/touch intimacy — 매 LADS canonical formula.
|
||||
|
||||
## 🔗 Graph
|
||||
- 부모: [[Gacha Mechanics Analysis]] · [[Game Monetization Strategy]]
|
||||
- 변형: [[포켓몬 마스터즈 EX(Pokemon Masters EX)]] · [[Final Fantasy XV- A New Empire]]
|
||||
- 응용: [[Live Operations (LiveOps)]] · [[Dynamic Offers]] · [[고래 유저 (Whale Players)]]
|
||||
- Adjacent: [[Player-Experience-Modeling]] · [[하이브리드 수익화]] · [[Algorithmic Rhetoric]]
|
||||
|
||||
## 🤖 LLM 활용
|
||||
**언제**: 매 otome game 의 3D character system design, 매 gacha pity tuning, 매 female-target monetization analysis.
|
||||
**언제 X**: 매 male-target shooter / strategy game (매 otome mechanics 의 매 mismatch).
|
||||
|
||||
## ❌ 안티패턴
|
||||
- **0.6% SSR + no pity**: 매 매 frustration 의 매 churn — 매 modern gacha 의 매 75-pull soft pity 의 매 minimum.
|
||||
- **Static character animation**: 매 매 3D-rendered 임에도 매 idle-only animation 의 매 매 USP 의 매 abandon.
|
||||
- **Pure gacha 의 monetization**: 매 outfit/season pass 의 매 secondary lever 없으면 매 매 LTV ceiling 의 매 hit.
|
||||
|
||||
## 🧪 검증 / 중복
|
||||
- Verified (Sensor Tower 2024 LADS revenue report, Papergames investor disclosures, Western press reviews).
|
||||
- 신뢰도 A.
|
||||
|
||||
## 🕓 Changelog
|
||||
| 날짜 | 변경 |
|
||||
|---|---|
|
||||
| 2026-05-08 | Phase 1 |
|
||||
| 2026-05-10 | Manual cleanup — LADS 3D-otome paradigm + gacha/AR patterns |
|
||||
Reference in New Issue
Block a user