이 글은 Sandrop 시리즈의 7번째 기록입니다. (총 38개)

오늘 한 일

  • 디자인 제안(캔디팝 리스킨)을 검토하고 적용 범위를 하이브리드로 확정
    • 이유: claude design의 제안대로 화면 전체를 7색 캔디 팔레트로 스냅하면 도안(그림)까지 그 7색에 갇힌다. 실제로 샘플을 뽑아 보니 도안이 제대로 인식되지 않는 경우도 있고 촛불은 흰 덩어리가 됐다. 도안은 이 게임의 콘텐츠라 훼손하면 안 된다
    • 결론: UI(버튼·팝업·아이콘·배경)만 캔디로 갈아입히고, 도안은 색상(hue)을 그대로 두고 채도만 올려 화면 톤에 어울리게 함
  • HUD 가독성 2종 — 상단에 완성 목표 도안 썸네일, 지금 부을 수 있는 색 힌트 점
    • 이유: 무엇을 만드는 중인지 화면 안에 없어서, 뭘 향해 붓는지 모른 채 손이 움직였다
  • 캔디팝 리스킨 — 팔레트 토큰, 서체(Baloo2 + Gothic A1) 번들, 아이템 아이콘 3종, 하트·코인 심볼, 승리/막힘 팝업
    • 서체는 런타임 다운로드가 아니라 앱에 넣어 배포 — 오프라인에서도 켜지는 게 이 게임의 전제다. 필요한 글자만 남겨 2.2MB → 134KB로 줄임
    • 아이콘은 라이브러리를 새로 들이지 않고 직접 그림 — 의존성 하나 늘리는 것보다 저렴했다
  • 레벨 선택을 격자 → 여정(journey)형으로 바꾸고 진입 프리뷰 추가
    • 이유: 200개가 격자로 한 번에 펼쳐지면 “얼마나 남았는지”만 보이고 나아가는 느낌이 없다. 세로로 이어지는 길에 다음 도전이 가운데로 오게 스크롤을 맞춤
    • 진입 프리뷰: 들어가기 전 1.6초 동안 완성할 그림을 크게 보여준다. 아무 곳이나 탭하면 즉시 스킵
  • 여정에서 스포일러 제거
    • 앞으로 할 레벨은 도안도 난이도도 숨기고 ??? 로 표기 — 미리 다 보이면 궁금할 게 없다
    • 난이도 배지는 어려움·매우 어려움에만 붙임. 쉬운 걸 “쉬움”이라 붙여 놓을 이유가 없다
    • 현재 도전 노드의 버튼은 “PLAY”
  • 게임오버·재화 규칙을 두 번에 걸쳐 다시 짬
    • 1차: 하트를 입장료로 — 레벨에 들어갈 때 하트 1을 내고, 이기면 돌려준다. 막혔다고 추가로 깎지 않는다
    • 2차(확정): 두 재화의 역할을 갈랐다. 코인은 진행을 사고(이어하기 900), 하트는 새 판에 들어간다(진입·다시하기)
    • 하트가 0이면 코인 900으로 하트 5개를 사거나 광고를 보고 1개를 받는다
    • 게임 중에는 하트·코인을 아예 표시하지 않음 — 재화는 목록·상점·게임오버에서만 보인다
  • 시작 코인을 0으로 내리고 일일 접속 랜덤 보상을 기획
    • 이유: 코인을 쥐여주고 시작하면 상점을 배울 계기(첫 결핍)가 사라진다. 대신 매일 첫 접속에 상자를 열게 해서 초반 코인 획득 경로를 만든다 (구현은 다음)
  • 상점 신설 — 스타터 번들·NO ADS·코인팩 3종·아이템 3종
    • 결제(IAP)는 수익화 마일스톤에서 붙일 거라 지금은 카드와 가격만 두고 “준비 중”으로 비활성
    • 아이템 코인 구매는 지금 동작. 레벨 선택 상단의 코인을 누르면 상점이 열린다
  • 승리 팝업 개편 — 카드 폭을 1.5배로 키우고, “광고 보고 코인 2배”를 주 버튼으로, 다음 레벨 버튼은 1초 뒤에 등장, 우상단에 닫기(X)
    • 이유: 다음 레벨 버튼이 같이 뜨면 광고 제안을 읽기 전에 눌러 넘어간다. 보상형 광고는 수익의 축이라 한 번은 읽히게 해야 한다
    • 늦게 나타나는 버튼이 화면을 밀어 올리면 그 순간 손가락이 닿아 잘못 눌린다 — 자리는 처음부터 잡아 두고 서서히 나타나기만 하게 함
  • 레벨 선택 노드를 크게 — 현재 도전 레벨 기준 위아래 2개씩만 보이도록
    • 이유: 한 화면에 레벨이 열 개 넘게 깔리니 목록처럼 보였다. 이 화면은 “지금 여기”를 보여주는 곳이지 카탈로그가 아니다

