21 Eylül 2026 Pazartesi

CPI의 함정에서 고잔존 플레이어로: Firebase 인앱 액션 및 Google Ads (UAC 2.0)를 통한 모바일 게임 스케일업




CPI의 함정에서 고잔존 플레이어로: Firebase 인앱 액션 및 Google Ads (UAC 2.0)를 통한 모바일 게임 스케일업

모바일 타이틀을 출시하는 모든 인디 게임 개발자는 결국 설치당 비용(Cost-Per-Install, CPI) 역설에 직면하게 됩니다.

유료 유저 획득(UA) 캠페인을 시작하고 저렴한 비용으로 쏟아지는 다운로드에 환호하며 Google Play의 설치 카운터가 올라가는 것을 지켜봅니다. 하지만 48시간 후 분석 대시보드를 열어보는 순간 냉혹한 현실을 마주하게 됩니다.

1,000회 설치 ──► 500회 즉각적인 삭제 (< 2분) ──► 50회 레벨 1 완료 ──► 5명의 잔존 플레이어

획득한 유저 중 50% 이상이 첫 번째 레벨을 완료하기도 전에 게임을 삭제했습니다.

기본 CPI 입찰을 사용하는 표준 **Google Ads 앱 설치 캠페인(UAC 1.0)**을 운영 중이라면, Google의 머신러닝 알고리즘은 사용자가 지시한 바를 정확하게 수행하고 있을 뿐입니다. 바로 Google Play에서 '설치' 버튼을 누를 가장 저렴한 사용자를 찾는 것입니다. 안타깝게도 광고 네트워크에서 가장 저렴한 사용자는 리워드 광고 체리피커, 실수로 클릭한 유저, 또는 게임을 전혀 플레이할 의도가 없는 봇 계정인 경우가 많습니다.

이 글에서는 Arar Games가 MonoGame 및 C#으로 개발한 빠른 템포의 레트로 전차 액션 게임 Blocked: Pixel Panzer에서 직접 구축한 실제 엔지니어링 및 마케팅 아키텍처를 공유합니다. 기기 측 텔레메트리를 Google Analytics 4(GA4) 및 Google Ads 인앱 액션 앱 캠페인(UAC 2.0)과 연결하여 무의미한 허수 다운로드 구매를 중단하고, 충성도 높은 고잔존 플레이어를 지속적으로 확보하는 방법을 살펴보겠습니다.


1. 퍼널 진단: 라이브 데이터가 알려준 교훈

광고 네트워크에 단 1달러를 지출하기 전이라도 플레이어가 어느 지점에서 이탈하는지 정확히 파악해야 합니다.

Blocked: Pixel Panzer에서는 텔레메트리 시스템이 핵심 게임플레이 라이프사이클을 Firebase에 비동기적으로 기록합니다.

  • first_open (첫 실행)
  • screen_view (40개 이상의 맞춤 MonoGame 화면 추적)
  • level_completed (level_number, score, duration_seconds 매개변수 포함)
  • skill_upgraded (스킬 업그레이드)
  • boss_fight_result (보스 전투 결과)
  • app_remove (OS 기본 앱 삭제 신호)

GA4 경로 탐색(Path Exploration)에서 삭제된 세션을 분석했을 때 그 결과는 매우 분명했습니다.

  • 분석된 63대의 삭제 기기 중 약 30명의 유저가 레벨 1을 클리어하기도 전에 앱을 삭제했습니다.
  • 14명의 유저는 게임플레이 루프 내에서 첫 스킬을 업그레이드한 후 이탈했습니다.
  • 이탈한 유저들이 도달한 최고 진행도는 **레벨 10(첫 번째 월드 보스)**이었습니다.
[ 유저 설치 ] 
       │
       ├──► 48% 이탈: 레벨 1 완료 전 삭제 <── (CPI 낭비 구간)
       │
       ├──► 30% 참여: 스킬 업그레이드 및 레벨 2-3 도달
       │
       └──► 22% 코어 잔존: 보스(레벨 10) 및 메타 게임 도달

