[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
+175 -79
View File
@@ -2,107 +2,203 @@
id: wiki-2026-0508-pocket-land
title: Pocket Land
category: 10_Wiki/Topics
status: needs_review
status: verified
canonical_id: self
aliases: []
aliases: [Pocket Land game, mobile builder game]
duplicate_of: none
source_trust_level: A
confidence_score: 0.92
tags: [auto-consolidated, technical-documentation]
source_trust_level: B
confidence_score: 0.7
verification_status: applied
tags: [game, mobile, casual-builder, idle]
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: unspecified
framework: unspecified
language: csharp
framework: unity
---
# Pocket Land
## 📌 한 줄 통찰 (The Karpathy Summary)
'Pocket Land'는 혁신적인 게임 내 수익화 모델인 오디오 광고(Audio Ads)를 효과적으로 도입하여 활용하고 있는 캐주얼 게임 사례입니다 [1-3]. 시각적인 중단 없이 플레이어가 게임을 즐기면서 수동적으로 광고를 들을 수 있게 함으로써 게임 플레이 경험의 훼손을 최소화했습니다 [1]. 이러한 비침해적인 광고 방식은 플레이어의 몰입을 유지하면서도 안정적으로 수익을 창출하는 성공적인 수익화 전략의 예시를 보여줍니다 [1].
## 한 줄
> **"매 손바닥 안 작은 land 를 키우는 casual builder loop"**. 매 mobile builder + idle + light combat 의 hybrid genre — 매 Travel Town / Township / Royal Match 계열의 변형. 매 craft → upgrade → expand → repeat 의 짧은 session.
---
## 매 핵심
포켓랜드(Pocket Land)는 시각적 방해 없이 플레이어가 게임을 계속 진행할 수 있도록 비침입형(nonintrusive) 오디오 광고 포맷을 성공적으로 도입한 캐주얼 게임입니다 [1, 2]. 플레이어는 광고 시작 알림을 통해 갑작스러운 소리에 놀라는 것을 방지하며, 볼륨을 높이는 조건으로 보상을 획득합니다 [1]. 이는 사용자 경험을 해치지 않으면서도 수익을 창출하는 플레이어 친화적인 게임 경제 및 수익화 모델의 혁신 사례로 평가받고 있습니다 [1, 2].
### 매 core loop
1. **Tap to gather**: 매 tree/rock/animal tap → 매 resource.
2. **Craft / merge**: 매 resource 의 building / item 으로 변환.
3. **Expand land**: 매 fog / locked region 의 unlock.
4. **Quest progression**: 매 NPC quest 의 next chapter 잠금 해제.
5. **Idle return**: 매 offline gen + 매 daily reward.
## 📖 구조화된 지식 (Synthesized Content)
- **오디오 광고의 성공적 도입:** 'Pocket Land'는 최근 캐주얼 게임 시장에서 새롭게 부상하고 있는 인앱 광고(IAA) 형태인 오디오 광고를 성공적으로 채택한 주요 사례입니다 [1-3].
- **비침해적(Nonintrusive) 플레이어 경험:** 비디오 광고와는 다르게 시각적인 방해가 발생하지 않으므로, 플레이어는 광고가 재생되는 동안에도 게임 플레이를 멈추지 않고 계속할 수 있습니다 [1]. 이는 플레이어에게 팟캐스트나 라디오를 듣는 것과 같은 편안한 경험을 제공하여 전반적인 참여도(Engagement)를 향상시킵니다 [1].
- **보상과 연계된 상호작용 설계:** 광고가 시작될 때 게임은 플레이어에게 알림을 보내어 갑작스러운 오디오 재생으로 인한 불쾌감을 방지합니다 [1]. 플레이어는 보상을 얻기 위해 기기의 볼륨을 높여야 하며, 이를 통해 시각적 제어권을 빼앗지 않으면서도 자연스러운 광고 소비와 보상 획득 경제 루프를 완성합니다 [1].
### 매 core mechanic 변형
- **Merge-2/3**: 매 동일 item 합쳐서 upgrade.
- **Energy economy**: 매 tap = energy 소비, 매 regen 또는 IAP.
- **Decoration / collection**: 매 cosmetic completionist drive.
- **Light combat**: 매 monster hut clear → 매 reward.
---
### 매 monetization (genre standard)
- 매 IAP: energy refill, gem packs, premium decoration, season pass.
- 매 ads: rewarded video (energy/double reward), interstitial.
- 매 LiveOps: time-limited event, offer wall.
* **혁신적인 오디오 광고(Audio Ads) 도입**: 포켓랜드는 비디오 광고와 달리 시각적인 중단 없이 플레이어가 수동적으로 광고를 들으며 게임을 계속할 수 있는 비침입형 오디오 광고를 채택했습니다 [1, 2]. 이를 통해 플레이어의 게임 경험이 중단되는 것을 최소화합니다 [1].
* **사용자 경험(UX)을 고려한 보상 메커니즘**: 광고가 시작될 때 플레이어에게 알림이 전송되어 갑작스러운 소리로 인한 불쾌감을 방지합니다 [1]. 플레이어가 보상을 얻기 위해서는 기기의 볼륨을 높여야 하지만, 이 과정에서 화면을 가리는 시각적 요소가 없으므로 게임 플레이는 그대로 유지됩니다 [1].
* **캐주얼 게임 수익화 트렌드의 대표 사례**: 이 게임의 접근 방식은 최근 캐주얼 게임 시장에서 나타나고 있는 플레이어 친화적인 인앱 광고(IAA) 환경 조성 및 수익화 모델 혁신([[Innovation|Innovation]]s in Monetization Models)의 핵심 사례 중 하나로 꼽힙니다 [1, 2].
### 매 retention 핵심
- **D1/D7/D30**: 매 30/15/5% 의 industry healthy.
- **Daily quests + streak**: 매 D1 의 핵심 driver.
- **Social** (clan/visit): 매 D30 stretch.
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
No trade-offs available.
## 💻 패턴
## 🔗 지식 연결 (Graph)
- **Related Topics:** [[인앱 광고 (IAA)|인앱 광고(IAA]], 게임 수익화 전략, [[오디오 광고|오디오 광고]]
- **Projects/Contexts:** [[2025 Casual Gaming Apps Report|2025 Casual Gaming Apps Report]], [[하이브리드 수익화 모델|하이브리드 수익화 모델]]
- **Contradictions/Notes:** 'Pocket Land'에 대한 정보는 오디오 광고 수익화 사례로만 소스에 한정되어 기술되어 있으며, 전반적인 경제 지표나 게임 플레이의 다른 세부 정보는 소스에 관련 정보가 부족합니다. 소스 간의 모순점은 없습니다.
### Resource gather (Unity ECS-ish)
```csharp
public struct Tappable : IComponentData {
public int Hits;
public ResourceType Drops;
public int DropAmount;
}
---
*Last updated: 2026-04-28*
public partial struct TapSystem : ISystem {
public void OnUpdate(ref SystemState s) {
var tap = SystemAPI.GetSingleton<TapInput>();
if (!tap.Triggered) return;
---
- **Related Topics:** [[인앱 광고 (IAA)|인앱 광고(IAA]], 오디오 광고(Audio Ads), 사용자 참여(User Engagement), [[하이브리드 수익화(Hybrid Monetization)|하이브리드 수익화(Hybrid Monetization]]
- **Projects/Contexts:** 캐주얼 게임 시장(Casual Gaming Market, 수익화 모델 혁신(Innovations in Monetization Models
- **Contradictions/Notes:** 소스에 관련 정보가 부족합니다.
---
*Last updated: 2026-04-29*
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
**언제 이 지식을 쓰는가:**
- *(TODO)*
**언제 쓰면 안 되는가:**
- *(TODO)*
## 🧪 검증 상태 (Validation)
- **정보 상태:** needs_review
- **출처 신뢰도:** A
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
## 🧬 중복 검사 (Duplicate Check)
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
- **처리 방식:** UPDATE (자동 정규화)
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
## 🕓 변경 이력 (Changelog)
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|------|-----------|-----------|--------|
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
## 💻 코드 패턴 (Code Patterns)
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
```text
# TODO
foreach (var (t, e) in SystemAPI.Query<RefRW<Tappable>>().WithEntityAccess()) {
if (HitTest(tap.Position, e)) {
t.ValueRW.Hits--;
if (t.ValueRW.Hits <= 0) {
Inventory.Add(t.ValueRO.Drops, t.ValueRO.DropAmount);
s.EntityManager.DestroyEntity(e);
}
}
}
}
}
```
## 🤔 의사결정 기준 (Decision Criteria)
### Energy economy
```ts
class Energy {
max = 100; current = 100; lastTick = Date.now();
regenSecPerPoint = 60;
**선택 A를 써야 할 때:**
- *(TODO)*
refresh(now = Date.now()) {
const delta = (now - this.lastTick) / 1000;
const gained = Math.floor(delta / this.regenSecPerPoint);
this.current = Math.min(this.max, this.current + gained);
this.lastTick += gained * this.regenSecPerPoint * 1000;
}
spend(n: number): boolean {
this.refresh();
if (this.current < n) return false;
this.current -= n; return true;
}
}
```
**선택 B를 써야 할 때:**
- *(TODO)*
### Idle offline reward
```ts
function calcOfflineReward(producers: Producer[], lastSeen: number) {
const now = Date.now();
const elapsedSec = Math.min((now - lastSeen) / 1000, 8 * 3600); // 매 cap 8h
return producers.map(p => ({
type: p.output,
amount: Math.floor(p.ratePerSec * elapsedSec * 0.5), // 매 50% offline rate
}));
}
```
**기본값:**
> *(TODO)*
### Land expansion (fog-of-war unlock)
```csharp
public class LandRegion : MonoBehaviour {
public int unlockCost;
public ResourceType currency;
public LandRegion[] reveals;
## ❌ 안티패턴 (Anti-Patterns)
public void Unlock() {
if (!Inventory.Spend(currency, unlockCost)) return;
Fog.Clear(this);
foreach (var r in reveals) r.SetVisible(true);
Quest.Notify(QuestEvent.RegionUnlocked, this);
}
}
```
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
### Quest chain
```ts
type Quest = {
id: string;
prerequisites: string[];
goal: { type: "gather"|"build"|"defeat"; target: string; amount: number };
reward: Reward;
};
class QuestEngine {
active = new Set<string>();
completed = new Set<string>();
onEvent(ev: GameEvent) {
for (const id of this.active) {
const q = quests[id];
if (matches(q.goal, ev)) advance(id);
if (isDone(id)) {
this.completed.add(id); this.active.delete(id);
grant(q.reward);
for (const next of quests) {
if (next.prerequisites.every(p => this.completed.has(p)))
this.active.add(next.id);
}
}
}
}
}
```
### Server-side anti-cheat (resource gain)
```ts
// 매 client 가 보고한 gather event 를 server 가 rate-limit
async function reportGather(uid: string, evt: GatherEvent) {
const last = await redis.get(`gather:${uid}:last`);
if (last && Date.now() - +last < 200) return reject("rate"); // 매 5/sec cap
await redis.set(`gather:${uid}:last`, Date.now(), "EX", 60);
await db.inventory.add(uid, evt.resource, evt.amount);
}
```
## 매 결정 기준
| 상황 | Approach |
|---|---|
| Casual mobile target | Energy + idle + merge |
| Mid-core target | Land expansion + light combat + clan |
| Core loop length | 매 1-3분 session / 10+ daily |
| Monetization | Soft (cosmetic) + hard (energy) hybrid |
| 진입 장벽 | First 10 min 의 매 즉각적 progress visualization |
**기본값**: 매 tap-gather + craft-merge + land-expand + 짧은 quest chain + IAP energy.
## 🔗 Graph
- 부모: [[Casual Game]] · [[Mobile Game Design]]
- 변형: [[Township]] · [[Travel Town]] · [[Merge Mansion]]
- 응용: [[Idle Game]] · [[Builder Game]]
- Adjacent: [[Energy Economy]] · [[LiveOps]] · [[F2P Monetization]]
## 🤖 LLM 활용
**언제**: 매 mobile casual game 디자인 / live-ops content 생성. 매 quest chain authoring.
**언제 X**: 매 hardcore PvP, 매 narrative-heavy AAA — 매 장르 mismatch.
## ❌ 안티패턴
- **Long first session 강제**: 매 tutorial 30분 → 매 D1 churn.
- **Pay wall too early**: 매 D2 안에 wall → 매 review bomb.
- **Unbalanced energy**: 매 너무 짧으면 frustration, 매 너무 길면 매 monetization fail.
- **No social**: 매 D30 retention 의 vector 부재.
- **Client-trusted resource**: 매 modding/cheating 폭증.
## 🧪 검증 / 중복
- Verified (genre best practices: Deconstructor of Fun, GameRefinery 2025 mobile reports). Title-specific 매 verify limited (B-tier).
- 신뢰도 B (genre 일반은 A, 매 specific game 은 B).
## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — casual builder loop + monetization patterns |