막힌 부분

  • 디자인 제안을 그대로 받으면 도안이 망가졌다 — 화면과 그림에 같은 팔레트를 강제한 게 원인.
    • 해결: 팔레트를 UI용과 도안용으로 분리. 도안은 색상을 보존한 채 채도만 올려 톤만 맞췄다
  • 서체를 구글 폰트 런타임 로딩으로 붙이면 첫 실행에 네트워크가 필요해진다 — 오프라인 플레이 전제와 충돌.
    • 해결: 폰트를 앱에 번들. 대신 한글 폰트가 무거워 실제 쓰는 글자만 남기는 서브셋으로 줄였다 (UI 문구를 새로 추가하면 서브셋을 다시 떠야 한다는 제약이 생김)
  • 레벨 선택 화면이 200레벨을 전부 미리 해석하느라 진입이 무거웠다.
    • 해결: 화면에 보이는 것만 그때그때 읽도록 지연 로드로 바꿈
  • 레벨 선택 테스트가 끝나지 않고 멈췄다.
    • 원인: 테스트의 가짜 시계에서는 에셋 읽기가 안정적으로 끝나지 않는다
    • 해결: 테스트에는 메모리 안에서 레벨을 만들어 주는 가짜 저장소를 주입해 파일 읽기를 아예 뺐다
  • 승리 팝업 폭을 고정했더니 내용이 죄다 왼쪽에 붙었다.
    • 원인: 닫기(X)를 얹으려고 겹치기 배치로 바꿨는데, 그 배치의 기본 정렬이 좌상단이다. 폭이 화면에 따라 늘던 때는 티가 안 났다
    • 해결: 정렬을 가운데로 지정 (구현은 TIL 6)

다음에 할 일

  • 일일 접속 랜덤 보상 구현 — 시작 코인이 0이라 초반 코인 획득 경로가 필수
  • 수익화 결선 — 상점 결제 연결, 승리 시 “광고 보고 코인 2배”, 게임오버 “광고 보고 이어하기”(버튼은 이미 있고 비활성)
  • 실기기에서 리스킨·여정·게임오버 3선택지 체감 확인

Series: Sandrop

1 모래게임 Sandrop 0 2 모래게임 Sandrop 1 3 모래게임 Sandrop 2 4 모래게임 Sandrop 3 5 모래게임 Sandrop 4 6 모래게임 Sandrop 5 7 모래게임 Sandrop 6 읽는 중 8 모래게임 Sandrop 7 9 모래게임 Sandrop 8 10 모래게임 Sandrop 9 11 모래게임 Sandrop 10 12 모래게임 Sandrop 11 13 모래게임 Sandrop 12 14 모래게임 Sandrop 13 15 모래게임 Sandrop 14 16 모래게임 Sandrop 15 17 모래게임 Sandrop 16 18 모래게임 Sandrop 17 19 모래게임 Sandrop 18 20 모래게임 Sandrop 19 21 모래게임 Sandrop 20 22 모래게임 Sandrop 21 23 모래게임 Sandrop 22 24 모래게임 Sandrop 23 25 모래게임 Sandrop 24 26 모래게임 Sandrop 25 27 모래게임 Sandrop 26 28 모래게임 Sandrop 27 29 모래게임 Sandrop 28 30 모래게임 Sandrop 29 31 모래게임 Sandrop 30 32 모래게임 Sandrop 31 33 모래게임 Sandrop 32 34 모래게임 Sandrop 33 35 모래게임 Sandrop 34 36 모래게임 Sandrop 35 37 모래게임 Sandrop 36 38 모래게임 Sandrop 37

Suggested Posts