도출된 결론은 명확했습니다. 단순 설치 수에 비용을 지불하는 것은 이탈 구역에 예산을 그대로 내다 버리는 것과 같습니다.

지속 가능한 게임 경제를 구축하려면 광고 입찰 모델이 실제로 레벨 1을 정복하고 레벨 3으로 나아가는 유저의 행동 특성을 학습하고 최적화해야 했습니다.


2. UAC 2.0의 핵심 메커니즘: 인앱 액션 최적화

Google Ads 앱 캠페인(Universal App Campaigns)은 다음과 같은 최적화 모델을 제공합니다.

캠페인 모델 입찰 초점 알고리즘이 학습하는 대상 가장 적합한 시나리오
UAC 1.0 (설치) 설치 수 극대화 / Target CPI 새 앱을 빈번하게 설치하는 유저 프로필 초기 스토어 출시, 다운로드 볼륨 확보
UAC 2.0 (인앱 액션) Target CPA (액션당 비용) 특정 인게임 마일스톤을 달성할 가능성이 높은 유저 프로필 지속 가능한 잔존율 확보, 코어 플레이어 성장
UAC 2.5 (가치 / ROAS) Target ROAS 고액 결제 유저(고래 유저) 프로필 인앱 결제(IAP) 비중이 높은 게임

**UAC 2.0 (인앱 액션)**에서는 목표 타겟 CPA(Target CPA)를 설정합니다(예: 레벨 1 완료당 $0.20).

그러면 Google의 Smart Bidding 신경망이 Google Play, YouTube, Google 검색 및 AdMob 디스플레이 네트워크의 수백만 개 앱에 걸친 방대한 행동 신호를 분석합니다. 그리고 노출 대상 유저의 과거 행동 데이터가 게임을 다운로드하고 튜토리얼을 지나 실제로 레벨 1을 완료할 패턴과 일치할 때만 공격적으로 입찰합니다.


3. 단계별 구현: C# 텔레메트리부터 Google Ads까지

다음은 인게임 업적을 실질적인 광고 전환 목표로 전환하기 위해 사용한 기술 파이프라인입니다.

1단계: 디바이스 측 텔레메트리 연동 (MonoGame / C#)

Blocked.Shared/Managers/AnalyticsManager.cs에서는 플레이어가 전투 구역을 클리어할 때마다 점수, 피해량, 시간을 계산하고 60 FPS 렌더링 스레드를 차단하지 않고 level_completed 이벤트를 전송합니다.

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;
        
        // JNI를 통해 Android Firebase SDK로 전송 (논블로킹 SQLite 버퍼)
        _service.LogEvent(AnalyticsEvents.LevelCompleted, _payload);
    }
    catch (Exception ex)
    {
        // 텔레메트리가 게임플레이를 중단시켜서는 안 됨
        Warn(ex);
    }
}

2단계: GA4 이벤트 합성 (클라이언트 앱 업데이트 불필요)

Google Ads는 기본적으로 level_completed WHERE level_number == 1과 같은 매개변수 조건부 쿼리에 바로 입찰할 수 없습니다. 하지만 Google Analytics 4에서는 앱 스토어 업데이트 없이도 들어오는 텔레메트리 데이터를 바탕으로 실시간 맞춤 이벤트를 합성할 수 있습니다.

  1. GA4 콘솔에서 관리 ➔ 데이터 표시 ➔ 이벤트로 이동합니다.
  2. 이벤트 만들기를 클릭하고 다음과 같이 구성합니다.
    • 맞춤 이벤트 이름: level_1_completed
    • 일치 조건:
      • event_name 같음 level_completed
      • level_number 같음 1
    • 점수 및 세션 지표를 보존하기 위해 **"소스 이벤트에서 매개변수 복사"**를 선택합니다.
  3. 구성을 저장합니다.
  4. 이벤트 또는 주요 이벤트(Key events) 탭에서 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. 카테고리를 참여(Engagement) 또는 **달성한 레벨(Level achieved)**로 설정합니다.
  6. Smart Bidding이 해당 목표를 적극적으로 최적화하도록 전환 액션을 **기본(Primary)**으로 설정합니다.
