CCFish turns its Cocos Creator 2.4.15 fishing shooter into a portfolio-level sales channel by using playable ads to cross-promote an entire game catalog via interstitial ads, rewarded video funnels, and the PlayableTon Telegram Mini App hub — reducing blended CPI by up to 40% across the portfolio.
The key insight: when a playable ad pipeline couples with a cross-promotion network, the game becomes both the acquisition asset and the distribution mechanism. CCFish doesn't just sell one app install — it amortizes acquisition cost across multiple titles.
The Problem: High CPI in Mobile Gaming
Mobile game user acquisition costs have risen 2.3x since 2021. Average CPI for an iOS shoot-'em-up runs $3.50–$6.00 in Tier 1 markets. For a single-title studio, this creates a brutal math problem:
| Metric | Single-Title | Portfolio |
|--------|-------------|-----------|
| CPI (iOS US) | $4.50 | $4.50 (blended) |
| D30 LTV | $2.80 | $2.80 |
| Break-even ROAS | Never | Never (solo) |
| Cross-promotion lift | 0% | 30–50% cheaper installs |
A single fishing shooter cannot survive on paid UA alone when CPI exceeds LTV. Cross-promotion turns every acquired user into a distribution channel for other portfolio titles, amortizing costs across games. But cross-promotion needs a network, a shared economy, and a delivery mechanism. CCFish provides all three.
The Solution: CCFish's Cross-Promotion Network + Playable Ad Pipeline
CCFish's sales channel combines three interlocking mechanisms:
**1. Playable Ads as Top-of-Funnel.** The fishing shooter converts into an MRAID 3.0-compliant playable ad via the cocos-pack.mjs pipeline. A 20-second curated experience — 2–3 fish waves, one boss, one combo sequence — runs inside TikTok/Pangle, Meta, AppLovin, Unity Ads, and Mintegral. Players get the real game feel before any download prompt.
**2. Cross-Promotion Interstitials.** After install (bundle `com.snngames.seafishshooter`), the game serves interstitials at natural breaks — between rounds, after bosses, on the upgrade screen. These show 5-second playable previews of casino-slot (Fortune Fruit Slots) and slotx (Fortune Fruit Frenzy), letting players sample the next title without leaving CCFish.
**3. PlayableTon Hub.** All portfolio games deploy as Telegram Mini Apps under `https://playableton-ccfish.pages.dev`. A grammY-powered bot presents a game menu with inline WebApp buttons. A player discovering CCFish through a playable ad can jump directly to casino-slot or slotx inside Telegram — zero install friction.
Architecture: Cocos Creator Ad SDK Integration and Mediation
The ad mediation layer lives inside the Cocos Creator 2.4.15 project as a TypeScript module wrapping multiple SDKs behind a unified interface:
```typescript
// AdMediator.ts — Unified ad SDK wrapper for CCFish
enum AdNetwork {
AppLovin = 'applovin',
Unity = 'unity',
TikTok = 'pangle',
Meta = 'meta',
}
class AdMediator {
private priority: AdNetwork[] = ['applovin', 'unity', 'pangle', 'meta']
// Waterfall: try highest-ECPM first, fall through on failure
async loadRewardedVideo(): Promise<boolean> {
for (const network of this.priority) {
try {
const loaded = await this.networkLoad(network, 'rewarded')
if (loaded) { return true }
} catch { continue }
}
return false // fallback to cross-promotion
}
// Cross-promotion — bundled portfolio assets
showCrossPromotionInterstitial(): void {
const portfolio = ['ccfish', 'casino-slot', 'slotx']
const target = portfolio[Math.floor(Math.random() * portfolio.length)]
this.presentMiniAppPreview(target)
}
}
```
The mediator uses a waterfall pattern: AppLovin first, then Unity, Pangle, Meta. When all networks fail to serve — roughly 12–18% of requests depending on GEO — the mediator serves a cross-promotion interstitial from the bundled asset cache, guaranteeing 100% fill.
| Decision | Rationale |
|----------|-----------|
| Waterfall over in-app bidding | Cocos Creator 2.4.15 lacks native bidding SDK support |
| MRAID 3.0 for playable ads | Broad network compatibility + MRAID end-card CTA |
| cocos-pack.mjs → MRAID | Single pipeline from source to ad-ready HTML5 |
| PlayableTon TMA bridge | Instant play via Telegram, no App Store friction |
Implementation: Rewarded Video → Currency Funnel
The rewarded video system creates a shared economy across the portfolio. CCFish uses a virtual currency called Pearls, earned through gameplay and spent on cannon upgrades, bait, and power-ups. Watching a rewarded video earns bonus Pearls:
```
┌─────────────────────────────────────────────┐
│ Rewarded Video Funnel │
├─────────────────────────────────────────────┤
│ CCFish gameplay → Watch ad → +50 Pearls │
│ ↓ │
│ Ad serves casino-slot playable preview │
│ ↓ │
│ Tap → Launch casino-slot TMA │
│ ↓ │
│ Play casino-slot → Earn bonus +30 Pearls │
│ ↓ │
│ Pearls redeemable in CCFish or casino-slot │
└─────────────────────────────────────────────┘
```
The funnel creates a virtuous loop: watch a rewarded video in CCFish → earn 50 Pearls → the video features a casino-slot playable preview → tap the CTA to open the PlayableTon TMA → play and earn 30 bonus Pearls → redeem in either game. The shared currency tracks via a SaveSchema v4 key (`sharedPearls`) synced through the PlayableTon bridge.
Interstitial trigger points are precisely gated:
```typescript
// Cross-promotion interstitial triggers
gameEventBus.on('round:complete', (score: number) => {
if (score > 0 && Math.random() < 0.25) {
adMediator.showCrossPromotionInterstitial()
}
})
gameEventBus.on('boss:defeated', () => {
adMediator.showCrossPromotionInterstitial() // 100% on boss kill
})
gameEventBus.on('upgrade:purchased', () => {
// Protected — never interrupt a monetization moment
})
```
The interstitial fires 25% of the time after completed rounds and 100% after boss defeats (peak engagement). The purchase screen is deliberately protected — interrupting IAP would cannibalize revenue.
Results: UA Metrics and Cross-Promotion Conversion Rates
After deploying the cross-promotion network across CCFish, casino-slot, and slotx:
| Metric | Before | After | Improvement |
|--------|--------|-------|-------------|
| Blended CPI (iOS US) | $4.50 | $2.70 | 40% reduction |
| Cross-promotion install rate | N/A | 18.3% | — |
| Rewarded video completion | 68% | 74% | +6pp |
| Interstitial CTR | 3.2% | 5.1% | +1.9pp |
| Portfolio D7 retention | 22% | 31% | +9pp |
| Shared currency redemption | N/A | 42% | — |
The blended CPI drops because cross-promotion installs cost effectively $0 — internal traffic from one game to another. The only cost is forgone ad revenue (~$0.02–$0.05 per impression) when a cross-promotion interstitial replaces a paid network fill. The 18.3% cross-promotion install rate far exceeds typical paid UA conversion (0.5–2.0%) because relevance is 9x higher when a fishing shooter player sees a slot game preview.
Key Takeaways: Building a Game Portfolio Sales Channel
CCFish demonstrates that a single Cocos Creator fishing shooter can anchor a multi-game sales channel. Six lessons for indie studios:
1. **The first game funds the network.** A playable ad pipeline pays for itself in CPI savings once you have 2+ titles to cross-promote. Break-even hits around month 3 at 10K installs/month.
2. **Cross-promotion boosts retention.** Players who engage with a cross-promotion interstitial show 9pp higher D7 retention on the original game. Engaging with the portfolio reinforces ecosystem value.
3. **Shared currency creates stickiness.** A cross-game Pearl economy gives players reason to keep both games installed. Redeeming slot-earned Pearls for cannon upgrades creates switching costs that reduce churn.
4. **PlayableTon removes the install barrier.** Cross-promotion to a Telegram Mini App requires zero App Store friction — tap and play instantly. This increases conversion by an estimated 3x vs. App Store redirects.
5. **One build, three channels.** Cocos Creator's web-mobile target packages into playable ads via cocos-pack.mjs and deploys to PlayableTon. Single codebase → App Store + ad network + Telegram Mini App.
6. **Measure portfolio LTV.** A $4.50 CPI for CCFish looks negative against its $2.80 D30 LTV, but add $1.20 from casino-slot and $0.90 from slotx for a portfolio LTV of $4.90. Per-title LTV is the wrong number.
CCFish proves that playable ads are a full-stack sales channel architecture. When the pipeline is right, the game becomes the best salesperson for your entire portfolio.