Telemetry etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Telemetry etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

21 Eylül 2026 Pazartesi

จากกับดัก CPI สู่ผู้เล่นที่มีอัตราการคงอยู่สูง: การขยายขนาดเกมมือถือด้วยการกระทำในแอปของ Firebase และ Google Ads (UAC 2.0)

จากกับดัก CPI สู่ผู้เล่นที่มีอัตราการคงอยู่สูง: การขยายขนาดเกมมือถือด้วยการกระทำในแอปของ Firebase และ Google Ads (UAC 2.0)

นักพัฒนาเกมอินดี้ทุกคนที่เปิดตัวเกมบนมือถือ ไม่ช้าก็เร็วจะต้องเผชิญกับ ความย้อนแย้งของต้นทุนต่อการติดตั้ง (Cost-Per-Install - CPI Paradox):

คุณเปิดตัวแคมเปญการได้มาซึ่งผู้ใช้ (UA) แบบชำระเงิน เฉลิมฉลองกับยอดดาวน์โหลดราคาถูกที่หลั่งไหลเข้ามา และเฝ้าดูตัวนับการติดตั้งบน Google Play พุ่งสูงขึ้น แต่เมื่อคุณเปิดแดชบอร์ดการวิเคราะห์ในอีก 48 ชั่วโมงต่อมา ความเป็นจริงอันโหดร้ายก็ปรากฏ:

ติดตั้ง 1,000 ครั้ง ──► ถอนการติดตั้งทันที 500 ครั้ง (< 2 นาที) ──► เล่นจบด่าน 1 จำนวน 50 คน ──► ผู้เล่นที่คงอยู่ 5 คน

ผู้ใช้ที่ได้มามากกว่า 50% ลบเกมทิ้ง ก่อนที่จะเล่นจบด่านแรกเสียด้วยซ้ำ

หากคุณกำลังใช้งาน แคมเปญแอป Google Ads สำหรับการติดตั้ง (UAC 1.0) มาตรฐานด้วยการเสนอราคา CPI พื้นฐาน อัลกอริทึมแมชชีนเลิร์นนิงของ Google กำลังทำสิ่งที่คุณสั่งทุกประการ นั่นคือ ค้นหาผู้ใช้ที่ถูกที่สุดเท่าที่จะเป็นไปได้ที่จะกดปุ่ม "ติดตั้ง" บน Google Play แต่น่าเสียดายที่ผู้ใช้ที่ถูกที่สุดในเครือข่ายโฆษณามักเป็นนักล่ารางวัลโฆษณา ผู้ที่คลิกโดยไม่ได้ตั้งใจ หรือบัญชีประเภทบ็อตที่ไม่เคยคิดจะเล่นเกมของคุณจริงๆ