[ 모바일 게임: 레벨 1 클리어 ]
                │
                │  LogEvent("level_completed", { level_number: 1 })
                ▼
[ Firebase Analytics, FirebaseAnalytics 엔진 ]
                │
                │  GA4 규칙: "level_1_completed" 합성
                ▼
[ GA4 주요 이벤트 (전환) ]
                │
                │  Google Ads 연동 파이프라인
                ▼
[ Google Ads Smart Bidding 엔진 (UAC 2.0 Target CPA) ]

4. 콜드 스타트 문제 극복: 단계별 퍼널 전략

인디 개발자가 UAC 2.0으로 전환할 때 흔히 저지르는 실수는 초반부터 게임 너무 깊은 곳의 이벤트를 목표로 잡는 것입니다.

머신러닝 데이터 볼륨 법칙

Google Ads Smart Bidding 알고리즘이 효과적으로 학습하려면 최소한의 통계적 임계값이 필요합니다.

  • 황금률: 캠페인이 '학습 기간'을 통과하고 최적의 입찰 효율을 달성하려면 하루 최소 10~20회의 타겟 인앱 전환을 발생시켜야 합니다.

초기 분석 감사 당시 우리는 레벨 3 이상을 완료한 플레이어를 모아놓은 Quality_Players_Level_3 잠재고객을 생성해 두었으며, 이 모수에는 17명이 모여 있었습니다.

만약 이 상태에서 바로 레벨 3 완료를 목표로 캠페인을 집행했다면 다음과 같은 문제가 발생합니다.

  • 매일 15회의 레벨 3 전환을 발생시키려면 막대한 광고 예산이 초기에 투입되어야 합니다.
  • 단 17명의 시드 유저만으로는 유사 잠재고객 표본이 너무 좁아 입찰가가 급등하거나 광고가 전혀 게재되지 않는("노출하기에 너무 작음") 상태에 빠집니다.

2단계 정밀 퍼널 솔루션

우리는 전부 아니면 전무 방식 대신 단계별 퍼널 전략을 채택했습니다.

flowchart TD
    A["1단계: 레벨 1 완료(level_1_completed) 스케일업"] --> B["낮은 타겟 CPA로 진성 게이머 확보"]
    B --> C["게임을 하지 않는 설치 이탈자 100% 필터링"]
    C --> D["'Quality_Players_Level_3' 모수 축적 (100명 이상)"]
    D --> E["2단계: 타겟 CPA를 레벨 3 및 스킬 업그레이드로 전환"]
  1. 1단계 (볼륨 및 정화): level_1_completed에 최적화합니다. 진성 게이머의 약 50~60%가 레벨 1을 클리어하므로, 낮은 타겟 CPA(약 $0.15 ~ $0.25)로 일일 20회 이상의 전환을 쉽게 확보할 수 있습니다. 이는 저품질 설치 팜을 즉시 걸러내는 동시에 활성 유저 풀을 구축합니다.
  2. 2단계 (고도화): 수백 명의 플레이어가 레벨 1을 클리어함에 따라 자연스럽게 일정 비율이 레벨 3, 5, 10으로 진행합니다. Quality_Players_Level_3 풀이 100~200명의 활성 유저를 넘어서면 캠페인 목표를 레벨 3이나 메타 게임 마일스톤(skill_upgraded)으로 안전하게 전환하여 유저 생애 가치(LTV)를 극대화할 수 있습니다.

5. 타겟 시장 선정 및 지리적 차익 거래 (Geographical Arbitrage)

최적화되지 않은 캠페인으로 티어 1 국가(미국, 영국, 독일)에 바로 입찰하면 액션당 $1.50 ~ $4.00에 달해 인디 개발자의 적은 예산은 불과 몇 시간 만에 고갈될 수 있습니다.

