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

오늘 한 일

  • 배경을 먼저 정하고 그림 색을 누르던 순서를 뒤집음
  • 도안 602종의 배경을 직접 고르는 페이지를 만들고, 고른 값을 적용
  • 색이 뭉쳐 등록에서 떨어졌던 도안 129종을 되살림
  • 난이도를 축소판이 아니라 실제 판에서 재도록 통일
  • 구조 하한(바구니·벽)을 실제로 검사하게 고침
  • 후반 레벨에 티어와 무관한 구조 바닥을 깖
  • 전면 광고 닫기 버튼이 안 뜨던 원인을 찾아 고침
  • 승리 화면에서 나갈 때 검은 화면이 되던 것을 고침
  • 11탄까지는 전면 광고를 띄우지 않게 함
  • 처음 연 날에는 일일 보상 카드를 주지 않게 함
  • 500레벨을 네 번 재생성

막힌 부분

그림 색을 눌러서 대비를 맞추고 있었다

캔버스에서 아직 안 채운 칸은 배경색으로 보인다. 그래서 그림 색이 배경과 비슷하면 채운 칸인지 아닌지 구별이 안 된다. 이걸 막으려고 배경과 일정 거리를 강제하는데, 못 넘기면 그림 색을 어둡게 눌러서 거리를 벌리고 있었다.

문제는 배경을 만드는 방식이었다. 배경을 그 도안의 주조색에서 뽑으니, 배경이 그림 색 근처에 놓일 수밖에 없다. 연한 그림은 어떤 값으로도 기준을 못 넘겨서 결국 그림이 눌린다.

배경은 우리가 만들어내는 값이고 그림은 그린 사람의 데이터다. 순서가 반대였다.

  • 해결: 배경을 그림과 무관하게 고르게 했다. 생일케이크로 재보니 그림에서 뽑는 방식은 전 구간 미달인데, 무관하게 고르면 색 공간의 81%가 후보였다
  • 영향이 컸다. 풀 1,629종 중 473종이 눌리고 있었고, 색이 뭉쳐 등록에서 떨어진 원본 129종이 배경만 옮기면 통과했다

어느 배경이 어울리는지는 측정으로 못 정한다

기준을 넘기는 후보는 수천 개인데, 그중 무엇이 그림과 어울리는지는 숫자로 못 고른다.

사람이 고르게 했다. 도안마다 후보 다섯 개를 깔고 추천을 미리 선택해 둔 페이지를 만들어, 마음에 안 드는 것만 바꾸면 되게 했다. 어떤 배경을 깔아도 별로인 그림은 사용 안 함으로 뺄 수 있게 했고, 그 판단은 목록에 쌓아 다시 묻지 않는다.

602종을 직접 골랐고, 그중 149종이 사용 안 함으로 빠졌다. 시계·화살표·금지 표지처럼 퍼즐 도안으로 안 맞는 것들이었다.


안전망까지 같이 걷어냈다

배경을 지정하면 그림 색을 안 건드리게 했는데, 대비 검사를 통째로 껐다. 그러면 최종 팔레트와 배경 사이 거리를 한 번도 안 재게 된다.

후보를 고를 때 쓴 건 원본 순색이라 근사치였다. 색을 합치면서 생긴 평균색과, 면적이 작아 후보 계산에서 빠진 색이 배경에 묻었다. 도안 139종이 그렇게 됐고, 그중 49개가 실제 레벨에 들어가 있었다.

한 레벨은 눈 흰자와 배경의 거리가 10.7이었다. 기준은 85다.

  • 해결: 대비 보정은 이미 기준을 넘긴 색은 그대로 돌려준다. 그래서 검사를 켜 두면 못 넘긴 색에만 걸린다. 눈 흰자만 조정되고 나머지 세 색은 원본 그대로 남았다
  • 지정 배경으로도 기존 방식으로도 안 되는 16종은 풀에서 뺐다. 배경과 구별 안 되는 색이 있으면 판이 성립하지 않는다

최고 난이도가 여전히 안 어려웠다

전날 고쳤다고 한 문제가 그대로였다. 원인이 세 겹이었다.

첫째, 난이도를 절반 해상도로 줄인 판에서 재고 기록만 실제 판에서 했다. 게이트가 통과시킨 것과 화면에 뜨는 난이도가 서로 다른 판의 성적이었다.

둘째, 구조 하한이 검사되는 곳이 없었다. 바구니 수는 색당 개수로 간접 유도만 하는데, 보드 용량에 걸려 잘리면 조용히 사라진다. 최고 난이도 15개 중 11개가 미달이었다.

셋째, 기믹을 배정하는 코드에 최고 난이도가 빠져 있었다.