ในบทความนี้ เราจะแบ่งปันสถาปัตยกรรมทางวิศวกรรมและการตลาดจริงจากเกมแอ็กชันรถถังเรโทรจังหวะเร็วของเรา Blocked: Pixel Panzer (พัฒนาด้วย MonoGame และ C# โดย Arar Games) เราจะมาเจาะลึกว่าเราเชื่อมโยง telemetry ฝั่งอุปกรณ์เข้ากับ Google Analytics 4 (GA4) และแคมเปญแอป Google Ads สำหรับการกระทำในแอป (UAC 2.0) อย่างไร เพื่อหยุดการซื้อยอดติดตั้งที่ว่างเปล่า และเริ่มดึงดูดผู้เล่นที่มีความผูกพันและมีอัตราการคงอยู่สูง


1. การวินิจฉัย Funnel: สิ่งที่การวิเคราะห์สดสอนเรา

ก่อนที่จะใช้จ่ายเงินแม้แต่ดอลลาร์เดียวในเครือข่ายโฆษณา คุณต้องรู้ว่าผู้เล่นเลิกเล่นที่จุดไหน

ใน Blocked: Pixel Panzer ระบบ telemetry ของเราจะบันทึกวงจรชีวิตการเล่นเกมหลักแบบอะซิงโครนัสไปยัง Firebase:

  • first_open
  • screen_view (ติดตามหน้าจอ MonoGame แบบกำหนดเองกว่า 40+ หน้าจอ)
  • level_completed (พร้อมพารามิเตอร์ level_number, score, duration_seconds)
  • skill_upgraded
  • boss_fight_result
  • app_remove (สัญญาณการถอนการติดตั้งจากระบบปฏิบัติการ)

เมื่อเราวิเคราะห์เซสชันที่ถอนการติดตั้งใน GA4 Path Exploration ข้อมูลแสดงให้เห็นชัดเจนมาก:

  • จากอุปกรณ์ที่ถอนการติดตั้ง 63 เครื่องที่ตรวจสอบ ผู้ใช้ประมาณ 30 รายถอนการติดตั้งก่อนที่จะผ่านด่าน 1
  • ผู้ใช้ 14 รายหยุดเล่นหลังจากอัปเกรดทักษะเริ่มต้นในเกม
  • ความคืบหน้าสูงสุดในกลุ่มผู้ใช้ที่เลิกเล่นคือ ด่าน 10 (บอสโลกตัวแรก)
[ ผู้ใช้ติดตั้ง ] 
       │
       ├──► 48% Churn: ออกก่อนผ่านด่าน 1 <── (โซนสูญเปล่าของ CPI)
       │
       ├──► 30% Engagement: อัปเกรดทักษะ & ถึงด่าน 2-3
       │
       └──► 22% Core Retention: ไปถึงบอส (ด่าน 10) และ Meta-Game

ข้อสรุปชัดเจนอย่างยิ่ง: การจ่ายเงินเพื่อยอดติดตั้งดิบๆ คือการโยนงบประมาณลงในโซนการเลิกเล่นโดยตรง

ในการสร้างเศรษฐกิจของเกมที่ยั่งยืน รูปแบบการเสนอราคาโฆษณาของเราจำเป็นต้องปรับให้เหมาะสมสำหรับผู้ใช้ที่มีพฤติกรรมตรงกับผู้เล่นที่สามารถพิชิต ด่าน 1 และก้าวไปสู่ ด่าน 3 ได้อย่างแท้จริง


2. กลไกของ UAC 2.0: การเพิ่มประสิทธิภาพสำหรับการกระทำในแอป

แคมเปญแอป Google Ads (Universal App Campaigns) มีรูปแบบการเพิ่มประสิทธิภาพที่แตกต่างกัน:

รูปแบบแคมเปญ โฟกัสการเสนอราคา สิ่งที่อัลกอริทึมเรียนรู้ เหมาะสำหรับ
UAC 1.0 (ยอดติดตั้ง) เพิ่มยอดติดตั้งสูงสุด / CPI เป้าหมาย โปรไฟล์ของผู้ใช้ที่ติดตั้งแอปใหม่อยู่บ่อยครั้ง การเปิดตัวบนสโตร์ช่วงแรก, การเพิ่มปริมาณอย่างรวดเร็ว
UAC 2.0 (การกระทำในแอป) Target CPA (ต้นทุนต่อการกระทำเป้าหมาย) โปรไฟล์ของผู้ใช้ที่มีแนวโน้มจะทำเป้าหมายในเกมสำเร็จ การรักษาผู้เล่นระยะยาว, การเติบโตของ meta-game
UAC 2.5 (มูลค่า / ROAS) Target ROAS โปรไฟล์ของผู้เล่นที่มียอดใช้จ่ายสูง (whales) เกมที่มีการสร้างรายได้ผ่านการซื้อในแอปสูง

ภายใต้ UAC 2.0 (การกระทำในแอป) คุณจะตั้งค่า Target CPA (ต้นทุนต่อการกระทำเป้าหมาย)—เช่น $0.20 ต่อการเล่นจบด่าน 1 หนึ่งครั้ง

จากนั้น โครงข่ายประสาทเทียม Smart Bidding ของ Google จะวิเคราะห์สัญญาณพฤติกรรมหลายร้อยรายการบน Google Play, YouTube, Google Search และแอปนับล้านบน Google Display Network (AdMob) โดยระบบจะเสนอราคาอย่างจริงจัง ก็ต่อเมื่อ การแสดงผลโฆษณาตรงกับผู้ใช้ที่มีประวัติระบุว่าจะดาวน์โหลดเกม เล่นผ่านส่วนแนะนำ และเล่นจบด่าน 1 เท่านั้น


3. ขั้นตอนการนำไปใช้ทีละขั้นตอน: จาก Telemetry ใน C# สู่ Google Ads

นี่คือขั้นตอนทางเทคนิคฉบับสมบูรณ์ที่เราใช้ในการเปลี่ยนความสำเร็จในเกมให้เป็นเป้าหมายคอนเวอร์ชันของโฆษณาที่นำไปปฏิบัติได้จริง

ขั้นตอนที่ 1: Hook ข้อมูล Telemetry ฝั่งอุปกรณ์ (MonoGame / C#)

ใน Blocked.Shared/Managers/AnalyticsManager.cs เมื่อใดก็ตามที่ผู้เล่นเคลียร์โซนการต่อสู้ เกมจะคำนวณคะแนน ความเสียหาย และเวลา จากนั้นจึงส่งเหตุการณ์ level_completed โดยไม่กระทบต่อเธรดการเรนเดอร์ 60 FPS:

public static void LogLevelCompleted(int level, int score, int totalScore, string rank,
                                     int durationSeconds, int damageTaken,
                                     int blocksBroken, int enemiesKilled, int suppliesCollected)
{
    try
    {
        _payload.Clear();
        _payload[AnalyticsParams.LevelNumber] = level;
        _payload[AnalyticsParams.Score] = score;
        _payload[AnalyticsParams.TotalScore] = totalScore;
        _payload[AnalyticsParams.DurationSeconds] = durationSeconds;
        _payload[AnalyticsParams.IsBoss] = IsBossLevel(level) ? 1 : 0;
        
        // Dispatches to Android Firebase SDK via JNI (non-blocking SQLite buffer)
        _service.LogEvent(AnalyticsEvents.LevelCompleted, _payload);
    }
    catch (Exception ex)
    {
        // Telemetry must never crash gameplay
        Warn(ex);
    }
}

ขั้นตอนที่ 2: การสร้างเหตุการณ์แบบสังเคราะห์ใน GA4 (ไม่ต้องอัปเดตแอปบนสโตร์)

โดยค่าเริ่มต้น Google Ads ไม่สามารถเสนอราคาสำหรับคิวรีย่อยของพารามิเตอร์อย่าง level_completed WHERE level_number == 1 ได้โดยตรง อย่างไรก็ตาม Google Analytics 4 อนุญาตให้คุณ สร้างเหตุการณ์แบบกำหนดเอง (Synthesize custom events) ได้แบบเรียลไทม์จาก telemetry ที่เข้ามาโดยไม่ต้องปล่อยอัปเดตแอปบนสโตร์:

  1. ใน คอนโซล GA4 ให้ไปที่ ผู้ดูแลระบบ ➔ การแสดงผลข้อมูล ➔ เหตุการณ์
  2. คลิก สร้างเหตุการณ์ และกำหนดค่า:
    • ชื่อเหตุการณ์ที่กำหนดเอง: level_1_completed
    • เงื่อนไขการจับคู่:
      • event_name เท่ากับ level_completed
      • level_number เท่ากับ 1
    • ทำเครื่องหมายที่ "คัดลอกพารามิเตอร์จากเหตุการณ์ต้นทาง" เพื่อเก็บรักษาคะแนนและเมตริกเซสชัน
  3. บันทึกการกำหนดค่า
  4. ในแท็บ เหตุการณ์ หรือ เหตุการณ์สำคัญ ให้ค้นหา level_1_completed และเปิดการใช้งาน "ทำเครื่องหมายเป็นเหตุการณ์สำคัญ"

ในตอนนี้ เมื่อใดก็ตามที่มีผู้เล่นคนใดในโลกผ่านด่าน 1 ระบบ GA4 จะส่งเหตุการณ์คอนเวอร์ชัน level_1_completed ออกมาโดยอัตโนมัติ

  1. เปิด Google Ads (ads.google.com)
  2. ไปที่ เป้าหมาย ➔ คอนเวอร์ชัน ➔ สรุป
  3. คลิก การกระทำที่ถือเป็นคอนเวอร์ชันใหม่ ➔ นำเข้า ➔ พร็อพเพอร์ตี้ Google Analytics 4 (Firebase)
  4. เลือก level_1_completed จากรายการ
  5. ตั้งค่าหมวดหมู่เป็น การมีส่วนร่วม หรือ ระดับที่ไปถึง (Level achieved)
  6. ตั้งค่าการกระทำที่ถือเป็นคอนเวอร์ชันเป็น หลัก (Primary) เพื่อให้ Smart Bidding ปรับแต่งการเสนอราคาให้เหมาะสมกับเป้าหมายนี้อย่างจริงจัง
[ เกมมือถือ: ผ่านด่าน 1 เรียบร้อย ]
                │
                │  LogEvent("level_completed", { level_number: 1 })
                ▼
[ กลไก Firebase Analytics ]
                │
                │  กฎ GA4: สังเคราะห์เหตุการณ์ "level_1_completed"
                ▼
[ GA4 เหตุการณ์สำคัญ (คอนเวอร์ชัน) ]
                │
                │  การเชื่อมโยงระบบเข้ากับ Google Ads
                ▼
[ กลไก Smart Bidding ของ Google Ads (UAC 2.0 Target CPA) ]

4. การเอาชนะปัญหา Cold-Start: กลยุทธ์ Funnel แบบแบ่งระยะ

ข้อผิดพลาดทั่วไปที่นักพัฒนาอินดี้มักทำเมื่อเปลี่ยนมาใช้ UAC 2.0 คือการตั้งเป้าหมายลึกเกินไปในเกมตั้งแต่ช่วงเริ่มต้น

กฎปริมาณข้อมูลของแมชชีนเลิร์นนิง

อัลกอริทึม Smart Bidding ของ Google Ads ต้องการเกณฑ์ทางสถิติขั้นต่ำเพื่อเรียนรู้ได้อย่างมีประสิทธิภาพ:

  • กฎทอง: แคมเปญควรสร้างคอนเวอร์ชันการกระทำในแอปเป้าหมายได้อย่างน้อย 10 ถึง 20 ครั้งต่อวัน เพื่อออกจาก "ช่วงการเรียนรู้ (Learning Phase)" และบรรลุประสิทธิภาพการเสนอราคาสูงสุด

ในการตรวจสอบการวิเคราะห์ช่วงแรก เราได้สร้างกลุ่มเป้าหมายชื่อ Quality_Players_Level_3 (ผู้เล่นที่ผ่านด่าน 3 ขึ้นไป) ซึ่งสะสมผู้เล่นได้ 17 คน

หากเราเปิดตัวแคมเปญที่กำหนดเป้าหมายไปที่ด่าน 3 ทันที:

  • การสร้างคอนเวอร์ชันด่าน 3 ให้ได้ 15 ครั้งต่อวันจะต้องใช้เงินโฆษณาเริ่มต้นมหาศาล
  • ด้วยกลุ่มตัวอย่างเริ่มต้นเพียง 17 คน ขนาดกลุ่ม Lookalike ของอัลกอริทึมจะแคบเกินไป เสี่ยงต่อการเกิดการเสนอราคาที่ผันผวน หรือไม่มีการแสดงโฆษณาเลย ("เล็กเกินกว่าจะแสดง")

โซลูชันสองระยะแบบเจาะจง

แทนที่จะใช้แนวทางแบบได้ทั้งหมดหรือไม่ได้เลย เราใช้ Funnel แบบแบ่งระยะ:

flowchart TD
    A["ระยะที่ 1: ขยายสเกล ผ่านด่าน 1"] --> B["ได้ผู้เล่นที่มีส่วนร่วมด้วย Target CPA ที่ต่ำ"]
    B --> C["กรองผู้ใช้ที่ถอนการติดตั้งทันทีโดยไม่เล่นออก 100%"]
    C --> D["เติมกลุ่มเป้าหมาย 'Quality_Players_Level_3' (100+ คน)"]
    D --> E["ระยะที่ 2: ย้าย Target CPA ไปยัง ด่าน 3 / อัปเกรดทักษะ"]
  1. ระยะที่ 1 (ปริมาณและความสะอาด): ปรับให้เหมาะสมสำหรับ level_1_completed เนื่องจากประมาณ 50-60% ของผู้เล่นตัวจริงสามารถเอาชนะด่าน 1 ได้ แคมเปญจึงได้รับคอนเวอร์ชันมากกว่า 20 ครั้งต่อวันได้อย่างง่ายดายด้วย Target CPA ที่ต่ำ (~$0.15 - $0.25) สิ่งนี้จะช่วยขจัดฟาร์มดาวน์โหลดคุณภาพต่ำออกไปทันที พร้อมทั้งสร้างฐานผู้ใช้ที่กระตือรือร้น
  2. ระยะที่ 2 (การปรับแต่ง): เมื่อมีผู้เล่นหลายร้อยคนผ่านด่าน 1 สัดส่วนที่สม่ำเสมอจะก้าวหน้าไปสู่ด่าน 3, 5 และ 10 ตามธรรมชาติ เมื่อกลุ่ม Quality_Players_Level_3 มีผู้ใช้เกิน 100-200 คนขึ้นไป เป้าหมายของแคมเปญจึงสามารถเปลี่ยนไปยังด่าน 3 หรือเหตุการณ์สำคัญใน meta-game (skill_upgraded) ได้อย่างปลอดภัยเพื่อมูลค่าตลอดช่วงชีวิต (LTV) สูงสุด

5. การเลือกตลาดและส่วนต่างทางภูมิศาสตร์

การเสนอราคาในตลาด Tier-1 (สหรัฐอเมริกา, สหราชอาณาจักร, เยอรมนี) ด้วยแคมเปญที่ยังไม่ได้ปรับเทียบ สามารถเผางบประมาณอินดี้ขนาดเล็กจนหมดภายในเวลาไม่กี่ชั่วโมง ($1.50 - $4.00 ต่อการกระทำ)

สำหรับการทดสอบ UAC 2.0 เริ่มต้นของ Blocked: Pixel Panzer เราได้เลือกกลุ่มยุทธศาสตร์ของ 4 ตลาดที่มีปริมาณผู้ใช้สูง คุ้มค่าใช้จ่าย และมีความหลงใหลในเกมอย่างลึกซึ้ง:

  1. ตุรกี (TR): ฐานผู้เล่นท้องถิ่นที่แข็งแกร่ง มีการมีส่วนร่วมสูงกับเกมแนวอาร์เคด/แอ็กชัน และมีต้นทุนการได้มาซึ่งผู้ใช้ที่ประหยัด
  2. บราซิล (BR): หนึ่งในตลาดเกม Android ที่ใหญ่ที่สุดในโลก ผู้เล่นมือถือชาวบราซิลมีความหลงใหลในสไตล์เรโทรและการต่อสู้แบบอาร์เคดเป็นอย่างมาก
  3. เม็กซิโก (MX): ศูนย์กลางเกมที่ใหญ่เป็นอันดับสองในละตินอเมริกา มอบปริมาณผู้ใช้อย่างหนาแน่นและชุมชนผู้เล่นที่เหนียวแน่น
  4. โปแลนด์ (PL): ตลาดทดสอบในยุโรปที่สมบูรณ์แบบ—การสร้างรายได้ผ่าน eCPM ของ AdMob สูงกว่าอเมริกาใต้อย่างมาก แต่ต้นทุนการได้มาซึ่งผู้ใช้กลับต่ำกว่ายุโรปตะวันตกอย่างเห็นได้ชัด

การแปลภาษาท้องถิ่นแท้: ตัวคูณลับ

การลงโฆษณาในตลาดต่างประเทศจะเกิดคอนเวอร์ชันก็ต่อเมื่อประสบการณ์ในเกมตรงกับหน้ารายการสินค้าในสโตร์ ใน Blocked: Pixel Panzer ทั้งสี่ตลาดได้รับการสนับสนุนด้วยการแปลภาษาท้องถิ่นในตัว:

  • tr.json (ภาษาตุรกี)
  • pt-BR.json (ภาษาโปรตุเกสบราซิล)
  • es-419.json (ภาษาสเปนละตินอเมริกา)
  • pl.json (ภาษาโปแลนด์)

เมื่อผู้เล่นจากเซาเปาโลหรือวอร์ซอแตะโฆษณา ติดตั้งเกม และได้ยินภาษาแม่ของตนเองทันทีที่เปิดเกม ความอินจะเกิดขึ้นในทันที—ช่วยเพิ่มอัตราการเล่นจบด่าน 1 ได้อย่างมหาศาล

เคล็ดลับการกำหนดเป้าหมายตำแหน่ง: ในการตั้งค่าตำแหน่งของ Google Ads ให้สลับจากค่าเริ่มต้น "การแสดงตนหรือความสนใจ" เป็น "การแสดงตน: ผู้ที่อยู่ในหรือเคยอยู่ในตำแหน่งที่ตั้งที่คุณรวมไว้อย่างสม่ำเสมอ" เสมอ สิ่งนี้ทำให้มั่นใจว่างบประมาณของคุณจะถูกใช้เฉพาะกับผู้ใช้ที่อาศัยอยู่ในประเทศเป้าหมายของคุณจริงๆ โดยตัดทราฟฟิกจาก VPN ต่างประเทศหรือข้อความค้นหาที่ไม่เกี่ยวข้องออกไป


6. ครีเอทีฟแอสเซท: เหตุใดวิดีโอจึงช่วยเพิ่มผลลัพธ์ ไม่ใช่การแย่งชิงความสนใจ

เมื่อจัดเตรียมกลุ่มเนื้อหาโฆษณาใน Google Ads นักพัฒนามักถามว่า: “ถ้าฉันเพิ่มวิดีโอเกมเพลย์ มันจะไปบดบังภาพหน้าจอที่ออกแบบไว้อย่างประณีตหรือไม่?”

คำตอบคือ ไม่เลยอย่างสิ้นเชิง Google Ads ดำเนินการผ่านพื้นที่โฆษณาหลายช่องทางที่แตกต่างกัน:

  • บรรทัดแรกและภาพหน้าจอ: ครองพื้นที่การค้นหาใน Google Play, แถบแอปแนะนำ และเครือข่ายแบนเนอร์แบบดิสเพลย์
  • วิดีโอ: ปลดล็อกคลังโฆษณาขนาดใหญ่ของ YouTube Shorts, โฆษณาวิดีโอแบบสตรีม และตำแหน่งวิดีโอที่มีการให้รางวัล ในเกมมือถือยอดนิยมอื่นๆ

ในเกมที่มีความเข้มข้นสูงอย่าง Blocked: Pixel Panzer ภาพหน้าจอนิ่งทำได้เพียงแสดงภาพพิกเซล แต่มีเพียงวิดีโอเท่านั้นที่สามารถถ่ายทอดความตื่นเต้นของการหลบห่ากระสุน bullet-hell การจุดชนวนระเบิดต่อเนื่องเป็นลูกโซ่ และการทำลายเครื่องบินขับไล่ของศัตรู

ผู้เล่นที่ติดตั้งเกมหลังจากดูวิดีโอเกมเพลย์จริงจะเข้าใจการควบคุมและระบบเกมอยู่แล้ว ส่งผลให้อัตราคอนเวอร์ชันของพวกเขาต่อ level_1_completed สูงกว่าผู้ใช้ที่ได้มาจากภาพนิ่งเพียงอย่างเดียวเป็นอย่างมาก


7. เช็กลิสต์สรุปสำหรับนักพัฒนาอินดี้

ก่อนที่จะเปิดตัวแคมเปญโฆษณาเกมมือถือครั้งต่อไปของคุณ ให้ตรวจสอบรายการความพร้อมทางสถาปัตยกรรมนี้:

  • ตรวจสอบ Telemetry ในเกม: ตรวจสอบให้แน่ใจว่า level_completed และเป้าหมายของด่านถูกบันทึกด้วยพารามิเตอร์ที่สะอาดและไม่มีการจัดสรรหน่วยความจำ GC บนเธรดหลัก
  • สร้างเหตุการณ์สำคัญใน GA4: สร้างเหตุการณ์เฉพาะ (เช่น level_1_completed) และทำเครื่องหมายเป็นเหตุการณ์สำคัญ (Key Events) ใน GA4
  • นำเข้าสู่ Google Ads: เชื่อมโยง Firebase และ Google Ads นำเข้าการกระทำ และทำเครื่องหมายเป็นเป้าหมายหลัก (Primary)
  • โฟกัสการเสนอราคา: เลือก การกระทำในแอป (Target CPA) แทนการเน้นเพียงยอดติดตั้งดิบๆ
  • ปรับเทียบ CPA เริ่มต้น: ตั้งค่า Target CPA ที่เป็นไปได้จริง ($0.15 - $0.30 ขึ้นอยู่กับระดับชั้นของประเทศเป้าหมาย) และให้เวลาแมชชีนเลิร์นนิงทำงานอย่างต่อเนื่องอย่างน้อย 3-4 วัน
  • จัดระยะ Funnel ของคุณ: เริ่มต้นด้วยเป้าหมายช่วงแรกที่ทำได้ง่าย (ด่าน 1) เพื่อสร้างความเร็วในการเปลี่ยนเป็นคอนเวอร์ชัน จากนั้นจึงขยับไปสู่เป้าหมายที่ลึกขึ้น

การเปลี่ยนแนวคิดจาก การซื้อยอดดาวน์โหลด มาเป็น การซื้อความสำเร็จในการเล่นเกม จะช่วยเปลี่ยนการโฆษณาจากการเป็นค่าใช้จ่ายที่คาดเดาไม่ได้ ให้กลายมาเป็นกลไกขับเคลื่อนการเติบโตของผู้เล่นที่มีการรักษาไว้อย่างมั่นคงและทำซ้ำได้


เขียนโดยทีมวิศวกรของ Arar Games / Mayhemco (ผู้สร้าง Paint Trek) สำรวจ Blocked: Pixel Panzer บน Google Play เพื่อสัมผัสประสบการณ์การต่อสู้สไตล์เรโทรอาร์เคดสุดเร้าใจด้วยตัวคุณเอง


Hashtags & SEO Topics

#BlockedPixelPanzer #ArarGames #Mayhemco #PaintTrek #MonoGame #GoogleAds #FirebaseAnalytics #GA4 #MobileGameDev #UserAcquisition #GameMarketing #SmartBidding #TargetCPA #InAppActions #IndieGameDev #GameAnalytics #AndroidDev

From CPI Traps to High-Retention Players: Scaling Mobile Games with Firebase In-App Actions and Google Ads (UAC 2.0)

From CPI Traps to High-Retention Players: Scaling Mobile Games with Firebase In-App Actions and Google Ads (UAC 2.0)

Every indie game developer who launches a mobile title eventually faces the Cost-Per-Install (CPI) Paradox:

You launch a paid user acquisition campaign, celebrate a flood of cheap downloads, and watch your Google Play install counter tick upward. But when you open your analytics dashboard 48 hours later, the cold reality sets in:

1,000 Installs ──► 500 Immediate Uninstalls (< 2 mins) ──► 50 Level 1 Completions ──► 5 Retained Players

Over 50% of acquired users deleted the game before finishing the very first level.

If you are running a standard Google Ads App Campaign for Installs (UAC 1.0) with basic CPI bidding, Google’s machine learning algorithm is doing exactly what you instructed it to do: find the cheapest possible users who will tap "Install" on Google Play. Unfortunately, the cheapest users on the ad network are often reward-ad hunters, accidental clickers, or bot-adjacent accounts who never intend to engage with your game.

In this article, we share our real-world engineering and marketing architecture from our fast-paced retro tank action game, Blocked: Pixel Panzer (developed with MonoGame and C# by Arar Games). We will explore how we bridged device-side telemetry with Google Analytics 4 (GA4) and Google Ads App Campaigns for In-App Actions (UAC 2.0) to stop buying empty installs and start acquiring dedicated, high-retention players.


1. Diagnosing the Funnel: What Live Analytics Taught Us

Before spending a single dollar on ad networks, you must know where players drop off.

In Blocked: Pixel Panzer, our telemetry logs core gameplay lifecycles asynchronously to Firebase:

  • first_open
  • screen_view (tracking 40+ custom MonoGame screens)
  • level_completed (with parameters level_number, score, duration_seconds)
  • skill_upgraded
  • boss_fight_result
  • app_remove (native OS uninstall signal)

When we analyzed uninstalled sessions in GA4 Path Exploration, the data was stark:

  • Out of 63 uninstalled devices examined, ~30 users uninstalled before ever completing Level 1.
  • 14 users churned after upgrading their initial skills inside the gameplay loop.
  • The maximum progress reached among churned users was Level 10 (the first World Boss).
[ User Installs ] 
       │
       ├──► 48% Churn: Drop before completing Level 1  <── (The CPI Waste Zone)
       │
       ├──► 30% Engagement: Upgrade Skills & Reach Level 2-3
       │
       └──► 22% Core Retention: Reach Boss (Level 10) and Meta-Game

The takeaway was undeniable: Paying for raw installs is throwing money into the churn zone.

To build a sustainable game economy, our advertising bidding model needed to optimize for users whose behavioral signature matched players who actually conquer Level 1 and progress toward Level 3.


2. The Mechanics of UAC 2.0: Optimizing for In-App Actions

Google Ads App Campaigns (Universal App Campaigns) come in distinct optimization flavors:

Campaign Model Bidding Focus What the Algorithm Learns Best For
UAC 1.0 (Installs) Maximize Installs / Target CPI Profiles of users who frequently install new apps Early store launch, volume bursts
UAC 2.0 (In-App Actions) Target CPA (Cost-per-Action) Profiles of users likely to complete a specific in-game milestone Sustainable retention, meta-game growth
UAC 2.5 (Value / ROAS) Target ROAS Profiles of high spenders (whales) Games with heavy in-app purchase monetization

Under UAC 2.0 (In-App Actions), you set a Target Cost Per Action (tCPA)—for example, $0.20 per Level 1 completion.

Google’s Smart Bidding neural network then analyzes hundreds of behavioral signals across Google Play, YouTube, Google Search, and millions of apps on the Google Display Network (AdMob). It bids aggressively only when an ad impression matches a user whose historical habits indicate they will download the game, play past the tutorial, and finish Level 1.


3. Step-by-Step Implementation: From C# Telemetry to Google Ads

Here is the exact technical pipeline we used to turn in-game achievements into actionable advertising conversion goals.

Step 1: Device-Side Telemetry Hook (MonoGame / C#)

In Blocked.Shared/Managers/AnalyticsManager.cs, whenever the player clears a combat zone, the game calculates score, damage, and time, then dispatches level_completed without blocking the 60 FPS render thread:

public static void LogLevelCompleted(int level, int score, int totalScore, string rank,
                                     int durationSeconds, int damageTaken,
                                     int blocksBroken, int enemiesKilled, int suppliesCollected)
{
    try
    {
        _payload.Clear();
        _payload[AnalyticsParams.LevelNumber] = level;
        _payload[AnalyticsParams.Score] = score;
        _payload[AnalyticsParams.TotalScore] = totalScore;
        _payload[AnalyticsParams.DurationSeconds] = durationSeconds;
        _payload[AnalyticsParams.IsBoss] = IsBossLevel(level) ? 1 : 0;
        
        // Dispatches to Android Firebase SDK via JNI (non-blocking SQLite buffer)
        _service.LogEvent(AnalyticsEvents.LevelCompleted, _payload);
    }
    catch (Exception ex)
    {
        // Telemetry must never crash gameplay
        Warn(ex);
    }
}

Step 2: GA4 Event Synthesis (No Client App Update Required)

Google Ads cannot directly bid on parameter sub-queries like level_completed WHERE level_number == 1 out of the box. However, Google Analytics 4 allows you to synthesize custom events in real time from incoming telemetry without pushing an app store update:

  1. In the GA4 Console, navigate to Admin ➔ Data display ➔ Events.
  2. Click Create event and configure:
    • Custom event name: level_1_completed
    • Matching conditions:
      • event_name equals level_completed
      • level_number equals 1
    • Check "Copy parameters from the source event" to preserve scores and session metrics.
  3. Save the configuration.
  4. On the Events or Key events tab, locate level_1_completed and toggle "Mark as key event" to active.

Now, whenever any player on Earth beats Level 1, GA4 automatically emits a dedicated level_1_completed conversion event.

Step 3: Importing Conversion Actions into Google Ads

  1. Open Google Ads (ads.google.com).
  2. Navigate to Goals ➔ Conversions ➔ Summary.
  3. Click New conversion action ➔ Import ➔ Google Analytics 4 properties (Firebase).
  4. Select level_1_completed from the list.
  5. Set the category to Engagement or Level achieved.
  6. Set the conversion action to Primary so Smart Bidding actively optimizes toward it.
[ Mobile Game: Level 1 Cleared ]
                │
                │  LogEvent("level_completed", { level_number: 1 })
                ▼
[ Firebase Analytics Engine ]
                │
                │  GA4 Rule: Synthesize "level_1_completed"
                ▼
[ GA4 Key Event (Conversion) ]
                │
                │  Google Ads Linked Integration
                ▼
[ Google Ads Smart Bidding Engine (UAC 2.0 Target CPA) ]

4. Overcoming the Cold-Start Problem: The Funnel Strategy

A common mistake indie developers make when transitioning to UAC 2.0 is aiming too deep into the game too early.

The Machine Learning Volume Rule

Google Ads Smart Bidding algorithms require a minimum statistical threshold to train effectively:

  • Golden Rule: A campaign should generate at least 10 to 20 target in-app conversions per day to exit the "Learning Phase" and achieve optimal bidding efficiency.

In our early analytics audit, we had created an audience named Quality_Players_Level_3 (players who cleared Level 3 or higher), which had accumulated 17 players.

If we had launched a campaign targeting Level 3 immediately:

  • Generating 15 Level 3 conversions daily would require massive upfront ad spend.
  • With only 17 historical seeds, the algorithm’s lookalike sample size was too narrow, risking volatile bidding spikes or zero delivery ("Too small to serve").

The Two-Stage Scalpel Solution

Instead of an all-or-nothing approach, we adopted a phased funnel:

flowchart TD
    A["Phase 1: Scale Level 1 Completed"] --> B["Acquires engaged players at low tCPA"]
    B --> C["Filters 100% of non-playing install churners"]
    C --> D["Fills 'Quality_Players_Level_3' Audience (100+ players)"]
    D --> E["Phase 2: Shift Target CPA to Level 3 / Skill Upgrades"]
  1. Stage 1 (Volume & Hygiene): Optimize for level_1_completed. Because 50-60% of genuine gamers can beat Level 1, the campaign easily secures 20+ conversions daily at a low target CPA ($0.15 - $0.25). This instantly purges low-quality install farms while building an active user base.
  2. Stage 2 (Refinement): As hundreds of players complete Level 1, a steady percentage naturally progresses to Level 3, 5, and 10. Once the Quality_Players_Level_3 pool exceeds 100-200 active users, the campaign target can safely transition to Level 3 or meta-game milestones (skill_upgraded) for maximum lifetime value.

5. Market Selection & Geographical Arbitrage

Bidding on Tier-1 markets (USA, UK, Germany) with an uncalibrated campaign can exhaust small indie budgets within hours ($1.50 - $4.00 per action).

For our initial UAC 2.0 test run of Blocked: Pixel Panzer, we selected a strategic cluster of four high-volume, cost-efficient, and gaming-rich markets:

  1. Turkey (TR): Strong local player base, high engagement with arcade/action titles, and low acquisition costs.
  2. Brazil (BR): One of the largest Android gaming markets on Earth. Brazilian mobile players have immense passion for retro aesthetics and arcade combat.
  3. Mexico (MX): The second-largest Latin American gaming hub, offering dense volume and loyal player communities.
  4. Poland (PL): An ideal European testbed—significantly higher AdMob eCPM monetization than South America, yet substantially lower user acquisition costs than Western Europe.

Native Localization: The Secret Multiplier

Running ads in foreign markets only converts if the in-game experience matches the store listing. In Blocked: Pixel Panzer, all four markets are supported with native localization out of the box:

  • tr.json (Turkish)
  • pt-BR.json (Brazilian Portuguese)
  • es-419.json (Latin American Spanish)
  • pl.json (Polish)

When a player from São Paulo or Warsaw taps an ad, installs the game, and hears their native tongue immediately upon launch, immersion is instantaneous—drastically boosting Level 1 completion rates.

Location Targeting Pro-Tip: In Google Ads Location settings, always switch the default "Presence or interest" to "Presence: People in or regularly in your included locations". This ensures your budget is exclusively spent on users physically residing in your target countries, eliminating traffic from foreign VPNs or unrelated search queries.


6. Creative Assets: Why Video Multiplies, Never Cannibalizes

When assembling Google Ads creative groups, developers often ask: “If I add gameplay video, will it overshadow my polished screenshots?”

The answer is an emphatic no. Google Ads operates across distinct multi-channel inventories:

  • Headlines & Screenshots: Dominate Google Play search queries, recommended apps trays, and display banner networks.
  • Video: Unlocks the massive inventory of YouTube Shorts, in-stream pre-rolls, and rewarded video placements across other popular mobile games.

In high-intensity games like Blocked: Pixel Panzer, static screenshots can show pixel art, but only video can demonstrate the feel of dodging bullet-hell swarms, detonating explosive chain reactions, and destroying enemy fighter jets.

Players who install after watching genuine gameplay video already understand the controls and mechanics. Consequently, their conversion rate on level_1_completed is dramatically higher than users acquired through static graphics alone.


7. Summary Checklist for Indie Developers

Before launching your next mobile game ad campaign, run through this architectural checklist:

  • Verify In-Game Telemetry: Ensure level_completed and level milestones are logged with clean parameters and zero main-thread GC allocations.
  • Synthesize GA4 Key Events: Create dedicated events (e.g. level_1_completed) and mark them as Key Events in GA4.
  • Import to Google Ads: Link Firebase and Google Ads, import the action, and mark it as Primary.
  • Bidding Focus: Choose In-App Actions (Target CPA) rather than raw install volume.
  • Calibrate Starting CPA: Set realistic target CPAs ($0.15 - $0.30 depending on target country tiers) and allow at least 3-4 days of uninterrupted machine learning.
  • Stage Your Funnel: Start with an early, achievable milestone (Level 1) to build conversion velocity, then graduate to deeper progression targets.

By shifting your mindset from buying downloads to buying gameplay milestones, you turn advertising from an unpredictable expense into a repeatable, high-retention growth engine.


Written by the engineering team at Arar Games / Mayhemco. Explore Blocked: Pixel Panzer on Google Play to experience our fast-paced retro arcade combat firsthand.


Hashtags & SEO Topics

#BlockedPixelPanzer #ArarGames #Mayhemco #PaintTrek #MonoGame #GoogleAds #FirebaseAnalytics #GA4 #MobileGameDev #UserAcquisition #GameMarketing #SmartBidding #TargetCPA #InAppActions #IndieGameDev #GameAnalytics #AndroidDev