Blocked: Pixel Panzer의 초기 UAC 2.0 테스트를 위해 우리는 볼륨이 크고 비용 효율적이며 게이머 층이 두터운 4개 전략 시장을 선정했습니다.

  1. 터키 (TR): 강력한 로컬 플레이어 기반, 아케이드/액션 타이틀에 대한 높은 관심, 저렴한 획득 단가.
  2. 브라질 (BR): 세계 최대의 Android 모바일 게임 시장 중 하나. 레트로 감성과 아케이드 전투에 대한 엄청난 열정을 가진 유저층.
  3. 멕시코 (MX): 라틴 아메리카의 두 번째로 큰 게임 허브로, 높은 볼륨과 충성도 높은 플레이어 커뮤니티 보유.
  4. 폴란드 (PL): 이상적인 유럽 테스트베드. 남미보다 훨씬 높은 AdMob eCPM 수익성을 제공하면서도 서유럽에 비해 현저히 낮은 유저 획득 비용.

네이티브 현지화: 성과의 핵심 배수

해외 시장에서 광고를 집행할 때 인게임 경험이 스토어 등록정보와 일치해야만 전환이 발생합니다. Blocked: Pixel Panzer에서는 이 4개 국가 모두 기본적으로 네이티브 현지화를 지원했습니다.

  • 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와 같은 고강도 액션 게임에서 정적 스크린샷은 픽셀 아트 스타일만 보여줄 수 있지만, 탄막을 피하고 연쇄 폭발을 일으키며 적 전투기를 격추하는 긴장감 넘치는 손맛은 오직 비디오로만 전달할 수 있습니다.

실제 게임플레이 영상을 보고 설치한 유저는 이미 컨트롤과 규칙을 이해하고 있으므로, 정적 이미지만 보고 들어온 유저에 비해 level_1_completed 달성 전환율이 월등히 높습니다.


7. 인디 개발자를 위한 요약 체크리스트

다음 모바일 게임 광고 캠페인을 시작하기 전에 아래 아키텍처 체크리스트를 점검하세요.

  • 게임 내 텔레메트리 검증: level_completed 및 주요 레벨 이벤트가 깔끔한 매개변수와 함께 메인 스레드 GC 할당 없이 기록되는지 확인합니다.
  • GA4 주요 이벤트 합성: 전용 이벤트(예: level_1_completed)를 생성하고 GA4에서 주요 이벤트(Key Event)로 지정합니다.
  • Google Ads로 가져오기: Firebase와 Google Ads를 연결하고 액션을 가져온 후 기본(Primary)으로 설정합니다.
  • 입찰 초점 변경: 단순 설치 볼륨 대신 인앱 액션(Target CPA)을 선택합니다.
  • 초기 CPA 보정: 타겟 국가 티어에 맞춰 현실적인 목표 CPA($0.15 ~ $0.30)를 설정하고 최소 3~4일 동안 중단 없이 머신러닝 학습을 진행합니다.
  • 단계별 퍼널 설계: 먼저 달성하기 쉬운 초기 마일스톤(레벨 1)으로 전환 볼륨을 확보한 뒤, 점진적으로 더 깊은 진행 단계로 목표를 상향합니다.

**"다운로드를 구매한다"**는 생각에서 **"게임플레이 마일스톤을 구매한다"**는 사고방식으로 전환하면, 광고는 밑 빠진 독에 물 붓기가 아니라 예측 가능하고 재현 가능한 고잔존 성장 엔진이 됩니다.


Arar Games / Mayhemco 엔지니어링 팀(Paint Trek 개발팀) 작성. Google Play에서 Blocked: Pixel Panzer를 직접 플레이하여 박진감 넘치는 레트로 아케이드 전투를 경험해 보세요.


Hashtags & SEO Topics

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




Hiç yorum yok:

Yorum Gönder