@musashishao/agent-kit 1.9.0 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/agents/ai-asset-factory.md +700 -0
- package/.agent/agents/ai-audio-factory.md +503 -0
- package/.agent/agents/game-developer.md +4 -4
- package/.agent/agents/orchestrator.md +113 -3
- package/.agent/agents/project-planner.md +67 -0
- package/.agent/agents/unity-mobile-master.md +949 -0
- package/.agent/mcp/config/registry.json +65 -51
- package/.agent/mcp/servers/notebooklm/README.md +114 -0
- package/.agent/mcp/servers/notebooklm/package.json +35 -0
- package/.agent/mcp/servers/notebooklm/src/auth/chrome.ts +225 -0
- package/.agent/mcp/servers/notebooklm/src/auth/index.ts +1 -0
- package/.agent/mcp/servers/notebooklm/src/index.ts +516 -0
- package/.agent/mcp/servers/notebooklm/src/services/index.ts +3 -0
- package/.agent/mcp/servers/notebooklm/src/services/library.ts +217 -0
- package/.agent/mcp/servers/notebooklm/src/services/notebooklm.ts +380 -0
- package/.agent/mcp/servers/notebooklm/tsconfig.json +15 -0
- package/.agent/mcp-gateway/README.md +169 -20
- package/.agent/mcp-gateway/package.json +22 -7
- package/.agent/mcp-gateway/src/auth/index.ts +55 -0
- package/.agent/mcp-gateway/src/auth/middleware.ts +242 -0
- package/.agent/mcp-gateway/src/auth/oauth.ts +462 -0
- package/.agent/mcp-gateway/src/auth/scopes.ts +227 -0
- package/.agent/mcp-gateway/src/index.ts +252 -105
- package/.agent/mcp-gateway/src/observability/index.ts +5 -0
- package/.agent/mcp-gateway/src/observability/otel.ts +405 -0
- package/.agent/mcp-gateway/src/transports/index.ts +5 -0
- package/.agent/mcp-gateway/src/transports/streamableHttp.ts +235 -0
- package/.agent/rules/CODEX.md +89 -0
- package/.agent/rules/CODE_RULES.md +73 -0
- package/.agent/rules/GEMINI.md +25 -0
- package/.agent/rules/MEMORY_STATE.md +110 -0
- package/.agent/rules/REFERENCE.md +33 -141
- package/.agent/rules/REF_SKILLS.md +116 -0
- package/.agent/rules/REF_WORKFLOWS.md +81 -0
- package/.agent/scripts/ak_cli.py +106 -5
- package/.agent/scripts/memory_manager.py +48 -9
- package/.agent/skills/anti-hallucination/SKILL.md +295 -0
- package/.agent/skills/anti-hallucination/scripts/check_hallucination.py +299 -0
- package/.agent/skills/bifurcation-analysis/SKILL.md +56 -0
- package/.agent/skills/brainstorming/SKILL.md +80 -6
- package/.agent/skills/decision-memory/SKILL.md +317 -0
- package/.agent/skills/emergence-detector/SKILL.md +230 -0
- package/.agent/skills/emergence-detector/scripts/check_emergence.py +265 -0
- package/.agent/skills/explained-qa/SKILL.md +142 -0
- package/.agent/skills/explained-qa/game-terminology.md +214 -0
- package/.agent/skills/game-development/ai-dialogue-engine/SKILL.md +442 -0
- package/.agent/skills/game-development/ai-graphics-generator/SKILL.md +463 -0
- package/.agent/skills/game-development/ai-playtest-framework/SKILL.md +570 -0
- package/.agent/skills/game-development/camera-systems/SKILL.md +607 -0
- package/.agent/skills/game-development/card-battle-engine/SKILL.md +618 -0
- package/.agent/skills/game-development/character-controller-3d/SKILL.md +908 -0
- package/.agent/skills/game-development/cloud-save-sync/SKILL.md +527 -0
- package/.agent/skills/game-development/combat-system/SKILL.md +748 -0
- package/.agent/skills/game-development/compliance-rating/SKILL.md +277 -0
- package/.agent/skills/game-development/crossplatform-build/SKILL.md +386 -0
- package/.agent/skills/game-development/cultivation-progression/SKILL.md +520 -0
- package/.agent/skills/game-development/data-driven-balance/SKILL.md +535 -0
- package/.agent/skills/game-development/game-analytics-integrator/SKILL.md +410 -0
- package/.agent/skills/game-development/game-audio-advanced/SKILL.md +646 -0
- package/.agent/skills/game-development/game-economy-designer/SKILL.md +375 -0
- package/.agent/skills/game-development/game-marketing/SKILL.md +85 -0
- package/.agent/skills/game-development/game-state-manager/SKILL.md +883 -0
- package/.agent/skills/game-development/hybrid-game-spec/SKILL.md +220 -0
- package/.agent/skills/game-development/inventory-quest/SKILL.md +747 -0
- package/.agent/skills/game-development/liveops/SKILL.md +308 -0
- package/.agent/skills/game-development/localization/SKILL.md +286 -0
- package/.agent/skills/game-development/mobile-input-patterns/SKILL.md +343 -0
- package/.agent/skills/game-development/monetization-strategy/SKILL.md +94 -0
- package/.agent/skills/game-development/multiplayer-master/SKILL.md +727 -0
- package/.agent/skills/game-development/narrative-branching/SKILL.md +593 -0
- package/.agent/skills/game-development/procedural-level-ai/SKILL.md +367 -0
- package/.agent/skills/game-development/prototyping-rapid/SKILL.md +205 -0
- package/.agent/skills/game-development/spec-ecosystem/SKILL.md +155 -0
- package/.agent/skills/game-development/spec-ecosystem/decision-log-format.md +129 -0
- package/.agent/skills/game-development/spec-ecosystem/templates/PLAN-template.md +178 -0
- package/.agent/skills/game-development/spec-ecosystem/templates/SPEC-template.md +110 -0
- package/.agent/skills/game-development/spec-ecosystem/templates/TASKS-template.md +156 -0
- package/.agent/skills/game-development/survival-systems/SKILL.md +493 -0
- package/.agent/skills/game-development/testing-qa/SKILL.md +270 -0
- package/.agent/skills/game-development/unity-mobile-optimization/SKILL.md +271 -0
- package/.agent/skills/intent-capture/SKILL.md +65 -0
- package/.agent/skills/mcp-composition/SKILL.md +362 -0
- package/.agent/skills/mcp-observability/SKILL.md +323 -0
- package/.agent/skills/mcp-security/SKILL.md +314 -0
- package/.agent/skills/trust-spectrum/SKILL.md +291 -0
- package/.agent/skills/vibe-coding-guard/SKILL.md +328 -0
- package/.agent/templates/AGENTS.game.md +63 -0
- package/.agent/templates/docs/WORKFLOW_GUIDE.en.md +100 -0
- package/.agent/templates/docs/WORKFLOW_GUIDE.vi.md +100 -0
- package/.agent/workflows/ai-agent.md +2 -0
- package/.agent/workflows/autofix.md +1 -0
- package/.agent/workflows/brainstorm.md +1 -0
- package/.agent/workflows/context.md +1 -0
- package/.agent/workflows/create.md +39 -8
- package/.agent/workflows/dashboard.md +1 -0
- package/.agent/workflows/debug.md +14 -0
- package/.agent/workflows/deploy.md +14 -0
- package/.agent/workflows/enhance.md +44 -0
- package/.agent/workflows/gamekit-init.md +177 -0
- package/.agent/workflows/gamekit-launch.md +338 -0
- package/.agent/workflows/gamekit-plan.md +204 -0
- package/.agent/workflows/gamekit-qa.md +153 -0
- package/.agent/workflows/gamekit-spec.md +243 -0
- package/.agent/workflows/gamekit-tasks.md +208 -0
- package/.agent/workflows/marketing.md +2 -0
- package/.agent/workflows/next.md +1 -0
- package/.agent/workflows/orchestrate.md +12 -0
- package/.agent/workflows/pentest.md +2 -0
- package/.agent/workflows/plan.md +42 -0
- package/.agent/workflows/preview.md +1 -0
- package/.agent/workflows/quality.md +1 -0
- package/.agent/workflows/saas.md +2 -0
- package/.agent/workflows/spec.md +42 -0
- package/.agent/workflows/status.md +1 -0
- package/.agent/workflows/test.md +14 -0
- package/.agent/workflows/ui-ux-pro-max.md +1 -0
- package/bin/cli.js +411 -111
- package/package.json +1 -2
- package/.agent/agents/game-asset-curator.md +0 -317
- package/.agent/agents/game-narrative-designer.md +0 -310
- package/.agent/agents/game-qa-agent.md +0 -441
- package/.agent/workflows/game-prototype.md +0 -154
- package/docs/AI_DATA_INFRASTRUCTURE.md +0 -288
- package/docs/CHANGELOG_AI_INFRA.md +0 -141
- package/docs/MIGRATION_GUIDE_V1.9.md +0 -55
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: game-economy-designer
|
|
3
|
+
description: AI-powered F2P game economy design. Currency systems, progression curves, monetization patterns, gacha math, and balance simulation for mobile games.
|
|
4
|
+
allowed-tools: Read, Write, Edit, Bash, Grep, WebSearch
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Game Economy Designer Skill
|
|
8
|
+
|
|
9
|
+
> Design profitable, fair, and engaging F2P economies with AI assistance.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
|
|
15
|
+
- Designing currency systems for F2P games
|
|
16
|
+
- Balancing progression and monetization
|
|
17
|
+
- Implementing IAP, ads, battle passes
|
|
18
|
+
- Gacha/loot box probability design
|
|
19
|
+
- Revenue projection and modeling
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Currency Design
|
|
24
|
+
|
|
25
|
+
### Three-Currency Model
|
|
26
|
+
|
|
27
|
+
| Currency | Earn Method | Spend On | Psychology |
|
|
28
|
+
|----------|-------------|----------|------------|
|
|
29
|
+
| **Soft** (Coins) | Gameplay | Basic items, upgrades | Progression feeling |
|
|
30
|
+
| **Hard** (Gems) | IAP, rare drops | Premium items, skips | Scarcity value |
|
|
31
|
+
| **Premium** (Tickets) | Events, special | Exclusive content | FOMO, collectibility |
|
|
32
|
+
|
|
33
|
+
### Conversion Ratios
|
|
34
|
+
```
|
|
35
|
+
Soft ←→ Hard: 100:1 (indirect via time)
|
|
36
|
+
Hard ←→ Real $: 100 = $0.99
|
|
37
|
+
|
|
38
|
+
Example packs:
|
|
39
|
+
100 Gems = $0.99 (worst value, impulse)
|
|
40
|
+
500 Gems = $4.99 (10% bonus)
|
|
41
|
+
1200 Gems = $9.99 (20% bonus)
|
|
42
|
+
2800 Gems = $19.99 (40% bonus, best value)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Progression Curves
|
|
48
|
+
|
|
49
|
+
### XP Formula
|
|
50
|
+
```csharp
|
|
51
|
+
public static int XPForLevel(int level)
|
|
52
|
+
{
|
|
53
|
+
// Exponential curve with diminishing returns
|
|
54
|
+
return Mathf.RoundToInt(100 * Mathf.Pow(level, 1.5f));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Level 1: 100 XP
|
|
58
|
+
// Level 5: 559 XP
|
|
59
|
+
// Level 10: 1000 XP
|
|
60
|
+
// Level 20: 1789 XP
|
|
61
|
+
// Level 50: 3536 XP
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Unlock Schedule
|
|
65
|
+
```
|
|
66
|
+
Level 1-5: Tutorial (all features locked)
|
|
67
|
+
Level 5: Daily Challenges unlocked
|
|
68
|
+
Level 10: PvP unlocked
|
|
69
|
+
Level 15: Crafting unlocked
|
|
70
|
+
Level 20: Guilds unlocked
|
|
71
|
+
Level 30: Events unlocked
|
|
72
|
+
Level 50+: Prestige/Endgame
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Monetization Patterns
|
|
78
|
+
|
|
79
|
+
### IAP Pricing Psychology
|
|
80
|
+
|
|
81
|
+
| Tier | Price | Target | Examples |
|
|
82
|
+
|------|-------|--------|----------|
|
|
83
|
+
| **Micro** | $0.99-1.99 | Impulse buyers | Extra lives, small packs |
|
|
84
|
+
| **Small** | $4.99-9.99 | Engaged players | Remove ads, starter packs |
|
|
85
|
+
| **Medium** | $14.99-24.99 | Committed | Season pass, larger packs |
|
|
86
|
+
| **Whale** | $49.99-99.99 | Big spenders | Ultimate bundles |
|
|
87
|
+
|
|
88
|
+
### Starter Pack Design
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"name": "Starter Pack",
|
|
92
|
+
"price": 4.99,
|
|
93
|
+
"originalValue": 14.99,
|
|
94
|
+
"discount": "67% OFF",
|
|
95
|
+
"oneTimePurchase": true,
|
|
96
|
+
"contents": [
|
|
97
|
+
{"item": "gems", "amount": 500},
|
|
98
|
+
{"item": "exclusive_skin", "amount": 1},
|
|
99
|
+
{"item": "premium_currency", "amount": 100}
|
|
100
|
+
],
|
|
101
|
+
"availability": "first_7_days"
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Battle Pass Design
|
|
106
|
+
```markdown
|
|
107
|
+
## Battle Pass Structure
|
|
108
|
+
|
|
109
|
+
**Duration:** 30 days
|
|
110
|
+
**Levels:** 50
|
|
111
|
+
**XP per level:** 1000 (5 games avg)
|
|
112
|
+
|
|
113
|
+
### Free Track
|
|
114
|
+
- Level 5: 100 Coins
|
|
115
|
+
- Level 10: Common Skin
|
|
116
|
+
- Level 20: 50 Gems
|
|
117
|
+
- Level 30: Rare Item
|
|
118
|
+
- Level 50: Unique Title
|
|
119
|
+
|
|
120
|
+
### Premium Track ($9.99)
|
|
121
|
+
- All Free Track rewards
|
|
122
|
+
- Level 1: Premium Frame
|
|
123
|
+
- Level 5: 200 Coins
|
|
124
|
+
- Level 10: Rare Skin
|
|
125
|
+
- Level 20: 100 Gems
|
|
126
|
+
- Level 30: Legendary Item
|
|
127
|
+
- Level 50: Exclusive Character
|
|
128
|
+
|
|
129
|
+
### Catch-Up Mechanic
|
|
130
|
+
- Buy levels: 150 Gems each
|
|
131
|
+
- XP boost purchasable
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Gacha/Loot Box Math
|
|
137
|
+
|
|
138
|
+
### Probability Table
|
|
139
|
+
```csharp
|
|
140
|
+
public class GachaSystem
|
|
141
|
+
{
|
|
142
|
+
public static readonly Dictionary<Rarity, float> BaseRates = new()
|
|
143
|
+
{
|
|
144
|
+
[Rarity.Common] = 60f,
|
|
145
|
+
[Rarity.Uncommon] = 25f,
|
|
146
|
+
[Rarity.Rare] = 10f,
|
|
147
|
+
[Rarity.Epic] = 4f,
|
|
148
|
+
[Rarity.Legendary] = 1f
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
// Pity system: Guaranteed legendary after N pulls
|
|
152
|
+
private int _pullsSinceLegendary = 0;
|
|
153
|
+
private const int PITY_THRESHOLD = 90;
|
|
154
|
+
|
|
155
|
+
public Rarity Pull()
|
|
156
|
+
{
|
|
157
|
+
_pullsSinceLegendary++;
|
|
158
|
+
|
|
159
|
+
// Pity guarantee
|
|
160
|
+
if (_pullsSinceLegendary >= PITY_THRESHOLD)
|
|
161
|
+
{
|
|
162
|
+
_pullsSinceLegendary = 0;
|
|
163
|
+
return Rarity.Legendary;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Soft pity: Increase rates near threshold
|
|
167
|
+
float legendaryRate = BaseRates[Rarity.Legendary];
|
|
168
|
+
if (_pullsSinceLegendary > 75)
|
|
169
|
+
legendaryRate += (_pullsSinceLegendary - 75) * 2f;
|
|
170
|
+
|
|
171
|
+
return WeightedRandom(legendaryRate);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Expected Value Calculation
|
|
177
|
+
```
|
|
178
|
+
Single pull cost: 100 Gems ($0.99)
|
|
179
|
+
Legendary rate: 1%
|
|
180
|
+
Pity: 90 pulls
|
|
181
|
+
|
|
182
|
+
Expected pulls for legendary:
|
|
183
|
+
- Lucky: ~37 pulls (median with pity)
|
|
184
|
+
- Worst case: 90 pulls (guaranteed)
|
|
185
|
+
- Average: ~62 pulls
|
|
186
|
+
|
|
187
|
+
Expected cost for legendary:
|
|
188
|
+
- Average: 62 × $0.99 = $61.38
|
|
189
|
+
- Worst: 90 × $0.99 = $89.10
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Ad Integration
|
|
195
|
+
|
|
196
|
+
### Rewarded Video Placement
|
|
197
|
+
```csharp
|
|
198
|
+
public class AdManager
|
|
199
|
+
{
|
|
200
|
+
public enum AdPlacement
|
|
201
|
+
{
|
|
202
|
+
DoubleCoins, // After level complete
|
|
203
|
+
ExtraLife, // On death
|
|
204
|
+
DailyBonus, // Once per day
|
|
205
|
+
SpeedUpTimer, // Skip wait time
|
|
206
|
+
FreeGacha // One free pull
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
public int GetDailyLimit(AdPlacement placement)
|
|
210
|
+
{
|
|
211
|
+
return placement switch
|
|
212
|
+
{
|
|
213
|
+
AdPlacement.DoubleCoins => 5,
|
|
214
|
+
AdPlacement.ExtraLife => 3,
|
|
215
|
+
AdPlacement.DailyBonus => 1,
|
|
216
|
+
AdPlacement.SpeedUpTimer => 10,
|
|
217
|
+
AdPlacement.FreeGacha => 1,
|
|
218
|
+
_ => 3
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Revenue Mix Target
|
|
225
|
+
```
|
|
226
|
+
Typical F2P Mobile Game:
|
|
227
|
+
- IAP: 70%
|
|
228
|
+
- Ads: 25%
|
|
229
|
+
- Subscriptions: 5%
|
|
230
|
+
|
|
231
|
+
Hyper-Casual:
|
|
232
|
+
- IAP: 20%
|
|
233
|
+
- Ads: 80%
|
|
234
|
+
|
|
235
|
+
Mid-Core:
|
|
236
|
+
- IAP: 85%
|
|
237
|
+
- Ads: 10%
|
|
238
|
+
- Subscriptions: 5%
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## AI Economy Generator
|
|
244
|
+
|
|
245
|
+
### Prompt Template
|
|
246
|
+
```
|
|
247
|
+
Design a F2P economy for a {genre} mobile game.
|
|
248
|
+
|
|
249
|
+
Requirements:
|
|
250
|
+
- Target ARPU: ${arpu}
|
|
251
|
+
- Session length: {session_length} minutes
|
|
252
|
+
- Retention focus: {D1/D7/D30}
|
|
253
|
+
|
|
254
|
+
Output:
|
|
255
|
+
1. Currency definitions (soft, hard, premium)
|
|
256
|
+
2. Progression curve (levels 1-50)
|
|
257
|
+
3. IAP catalog (5-8 products)
|
|
258
|
+
4. Ad placements and limits
|
|
259
|
+
5. Revenue projection
|
|
260
|
+
|
|
261
|
+
Format as JSON.
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Example Output
|
|
265
|
+
```json
|
|
266
|
+
{
|
|
267
|
+
"currencies": {
|
|
268
|
+
"coins": {
|
|
269
|
+
"type": "soft",
|
|
270
|
+
"earnRate": "10-50 per level",
|
|
271
|
+
"uses": ["upgrades", "consumables"]
|
|
272
|
+
},
|
|
273
|
+
"gems": {
|
|
274
|
+
"type": "hard",
|
|
275
|
+
"earnRate": "5 per day from ads",
|
|
276
|
+
"purchasable": true
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
"progression": {
|
|
280
|
+
"maxLevel": 100,
|
|
281
|
+
"xpCurve": "level^1.5 * 100",
|
|
282
|
+
"keyUnlocks": {
|
|
283
|
+
"5": "Daily Challenges",
|
|
284
|
+
"10": "PvP Mode",
|
|
285
|
+
"20": "Guilds"
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
"iapCatalog": [
|
|
289
|
+
{"id": "remove_ads", "price": 2.99, "type": "non_consumable"},
|
|
290
|
+
{"id": "starter_pack", "price": 4.99, "gems": 500, "oneTime": true},
|
|
291
|
+
{"id": "gems_100", "price": 0.99, "gems": 100},
|
|
292
|
+
{"id": "gems_500", "price": 4.99, "gems": 550},
|
|
293
|
+
{"id": "battle_pass", "price": 9.99, "duration": "30_days"}
|
|
294
|
+
],
|
|
295
|
+
"projectedMetrics": {
|
|
296
|
+
"arpu": 0.52,
|
|
297
|
+
"arppu": 8.50,
|
|
298
|
+
"conversionRate": 0.06
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Balance Simulation
|
|
306
|
+
|
|
307
|
+
```csharp
|
|
308
|
+
public class EconomySimulator
|
|
309
|
+
{
|
|
310
|
+
public SimulationResult RunSimulation(EconomyConfig config, int days, int players)
|
|
311
|
+
{
|
|
312
|
+
var results = new SimulationResult();
|
|
313
|
+
|
|
314
|
+
for (int p = 0; p < players; p++)
|
|
315
|
+
{
|
|
316
|
+
var player = new SimulatedPlayer(GetRandomPlayerType());
|
|
317
|
+
|
|
318
|
+
for (int d = 0; d < days; d++)
|
|
319
|
+
{
|
|
320
|
+
player.PlayDay(config);
|
|
321
|
+
results.TrackDay(player, d);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
results.TrackPlayer(player);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
return results;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
private PlayerType GetRandomPlayerType()
|
|
331
|
+
{
|
|
332
|
+
float r = Random.value;
|
|
333
|
+
if (r < 0.70f) return PlayerType.FreeToPlay;
|
|
334
|
+
if (r < 0.90f) return PlayerType.Minnow;
|
|
335
|
+
if (r < 0.98f) return PlayerType.Dolphin;
|
|
336
|
+
return PlayerType.Whale;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
public enum PlayerType
|
|
341
|
+
{
|
|
342
|
+
FreeToPlay, // Never pays
|
|
343
|
+
Minnow, // <$10 total
|
|
344
|
+
Dolphin, // $10-100 total
|
|
345
|
+
Whale // >$100 total
|
|
346
|
+
}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Compliance Considerations
|
|
352
|
+
|
|
353
|
+
| Regulation | Requirements |
|
|
354
|
+
|------------|--------------|
|
|
355
|
+
| **COPPA** | No IAP targeting <13, parental gates |
|
|
356
|
+
| **GDPR** | Data consent, deletion rights |
|
|
357
|
+
| **Loot Box Laws** | Disclose rates (Belgium, Netherlands ban) |
|
|
358
|
+
| **App Store** | Age ratings, rate disclosure |
|
|
359
|
+
| **Google Play** | Loot box rate disclosure in listing |
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## Anti-Patterns
|
|
364
|
+
|
|
365
|
+
| ❌ Don't | ✅ Do |
|
|
366
|
+
|----------|-------|
|
|
367
|
+
| Pay-to-win mechanics | Pay-to-progress, cosmetics |
|
|
368
|
+
| Hidden probabilities | Transparent gacha rates |
|
|
369
|
+
| Infinite grind walls | Reasonable progression |
|
|
370
|
+
| Target children with IAP | Age-appropriate design |
|
|
371
|
+
| No pity system | Guaranteed outcomes |
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
> **Remember:** A good economy feels fair while being profitable.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: game-marketing
|
|
3
|
+
description: Expertise in App Store Optimization (ASO), User Acquisition (UA), and game launch strategies.
|
|
4
|
+
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 📣 Game Marketing & Growth
|
|
8
|
+
|
|
9
|
+
> **Purpose:** Maximize game visibility, downloads, and user retention.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. App Store Optimization (ASO)
|
|
14
|
+
|
|
15
|
+
### Keywords & Metadata
|
|
16
|
+
- **Title:** Brand Name + High volume keywords (e.g., "Block Blast - Puzzle Game").
|
|
17
|
+
- **Subtitle/Short Desc:** Hook in 80 chars. Value prop.
|
|
18
|
+
- **Description:** SEO-rich text. First 3 lines matter most.
|
|
19
|
+
|
|
20
|
+
### Visual Assets
|
|
21
|
+
- **Icon:** High contrast, no small text. Face or character often works best.
|
|
22
|
+
- **Screenshots:** Show gameplay, not just cinematics. Use captions.
|
|
23
|
+
- **Video Preview:** First 5 seconds are critical. Fast cuts.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 2. User Acquisition (UA)
|
|
28
|
+
|
|
29
|
+
### Channels
|
|
30
|
+
1. **Organic Social:** TikTok/Shorts (Viral potential), Reddit (Devlogs).
|
|
31
|
+
2. **Paid Ads:** Meta (Facebook/Instagram), Unity Ads, AppLovin.
|
|
32
|
+
3. **Influencers:** Streamers/YouTubers (High trust factor).
|
|
33
|
+
|
|
34
|
+
### Creative Strategy
|
|
35
|
+
- **Gameplay-first:** Show the core loop immediately.
|
|
36
|
+
- **"Fail" Ads:** "Only 1% can pass level 3" (Controversial but effective).
|
|
37
|
+
- **UGC style:** Ads that look like user reviews/TikToks.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 3. Community Building
|
|
42
|
+
|
|
43
|
+
### Platforms
|
|
44
|
+
- **Discord:** Your "Hardcore" fanbase. Use for beta testing and feedback.
|
|
45
|
+
- **Reddit:** r/gamedev, r/indiegames. Share development journey.
|
|
46
|
+
- **Twitter/X:** Networking with other devs and publishers.
|
|
47
|
+
|
|
48
|
+
### Engagement
|
|
49
|
+
- **Devlogs:** Regular updates on progress.
|
|
50
|
+
- **Playtests:** Invite community to exclusive builds.
|
|
51
|
+
- **Feedback Loop:** Show that you listen to player suggestions.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 4. Launch Strategy
|
|
56
|
+
|
|
57
|
+
### Timeline
|
|
58
|
+
1. **Pre-Registration (1-2 months out):** Build hype, collect emails/wishlists.
|
|
59
|
+
2. **Soft Launch (Geo-beta):** Release in a cheap market (e.g., Philippines, Brazil) to test retention/monetization and fix bugs.
|
|
60
|
+
3. **Global Launch:** Marketing blitz. Contact App Store editors for featuring.
|
|
61
|
+
4. **LiveOps:** Post-launch events, updates, seasonal content.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 5. Analytics & KPIs
|
|
66
|
+
|
|
67
|
+
| Metric | Meaning | Target (Good) |
|
|
68
|
+
|--------|---------|---------------|
|
|
69
|
+
| **Retention D1** | % Users returning after 1 day | > 35-40% |
|
|
70
|
+
| **Retention D7** | % Users returning after 7 days | > 15-20% |
|
|
71
|
+
| **LTV** | Lifetime Value (Avg $ per user) | > CPI |
|
|
72
|
+
| **CPI** | Cost Per Install (Ad spend) | < LTV |
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Usage Example
|
|
77
|
+
|
|
78
|
+
**User:** "My game is ready, how do I launch?"
|
|
79
|
+
|
|
80
|
+
**Agent Response:**
|
|
81
|
+
"Don't do a Global Launch immediately.
|
|
82
|
+
1. **Soft Launch:** Release in Canada or Australia first.
|
|
83
|
+
2. **Measure:** Check D1 Retention. If < 30%, fix gameplay before spending on ads.
|
|
84
|
+
3. **ASO:** A/B test your icon and screenshots during soft launch.
|
|
85
|
+
4. **Global:** Once metrics are healthy, open Pre-registration globally."
|