이 글은 습관만들기 Pawbit 시리즈의 13번째 기록입니다. (총 20개)

오늘 한 일

  • 개선안 리포트
    • 코드 전체 기준으로 우선순위 정리 — 초반 경제 데스 스파이럴 / 구 습관 색상↔파스텔 타일 충돌 / 출시 블로커 / 광고 파밍 / 자잘한 정합성
    • 초반 경제 시뮬레이션: 초기 포인트 0 + 케어 비용 상향 조합에서 습관 1개 유저는 3일차에 강아지가 아프고, 치료(5조각)와 재발이 반복돼 첫 퍼즐 완성까지 약 3주가 걸림을 확인
  • 신규 강아지 보호 기간 (newDogGraceDays = 7)
    • 입양(최초 DogCareLog 기록) 후 7일간 케어 레벨을 2에서 캡 → 배고픔 표시는 되지만 아프지 않음(퍼즐 잠금·요정 비용 없음)
    • 보호 기간 내로 계산된 “아픔” 알림은 보호 종료 시점으로 이동 (실제 아픈 순간에 울리도록)
    • 이유: 초반 무포인트 구간의 만성 아픔 루프 방지 — 세계관(“갓 데려온 강아지”)과도 자연스러움
  • 광고 일일 3회 캡 (adDailyLimit = 3)
    • 슬롯/보너스 포인트/수정권 합산. AppSettings ‘ad_daily’에 ‘yyyy-MM-dd:count’ 한 키로 관리 — 파싱 시 오늘 날짜가 아니면 0 취급이라 자정 리셋 로직이 따로 없음
    • 카운트는 보상 지급 콜백(onUserEarnedReward)에서만 증가 — 광고 취소/실패는 미차감
    • 소진 시 버튼 “내일 다시” 비활성 + 아이템 탭 상단 “오늘 광고 N/3” 카운터
  • AdMob 실 ID 적용 (Android 완료)
    • rewarded 단위 ID: kReleaseMode 분기 — release만 실 ID, debug/profile은 Google 테스트 ID 강제 (개발 중 실광고 노출/클릭은 무효 트래픽 제재 사유)
    • AndroidManifest 앱 ID(~) 교체. 광고 단위 1개를 세 배치에서 재사용 (배치별 분리는 리포팅용 선택사항)
  • CLAUDE.md 정리 — 낡은 GameConfig 블록 최신화, 광고 연동 규칙 재작성, 상태 머신에 보호 기간 명시

막힌 부분

  • 보호 기간을 “레벨 0 고정”으로 하면 종료 순간 건강→아픔으로 점프
    • 레벨 2 캡 방식으로 변경 — 배고픔 단계는 정상 진행하되 아픔만 차단, 종료 시점에 임계 초과면 그때부터 아픔 (상태 연속성 유지)
  • 광고 ID 체계 — 앱 ID(ca-app-pub-…~…)와 광고 단위 ID(ca-app-pub-…/…)는 별개
    • 앱 ID는 매니페스트(SDK 초기화용, debug에서도 실 ID 사용이 공식 가이드), 단위 ID는 코드(debug는 테스트 ID로 분기)

다음에 할 일

  • Asset 교체 — 마을 map, 숲 속, 리뮤
  • DEV 패널 제거, 앱 아이콘/스토어 에셋, 개인정보처리방침
  • 연말 전시회 시네마틱
  • 실기기 검증 — 보호 기간(온보딩 초기화 후), 광고 3회 캡, release 실광고 (신규 광고 단위는 반영까지 수 시간 걸릴 수 있음)
  • iOS 출시 시 — 광고 단위 생성, Info.plist 앱 ID, ATT 프롬프트

Series: 습관만들기 Pawbit


Suggested Posts