사용자 요청("플레이스토어에만 스파이더 20종 넘고, 일반까지 50종 가까이 될 것 — 할 수 있는 모든 게임 다 조사")에 따라 3차에 걸쳐 조사 범위를 확장했다: (1) 스파이더 솔리테어 Android/iOS 19개, (2) 스파이더 솔리테어 Play Store 심화 8개 추가, (3) 일반/클론다이크/트라이피크스/번들형 Play Store 14개. 총 41개 항목 중 중복 3개(MS Solitaire Collection 등 중복 조사) 제외 실질 고유 앱 38개.
| # | 앱 | 평점 | 광고제거/구독 | 핵심 특징 |
|---|---|---|---|---|
| A1 | MobilityWare Spider | 4.7~4.8 | $4.99 일회 또는 구독 월$1.99 | 공식 확인된 일회성 가격, 닫기버튼 불만 |
| A2 | MobilityWare(iOS) | 4.8 | 구독 월$1.99~연$9.99 | 부적절 광고소재 불만 |
| A3 | MobilityWare 유료판 | 4.8 | $4.99 선구매(무광고) | 이원화 전략(무료+구독 / 유료+무광고) |
| A4 | Spider Go | 4.7 | 제거옵션 없음 | 형평성 불만(자매작엔 있는데 이앱만 없음) |
| A5 | Brainium(AOS) | 4.4 | 일회성(가격 미확인) | PlayStudios($70M) 인수 확인 |
| A6 | Brainium(iOS) | 4.8 | $11.99 | 더블딥 반감 대표사례 |
| A7 | Easybrain(AOS) | 4.2 | 미확인 | undo 유료제한 유일사례 |
| A8 | Easybrain(iOS, No Ads) | - | $14.99 | iOS 가격 확인 |
| A9 | nerByte(AOS) | 4.7 | 미확인 | 배터리 소모 불만 |
| A10 | nerByte(iOS) | 4.8 | $7.99 | 선정적 광고소재 불만 |
| A11 | Guru Puzzle Game | 4.8 | Remove Ads(가격 미확인) | 커뮤니티후기 ~$7 추정 |
| A12 | Solitaire Guru(iOS 자매판) | - | 주간구독 $2.99 | Pro Membership 확인 |
| A13 | Big Cake | 4.7 | 미확인 | 광고 불만 상대적으로 적음 |
| A14 | MS Solitaire(AOS) | 3.9 | 구독 월$1.49~연$9.99 | 계정연동 오류로 구매 무효화 |
| A15 | Classic Puzzle Games Maker | 4.7 | 없음(순수광고) | 장르 최악 광고UX |
| A16 | Fantasy Games Ltd | 4.6 | 미확인 | 불만 표본 적음 |
| A17 | PeopleFun | 4.8 | 재화기반 코스메틱 | 5단계 닫기, 자동재생 사운드 |
| A18 | Full Deck Solitaire | 4.7 | $4.99+부스터$0.99~2.99 | 83종 변형, 계단식 가격 |
| A19 | Gamebastic | 4.8(표본8) | 미확인 | 신규 출시, 참고용 |
| A20 | Albayoo | 4.9 | 부스터+구독 주$2.99~연$9.99 | 과금 불만 없음(UX 호평) |
| A21 | Do More Mobile | 4.6 | $19.99 또는 월$0.99 | 이중 앵커링 가격 |
| A22 | Zynga(스파이더 포함 번들) | 4.3 | 미확인 | 5천만+ 설치, 레거시 |
| A23 | Tripledot Spider | 미확인 | 미확인 | 대형 퍼블리셔(5억+ 설치 포트폴리오) |
| A24 | Bitmango Kingdom | 4.5 | 미확인 | 야간 소음 광고 불만 |
| A25 | Mobirix King | 4.5 | 미확인 | 기만적 "현금획득" 광고 불만 |
| A26 | SNG ICT | 4.3~4.4 | 미확인 | "배너광고 없음" 셀링포인트 |
| A27 | PlayValve | 미확인 | 미확인 | 작은 닫기버튼 오클릭 불만(Play정책 위반 소지) |
| # | 앱 | 평점 | 메타 요소 | 광고제거/구독 | 핵심 특징 |
|---|---|---|---|---|---|
| B1 | Zynga Solitaire | 4.3 | 없음 | 미확인 | 2013년 출시 레거시 |
| B2 | Solitaire.com(Tripledot) | 4.6 | 없음 | 미확인 | 성장 중(월 85만 다운로드) |
| B3 | MobilityWare Solitaire | 4.3~4.57 | 없음 | $1.99 일회성 | 시간당 15~20개 광고(장르 최고밀도), 그러나 저가 투명 결제로 호평도 존재 |
| B4 | Solitaire Mystery: Ava's Manor | 4.75 | 있음(저택+정원+반려동물) | 하트시스템(11시간 회복) | ★가장 가까운 벤치마크★ 코인 인플레이션 불만, 그래도 최상위 평점 |
| B5 | Solitaire Farm Adventure | 4.7 | 있음(조랑말마을+농장) | 구독 월$5.99/분기$14.99/연$49.99 | 구독가 벤치마크, 보상 미지급 버그 불만 |
| B6 | Solitairescapes | 4.71 | 약함(테마 스킨만) | 미확인 | 소규모(76만 설치) |
| B7 | Solitaire Cruise | 4.47 | 있음(순회형 사이드게임) | 미확인 | 가격 2~3배 인상 반발 확인 |
| B8 | Solitaire Home Design | 4.35 | 있음(저택+섬 리노베이션) | 미확인 | Ava's Manor 유사 경쟁작 |
| B9 | Pyramid Solitaire Saga(King) | 미확인 | 스토리 프레이밍만 | 미확인 | "광고 안 보면 못 이김" 밸런싱 불만 |
| B10 | Tiki Solitaire TriPeaks | 4.4 | 레벨진행 테마변경 | 미확인 | "7일 후 사라지는 피기뱅크" 기만적 UX |
| B11 | Solitaire Cash(실머니) | iOS4.7 vs AOS2.3 | 없음 | - | 출금전 광고 88개 요구, 플랫폼간 평점 극단 괴리 |
| B12 | 250+ Solitaire Collection | 미확인 | 없음 | 미확인 | 253종 번들, 소규모 |
| B13 | Aged Solitaire Collection | 4.57 | 없음 | 미확인 | 활발한 번들형(월 20만 다운로드) |
| B14 | Solitaire Grand Harvest(재확인) | 4.69 | 있음(농장+마을) | 기존 보고서 참고 | 다른 보고서에서 상세 다룸, 중복 생략 |
| 앱 | 실패 패턴 | 우리가 지킬 원칙 |
|---|---|---|
| Brainium(iOS) | 기존 구매자에게 재과금 | 정책 변경 시 그랜드파더링 필수 |
| Easybrain | undo를 광고로 제한 | undo/힌트 영구 무료 |
| nerByte(iOS) | 선정적 광고 소재 방치 | AdMob 콘텐츠 등급 필터링 |
| Classic Puzzle Games Maker | 닫기버튼 위치 계속 이동 | 닫기버튼 고정위치·즉시반응 |
| PlayValve | 닫기버튼 너무 작아 오클릭 | Google Play 정책 수준 충족 |
| Bitmango Kingdom | 야간 소음 광고(사운드 강제) | 광고 사운드도 게임 음소거 설정 따르게 |
| Mobirix King | "현금 획득" 기만 광고 문구 | 광고 소재 클레임 검수 |
| Ava's Manor | 레벨 코인 비용 지속 인플레이션 | P2W 마찰 0 원칙 고수 |
| Solitaire Cruise | 부가상품 가격 2~3배 갑작스런 인상 | 가격 변경은 점진적·투명하게 |
| Tiki TriPeaks | "7일 후 사라지는" 기만적 재화 UX | 적립 재화는 소멸 조건 명시 |
| Solitaire Cash | 출금 전 광고 88개 요구 | 보상형 광고 요구량 상한 설정 |
| MS Solitaire Collection | 결제해도 광고 재출현(구독 버그) | 구매 상태 동기화 안정성 QA |
이 보고서 전체(38개 앱 + Google Play 정책 + 반면교사 12건)의 존재 이유는 여기다. 우리 게임에 실제로 이미 구현된 BM 요소를 하나씩 코드에서 실측하고(www/ads.js, www/billing-config.js, www/game.js), 실행에 필요한 작업 종류별로 재분류한다 — ⑤-A(이미 있는 걸 실기기에서 확인만 하면 되는 것) / ⑤-B(이미 있는 걸 조정만 하면 되는 것) / ⑤-C(아예 새로 만들어야 하는 것). 이번 재작성의 계기는 배너광고 항목에 대한 정정이다: 처음엔 "테스트광고 상태라 그런 것"이라는 설명이 있었으나, 코드와 커밋 히스토리를 다시 실측한 결과 배너는 전면·보상형과 사정이 다르다는 게 확인됐다 — 아래 Exhibit 4에서 이 셋을 나란히 비교한다.
| 요소 | 현재 상태(코드 실측) |
|---|---|
| 전면광고 | 2번째 판부터 매판 노출. 재시작/게임오버는 90초 쿨다운, 승리 시엔 쿨다운 면제(game.js:4495-4508) — Ads.interstitial() 실호출, isTesting: TEST 적용 중(ads.js:79) |
| 배너광고 | Ads.banner()(게임 코드가 명시적으로 부를 수 있는 공개 API)는 어디서도 직접 호출되지 않음. 다만 앱(네이티브) 쪽은 부팅 시 Ads.init()(game.js:9644,9650)이 nativeInit()→nativeBanner()(ads.js:36-40)를 자동으로 태워 사실상 "매 부팅 자동 시도"는 되고 있음 — 웹(AdSense) 쪽은 adsenseClient가 아직 플레이스홀더라 webBanner()가 조기 리턴돼 정말 한 번도 실행된 적 없음. 자세한 비교는 Exhibit 4. |
| 보상형광고 3종 | winDouble(승리화면 +20골드), overContinue(게임오버 시 3수 되돌리기), missionAdBoost(미션+마일스톤 공용 보상 2배, v2599 신규·v2601 1.5배→2배 조정 — Solitaire Grand Harvest·Crossy Road·업계 전수조사 결과 2배가 유일한 표준) — Ads.rewarded() 실호출(game.js 7곳 이상), isTesting: TEST 적용 중(ads.js:80) |
| 제거된 보상형광고 | 판내보너스 2배·무료선물 2배 — v2583에서 CTA 3개 경쟁 문제로 제거 완료 |
IAP 4종(전부 enabled:false, 미작동) | ad_remove ₩12,000(광고영구제거+전용캐릭터2종) · piggy_bank ₩4,300(재화 영구2배) · unlock_character ₩1,200(소모성 개별해금) · starter_pack ₩1,900(신규유저 500골드+캐릭터1종) |
| undo/힌트 | 인게임 무제한 무료 |
| 항목 | 호출부 존재? | isTesting: TEST 적용? | "테스트광고라서 안 보인다"는 설명이 맞나 |
|---|---|---|---|
| 전면광고 | 있음 — game.js:4508 Ads.interstitial(...) | 적용됨(ads.js:79) | 정확히 맞음. 실제로 테스트 광고단위 ID(ca-app-pub-3940256099942544/..., 구글 공식 테스트 ID)로 매판 호출되고 있고, 출시 시 ads-config.js의 test:false로 바꾸면 이미 채워둔 실제 광고단위 ID(androidInterstitial)로 그대로 전환된다. |
| 보상형광고 | 있음 — game.js 7곳 이상 Ads.rewarded(...) | 적용됨(ads.js:80) | 정확히 맞음. 위와 동일 — 이미 정상 동작 중인 파이프라인이고 test 플래그만 끄면 실제 광고로 전환된다. |
| 배너(네이티브 앱) | 있음, 실기기 확인됨 — Ads.init()가 부팅마다 nativeBanner()를 자동 실행(ads.js:36-40), 사용자가 실제 APK로 화면 하단 배너 노출을 직접 확인(2026-07-19) | 적용됨(ads.js:76) — AndroidManifest의 APPLICATION_ID(ca-app-pub-4900019164373658~6885535170), package.json의 @capacitor-community/admob@8.0.0, ads-config.js의 실제 androidBanner ID까지 배선 전부 실물로 채워져 있음 | "테스트광고라서 안 보인다"가 정확히 맞음 — 전면·보상형과 동일하게 이미 정상 작동 중인 파이프라인. 초기 판단(코드 호출부가 없다)이 틀렸고, 실기기 검증으로 완전히 해소됨. 남은 건 출시 시 test:false 전환뿐. |
| 배너(웹/PWA) | 없음 — webInit()이 adsenseClient 플레이스홀더 확인 후 webBanner() 호출 전에 조기 리턴(ads.js:94) | 해당 없음(애드센스 클라이언트 자체가 미설정) | "한 번도 호출된 적 없다"가 100% 정확함. 이건 테스트광고 여부의 문제가 아니라 구글 애드센스 계정을 아직 안 만들었다는 비즈니스 단계의 문제 — ⑤-C에서 다룸. |
여기 속한 항목들은 코드를 새로 짜거나 로직을 바꿀 필요가 없다 — 이미 만들어진 게 실기기·실환경에서 의도대로 작동하는지 "눈으로 확인"하는 게 전부다.
Ads.init()의 자동 nativeBanner() 호출과 BOTTOM_CENTER 배치가 코드대로 정확히 동작하고 있었다. 즉 배너는 이미 "테스트광고 상태로 정상 작동 중"이며, 남은 건 실제 광고단위로 전환(test:false)뿐 — QA 항목에서 완료 처리.ads.js 코드가 조작할 수 있는 지점이 아니다(구글 개발자 포럼에서도 "인터스티셜에 닫기 기능·실시간 차단이 없다"는 한계가 반복 언급됨). 따라서 ④에서 인용한 Classic Puzzle Games Maker·PlayValve류의 "닫기버튼 문제"는 애초에 우리 코드가 만들 수 있는 종류의 버그가 아니다 — 우리가 실제로 통제 가능한 지점은 (1) AdMob처럼 신뢰도 높은 공식 네트워크를 쓰는 것(이미 하고 있음 — 저품질 서드파티 SDK는 닫기버튼을 일부러 작게 만드는 경우가 있음), (2) Google Play의 15초 이내 닫기 규칙(③, Google Play Ads 정책)을 준수하는 광고 형식(표준 전면/보상형)만 쓰는 것 정도다. QA 항목으로서는 "닫기버튼을 개선한다"가 아니라 "AdMob 표준 UI가 Play 정책 기준을 실제로 만족하는지 실기기에서 확인한다"로 재정의해야 한다.승리 시 전면광고 쿨다운 면제 → 세션당 프리퀀시 캡 도입 검토. 현재 로직(game.js:4495-4508)은 adLastInter 타임스탬프로 90초 쿨다운(coolOK)을 두되, isWin이 참이면 이 쿨다운 자체를 완전히 건너뛴다(isWin || coolOK). 그 위에 세션 전체에 걸친 노출 상한(session cap)도 전혀 없다 — adGames는 새 판 시작 횟수를 셀 뿐 광고 노출 횟수를 캡핑하는 데는 쓰이지 않는다. 리서치에서 확인된 업계 표준 패턴은 이중 방어선이다: ① 노출 종류·트리거와 무관하게 임의의 두 전면광고 사이 최소 간격(minimum interval between ANY two interstitials) 2~3분, 미드코어 장르는 최대 4분까지(AdReact, Airflux 블로그 종합) ② 세션당 노출 상한 4~6회 — 5~6회를 넘어가면 수익 증가분이 급격히 체감한다는 게 업계 공통 관찰이다 ③ 첫 광고 지연 60~90초 — 이것만으로 D1 리텐션이 5~8%p 개선된다는 보고도 있다. 우리 게임은 판당 평균 10분으로 세션이 길어 이 수치를 그대로 이식하긴 어렵지만, 원칙(①②③ 모두 어떤 트리거로 뜨든 예외 없이 적용)은 그대로 옮길 수 있다 — 구체적으로는 isWin이어도 최소한의 절대 쿨다운(예: 30~60초)은 유지하도록 coolOK 조건을 isWin 예외에서 완전히 빼지 말고 "짧은 쿨다운 + 승리 시엔 그 쿨다운만 대폭 단축"으로 바꾸는 안, 그리고 세션 전체 노출 카운터를 별도로 추가해 상한(예: 시간당 6회 캡을 세션 전체 캡으로도 명시)을 거는 안 두 가지를 함께 검토할 만하다. 참고로 AdMob 자체도 앱/광고단위 레벨의 프리퀀시 캡을 콘솔에서 코드 없이 설정할 수 있는 플랫폼 기능을 제공하지만(예: "30분당 2회"), 이건 캡에 걸리면 광고 요청 자체가 조용히 "No Fill"로 실패하는 방식이라 우리 쪽 클라이언트 코드가 여전히 그 실패를 받아 매끄럽게 처리하는 로직을 유지해야 한다 — AdMob 콘솔 캡은 안전판(defense-in-depth)으로 병행하되, 세션 경험을 결정하는 1차 로직은 지금처럼 game.js의 자체 쿨다운/카운터로 남겨두는 게 맞다.
→ 적용 완료(v2600, game.js:4495-4512): isWin || coolOK 완전 면제를 없애고, 승리는 30초·재시작/게임오버는 90초의 최소 쿨다운을 항상 적용하도록 변경(AD_MIN_COOLDOWN_WIN/AD_MIN_COOLDOWN_OTHER). 여기에 최근 1시간 내 노출 타임스탬프를 배열로 추적해 시간당 6회 상한(AD_HOURLY_CAP)을 넘으면 조건이 전부 맞아도 광고를 아예 스킵하는 세션 프리퀀시 캡을 추가했다 — 리서치에서 확인된 이중 방어선(최소간격+세션캡)을 그대로 코드에 반영.
게임오버 화면 1차 액션 위치 — 실측 결과 기반 조정. ⑤-A에서 스크린샷으로 확인했듯, 세 조건이 겹치면 "다시 하기" 버튼이 스크롤 없이는 안 보인다. 승리창 사고 때처럼 광고 CTA 자체를 없앨 필요는 없다 — 대신 www/index.html의 #overOverlay .dialog.over 버튼 순서를 조정해 "다시 하기"(overAgain)를 최상단 고정 또는 조건부 배너들보다 먼저 배치하는 순수 마크업 순서 변경만으로 해결 가능하다(로직 변경 없음, CSS만으로 처리 가능한 소규모 개선).
→ 적용 완료(v2600, www/index.html): "다시 하기" 버튼을 조건부 배너(미션·이어하기·선물·가챠) 앞으로 옮겼다. 로컬 브라우저로 3조건을 전부 강제 활성화해 재현·재검증한 결과, 이제 스크롤 없이 타이틀 바로 아래에서 즉시 보인다(수정 전/후 스크린샷 비교로 확인).
무료선물 vs 광고보상 골드 액수 역전 — 사용자 지적으로 발견(2026-07-19). 승리창에서 "📺 광고보고 2배 골드"(winDouble, 고정 pgMul(20))와 바로 아래 "🎁 무료선물" 배너가 나란히 노출되는데, 무료선물 쪽 보상(giftRewardAmount())이 40 + random(0~480) = 평균 280골드, 최대 520골드(2% 확률로 1,000~10,000 잭팟)였다 — 광고 없이 탭 한 번이 광고 시청 보상의 평균 14배, 최대 26배. 기본구간(40~520)은 crossy-road-bm-report.html §4에서 실측한 길건너친구들(Crossy Road) 원작의 무료선물 값을 그대로 이식한 것이었으나, 잭팟 확률(2%)·배수(1,000~10,000)는 원작 문서에 "희귀 잭팟 최대 ~10,000+"라고만 있을 뿐 정확한 %가 확인된 적이 없어 우리 쪽이 임의로 정한 값이었다. 원작에서 사망 후 광고보상(+20코인)과 무료선물이 같은 비율로 벌어져 있어도 문제가 안 되는 건, CR의 광고보상은 죽을 때마다(사실상 무제한 빈도) 뜨고 무료선물은 최대 3시간 쿨다운이라 두 채널이 "그 순간 비교"되는 구조가 아니기 때문이다. 우리 게임은 승리창 한 화면 안에 두 금액이 동시에 노출되므로 격차가 바로 눈에 띄고, 전체 재화 경제(세트완성 1·미션 5·업적 15·데일리선물 30~200) 대비로도 무료선물(평균 280)이 압도적인 이상치였다.
→ 1차 적용(v2602, game.js): 기본구간을 15 + random(0~45) = 평균 37골드(15~60)로 낮췄다. 그런데 잭팟(2% 확률 1,000~10,000)을 그대로 두면 기댓값 기여분이 0.02×평균5,500=110으로 기본구간 기댓값(36.75)의 3배가 돼 방금 한 조정이 사실상 무의미해진다는 걸 사용자가 재지적 — 전체 기댓값이 여전히 ≈147로 광고보상(20) 대비 7배 이상 차이가 났다.
→ 2차 적용 후 최종 결론(같은 날, game.js:giftRewardAmount()): 잭팟 확률을 0.1%로 낮추는 안을 거쳐, 최종적으로는 잭팟 자체를 완전히 제거했다 — 우리 구현엔 잭팟 당첨 시의 전용 연출("잭팟!" 팝업 등)이 전혀 없어 유저에게 "특별한 순간"으로 체감되지도 않았고(그냥 코인샤워 숫자만 커짐), 원작이 잭팟을 UI에 명시적으로 알린다는 근거도 없었다. 연출도 없이 기댓값 관리 부담만 계속 만드는 요소를 유지할 이유가 없다는 판단 — 지금은 15~60 단일구간만 남았다(합계 기댓값 37.5, 광고보상 20 대비 격차 약 1.9배로 축소).
피기뱅크 IAP "모든 재화 획득량 영구 2배" 약속 불이행 — 재화 경제 전수 감사로 발견(2026-07-19). 무료선물 건을 계기로 game.js 전체의 재화 지급 경로를 pgMul()(피기뱅크 배율 헬퍼) 통과 여부 기준으로 전수 점검했다. 미션·업적·세트완성·클린보드보너스·무료선물·승리광고보상은 전부 pgMul()을 정확히 통과하는데, 데일리선물 클레임(claimDailyGift)·데일리선물 광고 더블업·스타터팩(grantStarterPack)·클론다이크 승리보상(kWinShow, 클론다이크 모드의 사실상 유일한 인게임 골드원) 4곳은 points += reward로 배율을 거치지 않고 직접 지급하고 있었다. 피기뱅크 IAP는 현재 enabled:false라 당장 피해는 없지만(dormant), 상점 문구·billing-config.js 주석 모두 "모든 재화 획득량 영구 2배"를 명시하고 있어 IAP를 켜는 순간 광고 문구대로 작동하지 않는 결제 사기성 버그가 될 뻔했다. 4곳 전부 pgMul()을 통과하도록 수정 완료, 로컬 브라우저에서 피기뱅크 모의(mock)를 걸고 데일리선물 클레임·더블업이 정확히 2배(모의 해제 시 1배로 원복)로 지급되는 것까지 실측 확인했다.
배너광고 — 네이티브는 이미 완료, 웹만 신규. 사용자 실기기 확인으로 네이티브 앱의 배너는 정상 작동이 확인돼 여기선 할 일이 없다. 남은 신규 항목은 웹/PWA 채널뿐이다 — adsenseClient가 플레이스홀더 그대로라 구글 애드센스 계정 개설 → 사이트 승인 → client ID·슬롯 ID 발급이라는, 코드가 아니라 별도 비즈니스 프로세스가 선행돼야 하는 진짜 신규 항목이다. 리서치로 확인한 배치 원칙은 이미 우리 구현과 일치한다 — Google 공식 문서(Adaptive banner ads)는 UI가 고정된 게임류에는 화면 상/하단에 고정되는 anchored adaptive banner를 권장하는데, 우리 코드가 이미 ADAPTIVE_BANNER + BOTTOM_CENTER(ads.js:76)를 쓰고 있어 방향은 맞다. 카니발라이제이션 우려에 대해서는, 배너는 eCPM이 $0.05~0.20 수준으로 인터스티셜($5~12)·리워드($20~40)보다 훨씬 낮아(Yango Ads, GameBiz Consulting 등 종합) 카니발라이즈보다는 "상시 노출되는 낮은 단가의 보완 채널"로 보는 게 업계 컨센서스이며, 실제 수익 잠식은 배너 자체보다 "과도한 무료 보상"이나 "과도한 인터스티셜 빈도"에서 발생한다는 게 지배적 견해다 — 다만 우리 게임에 배너를 실제로 켰을 때의 순증/잠식 여부를 뒷받침할 자체 데이터는 아직 없다(미확인, 활성화 후 A/B 비교 필요).
카드백 코스메틱 IAP, 마을 시즌패스. [[bm-season-pass-plan]]에 설계는 끝났으나 아직 코드로 구현되지 않은 순수 신규 기능이다. Ava's Manor·Solitaire Farm Adventure(B4,B5)가 증명하듯 "스토리+꾸미기" 메타 콘텐츠 결합은 검증된 시장이고, 우리 "쏠리 클럽" 구독가($2.99)도 이 시장 평균(월 $5.99까지)보다 보수적으로 책정돼 있어 인상 여지도 있다 — 다만 이건 이번 배너 정정과 무관한 기존 결론이라 상세 설계는 [[bm-season-pass-plan]] 쪽을 따른다.
배너가 정상 작동함을 확인한 김에, 우리 배너 설계(하단·적응형·부팅 시 자동노출)가 이 카테고리의 실제 세부 관행과 맞는지 다시 조사했다. 이전 조사들은 전면광고 불만·IAP 가격 위주였고 배너 자체의 구현 디테일은 다루지 않았었다.
| 앱 | 상시노출 여부 | 위치/크기 | 배너 관련 특이사항 |
|---|---|---|---|
| Easybrain Spider Solitaire | 플레이 중 상시("don't interfere with gameplay ever" — 단, 최신 리뷰는 반대) | 하단 | "배너가 일일챌린지 완료 X버튼을 가린다"는 반복 불만(도움됨 85표) — 배너가 UI 컨트롤과 겹친 실패 사례 |
| Microsoft Solitaire Collection | 상시 + 별도 half-screen 광고 병행 | 하단, "quite large"(적응형 추정) | 배너+전면 동시 운영, 구독해도 재노출되는 버그 다수(기존 반면교사와 동일 계열) |
| Solitaire Grand Harvest | 허브(마을) 화면 한정으로 추정, 카드보드 내 여부 미확인 | 상단(공식 페이스북 언급) | 유일하게 상단 배치가 확인된 사례 |
| PeopleFun(자매작 Wordscapes 기준) | 과거엔 상시, 유저 반발로 완전 제거 | 구 하단 | "PeopleFun caved on the banner ads... no longer has any banner ads"(Reddit) — 배너를 아예 없앤 드문 사례 |
핵심 발견 5가지:
BOTTOM_CENTER는 이질적이지 않다. 상단 배치(Solitaire Grand Harvest)는 카드보드가 아닌 허브 화면 한정으로 보여 직접 비교 대상은 아니다.www/ads.js에는 이미 bannerAdSizeChanged 리스너로 실측 배너 높이를 --banner-h CSS 변수에 반영해 .overlay가 그만큼 padding-bottom을 확보하는 기존 로직이 있다(2026-07-05 도입, 광고제거 구매 시 0으로 리셋). Easybrain급 겹침 사고를 막는 장치가 이미 설계돼 있다는 뜻이며, 실기기에서 실제로 잘 동작하는지만 재확인하면 된다.ad_remove가 광고 "전체"를 제거하는 현재 설계가 표준과 일치.38개 앱 전수조사 데이터를 다시 훑어 "경쟁사엔 있는데 우리한텐 없는 광고 종류·BM"만 추려 재조사했다. 세션 검색 예산 제약으로 개별 경쟁사의 실제 적용 여부는 상당 부분 미확인이며, 확인된 것과 업계 일반지식(미확인 전제)을 명확히 구분해 표기한다.
| 요소 | 확인 수준 | 내용 |
|---|---|---|
| App Open Ads(앱 재진입 전용 광고) | 포맷·정책은 확인, 경쟁사 적용 여부는 미확인 | Google 공식 정책(AdMob 고객센터)상 콜드스타트·백그라운드 복귀 시 로딩 화면에서만 노출 가능하고, "하루 여러 번 짧게 여는 앱"에 적합하다고 명시적으로 권고 — 우리 장르(짧고 잦은 세션)와 정확히 부합. 기존 전면광고 쿨다운/캡 로직을 재사용해 앱 재진입 시점에만 별도 얹으면 구현 난이도는 낮다. |
| 오퍼월(Offerwall) | 업계 일반 관행 확인, 이 장르 특정 사례는 미확인 | 여러 광고 시청·설문·타 앱 설치 등 "외부 액션 완료"로 재화를 버는 채널. AppSamurai 기준 eCPM $30~200+, 권장 보상 환율은 IAP 재화가치의 70~80%. 골드를 스튜디오가 직접 파는 게 아니라 유저가 벌어가는 구조라 우리의 P2W-0 원칙과 충돌 없음 — 비지불 유저(대다수)에게서 순증 수익을 뽑는 채널로 우리가 완전히 갖고 있지 않은 유일한 채널. |
| 달력형 장기 로그인 보상 | 부분 확인 | Solitaire Social 공식 지원문서에 "35일 로그인 스트릭" 실운영 확인(Daily Presents). 우리는 7일 사다리(DAILY_GIFT_LADDER)까지만 있고 장기 달력형은 없음 — 기존 미션/마일스톤 "광고보고 2배" 로직과 결합하면 신규 광고 인벤토리 없이 리텐션만 강화하는 저리스크 확장. |
| 소액 소모성 부스터 직접구매(셔플팩 등) | 일부 반증 확인 | Brainium 공식 지원문서 기준 이 계열은 오히려 광고제거 외 부스터 판매가 없는 것으로 보임(Helpshift). 있다 해도 undo/힌트 영구 무료 원칙과 충돌해 도입 제외. |
| 네이티브 광고(UI에 자연스럽게 섞인 광고) | 부적합 시그널 확인 | GameAnalytics·GameBiz Consulting 모두 적합 장르로 스포츠·레이싱·시뮬레이션·RPG를 꼽을 뿐 카드·퍼즐 장르는 언급조차 없음 — 이 장르엔 사례·근거 모두 약해 우선순위 낮음. |
| 피기뱅크형 로스어버전(Coin Master류 압박 저금통) | 업계 지식(미확인) | 일정 시점 전 구매 안 하면 리셋되는 손실회피형 압박 장치 — 사실상 골드 간접판매라 P2W-0 원칙과 충돌해 배제. |
| 실력형 실전상금(Solitaire Cash류) | 존재 확인(Google Play 리스팅) | 참가비+상금 구조, 미국 일부 주 한정 스윕스테이크 법적 구조 — 규제 이슈가 커서 참고 이상 아님. |
도입 검토 우선순위: ① 오퍼월(완전히 없는 채널 + 원칙 충돌 없음 + 비지불 유저 순증 수익, 실행 리스크 낮음) → ② 달력형 로그인 보상(기존 미션 인프라 재사용, 리텐션 강화) → ③ App Open Ads(장르 적합성 근거 명확, 구현 난이도 낮으나 과용 시 이탈 리스크 있어 전면광고와 별도로 엄격한 쿨다운 필요). 소액 부스터·네이티브광고·피기뱅크형 저금통·실전상금은 원칙 충돌 또는 근거 부족으로 이번엔 제외한다.
위 3개 항목을 "존재 여부"가 아니라 "어떻게 만들어야 좋은 평가를 받는지" 기준으로 재조사했다. 셋 다 실제로 반발을 부른 실패 사례가 명확히 존재하므로, 그 원인을 역으로 뒤집어 설계 원칙으로 삼는다.
| SDK | eCPM 수준 | 평판 | 비고 |
|---|---|---|---|
| Tapjoy | 업계 최상위권(평균 ~$60) | 최악 — 1.1/5(846건) | 물량은 최대지만 "보상 거부" 불만이 여러 게임 커뮤니티에 반복 등장. 단독 사용 리스크 큼. |
| ironSource(Unity LevelPlay) | $30~80(안드로이드)/$50~120(iOS) | 양호 | Unity 공식 포럼 불만은 SDK 마이그레이션 관련 개발자 이슈이지 최종유저 불만이 아님. |
| AdGem | 중견 규모 | 중간(3.4~3.58/5) | 최소 지급액 $25로 낮아 소규모 인디에 친화적 — 1차 후보로 적합. |
우리 게임 적용안: 기존 "리워드" 탭(데일리선물·뽑기기계·광고제거가 모인 화면)에 뽑기 기계 카드 바로 옆 신규 카드로 배치(별도 전용 탭 대신 "상점 첫 슬롯" 원칙 적용). 문구는 "광고"가 아니라 "미션/도전과제"로 프레이밍하고, 오퍼마다 완료 전 정확한 보상액을 가챠 1회(100골드) 환산으로 표시("이 미션 하나 = 가챠 1번"). SDK는 AdGem을 1차로, 물량 보완용으로 ironSource 병행 — Tapjoy는 eCPM은 매력적이나 "보상 거부" 리스크가 커서 넣더라도 앱 자체에 수동 보상 지급 백업 프로세스를 반드시 같이 만들어야 P2W-0/광고=혜택 원칙이 안 깨진다.
우리 게임 적용안: 기존 7일 사다리(DAILY_GIFT_LADDER, 30~200골드)는 그대로 두고, 별도의 월간(30일) 장기 출석 캘린더를 병렬 트랙으로 신설. ① 놓친 날 처리는 Flexible 모델(누적 출석일수 기준, 하루 빠져도 스트릭 리셋 없이 다음 접속 때 다음 칸으로 순연) — r/truegaming·r/gachagaming에서 확인된 "리셋형 강제감" 반발 요인을 원천 차단. ② 보상 곡선은 Yu-kai Chou 3단계 결합 — 1~14일 소액(20~50골드), 7·14·21일 스파이크(100~150골드), 30일차 그랜드 프라이즈(300~500골드+한정 코스메틱). 일 평균은 기존 7일 사다리 평균(~90골드/일)과 비슷하게 맞춰 인플레이션 방지. ③ 광고 더블업은 1~29일차 소액 칸에만 적용하고 30일차 그랜드 프라이즈는 광고 배가 대상에서 제외(무료로 완전 획득 가능 유지) — Yu-kai Chou의 "회복 도구를 유료·시청 조건으로 걸지 말라"는 경고를 마일스톤 보상에 적용하기 위함.
우리 게임 적용안: 신규 유저는 설치 후 최소 며칠(구체 일수는 자체 A/B 필요) 유예 후 첫 노출. 모달 복귀(카메라 롤·공유시트·결제창) 직후엔 스킵. 가장 중요한 건 전면광고와 App Open Ads가 별도 캡을 갖지 않고, 기존 시간당 6회 캡·최근 노출 타임스탬프를 공유하는 것 — "라운드 종료 전면광고를 보고 → 앱을 잠깐 백그라운드로 보냈다가 → 바로 복귀"하는 순간에 App Open Ads까지 뜨면 유저에게 "광고 연타"로 인지되기 때문이다. 정확한 최소 간격(60초는 확인된 위험구간, 180초는 확인된 안전구간)은 출시 후 자체 A/B로 확정해야 한다.