if tier in ("hard", "veryhard"):   # extreme 없음
    ropes = 2

그 아래 티어만 밧줄을 확정으로 받고, 최고 난이도는 확률에 맡겨져 있었다. 기믹이 하나도 없는 최고 어려움이 나온 이유다.

  • 해결: 축소판 측정을 없애고, 하한을 실제로 검사하고, 티어 목록을 채웠다
  • 상한은 거르기만 하고 어려운 판을 찾지는 않고 있었다. 상위 티어는 밴드 안에서 계획 난이도가 가장 어려운 판을 고르도록 바꿨다

라벨은 나중에 올라가는데 하한은 처음에 정해진다

위를 다 고쳤는데도 최고 난이도 14개 중 10개가 여전히 바구니 미달이었다.

표시 난이도는 실측에 맞춰 나중에 올라간다. 그런데 구조 하한은 계획 난이도로 처음에 정해진다. 계획이 보통인 400탄대 판이 헐겁게 만들어졌다가 운 좋게 어렵게 측정되면, 라벨만 최고 어려움이 붙는다. 하한을 아무리 강제해도 이 경로는 안 걸린다.

  • 해결: 레벨 번호로 구조 바닥을 깔았다. 티어와 무관하게 후반이면 바구니와 벽이 일정 수준 이상이다. 500탄 기준 바구니 25개·벽 4개
  • 후반 판이 전반적으로 촘촘해졌다. 300탄 이후 바구니 분포가 20개대 중심에서 24~32개 중심으로 올라갔다

광고 닫기 버튼이 안 떴다

전날부터 붙잡고 있던 문제다. 방법을 세 가지 넣었고 매번 고쳐진 것처럼 보였는데, 다음 날 같은 코드에서 다시 재현됐다.

전부 광고 직전에 우리 창을 손보는 시도였다. 정작 원인은 훨씬 앞이었다.

앱을 띄우면서 화면이 자리 잡기도 전에 시스템 표시줄을 숨기고 있었다. 그러면 나중에 뜨는 광고 화면이 닫기 버튼을 그릴 자리를 못 찾는다.

“다른 게임은 표시줄 숨기는데도 광고 잘 나오잖아”라는 지적이 방향을 바꿨다. 그 전까지는 숨기는 것 자체를 의심하고 있었는데, 문제는 숨기는 시점이었다.

  • 해결: 표시줄을 숨기는 것을 첫 화면이 그려진 뒤로 미뤘다. 화면상 차이는 거의 없다
  • 확인: 숨기지 않고 띄우면 광고가 정상이고, 광고를 닫아 다시 숨긴 뒤의 광고들도 전부 정상이었다. 갈랐던 것은 앱이 처음 뜰 때의 상태 하나였다

승리 화면에서 X를 두 번 누르면 검은 화면이 됐다

다음 레벨 버튼에는 연타 방지가 있는데 X에만 없었다.

두 번 누르면 두 번째 호출이 광고가 이미 소진된 것을 보고 즉시 반환해 화면을 닫는다. 첫 번째는 아직 광고가 닫히기를 기다리는 중이라, 광고가 닫혔을 때 돌아갈 화면이 없다.

  • 해결: 연타 방지를 화면이 아니라 광고 서비스 안으로 옮겼다. 부르는 곳이 셋인데 한 곳만 빠뜨려서 난 문제다
  • 무시하는 게 아니라 기다리게 했다. 무시하면 두 번째가 먼저 끝나 같은 일이 반복된다

그 밖

  • 튜토리얼이 끝나기도 전에 광고가 떴다
    • 해결: 11탄까지는 전면 광고를 띄우지 않는다. 1탄이 튜토리얼이고 6·7·8탄에서 아이템을 처음 주는 구간이라, 그 사이를 끊으면 초반에 이탈한다
    • 보호 구간에서는 클리어 횟수도 세지 않는다. 세면 11탄에서 밀린 몫이 한꺼번에 터진다
  • 처음 앱을 연 사람에게 일일 보상 카드가 먼저 떴다
    • 해결: 처음 연 날에는 주지 않는다. 첫 판 하러 들어온 사람을 보상 화면으로 막지 않는다
    • 판정은 세션이 아니라 날짜로 한다. 세션으로 하면 앱을 껐다 켜는 것만으로 첫날에 받을 수 있다

다음에 할 일

  • 스토어 등록물·Play Console (콘텐츠 등급·데이터 보안 양식·타겟층 설정) — 영어 등록정보도 필요
  • 배포 전 디버그 모드 제거 확인
  • 레벨 동결 — 제출 전에. 지금은 레벨을 다시 만들면 500개가 전부 새로 만들어져 이미 깬 레벨의 그림까지 바뀐다

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