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

오늘 한 일

  • v1.2.0 출시 — 진행 상황 클라우드 저장
  • 며칠 쫓던 광고 닫기 버튼 문제와 화면 흔들림을 해결
  • 동생이 지적한 도안 색 여섯 개를 원본대로 복구하고, 색이 뭉개지던 파이프라인을 고침
  • 로그스톤 샵에 방침 정정과 제품 페이지 문구 교체를 요청하고 반영 확인

막힌 부분

범인이 어제 넣은 수정이었다

광고 닫기 버튼이 안 그려지는 문제를 며칠 쫓고 있었다. 어제 두 가지를 넣었는데 — 광고 중에 화면 영역을 얼리는 것과, 전면 광고에만 특정 신호를 빼는 것 — 오늘 보니 그 둘이 각각 새 증상을 만들고 있었다.

둘 다 되돌리니 네 번 연속으로 정상이었다.

고치려고 넣은 것이 새 증상을 만들면 원인 추적이 통째로 엉킨다. 원래 증상을 보고 있다고 생각했는데 실제로는 그 수정이 만든 부작용을 보고 있었던 거다.

  • 한 번에 한 가지만 바꾼다. 두 개를 다른 변경과 섞어 넣어서 어느 것이 무엇을 깼는지 늦게 갈렸다
  • 고치는 시도가 실패하면 되돌리고 다음으로 간다. 남겨 두면 다음 시도의 관측을 오염시킨다

대조군을 안 돌렸으면 엉뚱한 걸 범인으로 적을 뻔했다

중간에 화면 아래 배너를 의심했다. 배너를 끄고 광고를 띄웠더니 두 번 다 정상이었고, 로그에 있던 오류도 0건이 됐다. 증상과 로그가 같이 움직였으니 꽤 그럴듯했다.

그런데 배너를 다시 켠 상태로도 두 번 다 정상이었다. 가설이 죽었다.

  • “끄니까 된다”는 절반이다. “켜니까 안 된다”까지 봐야 닫힌다
  • 로그가 증상과 같이 움직이는 것처럼 보여도 대조군이 없으면 우연과 못 가른다
  • “배너 없던 시절에도 이 증상이 있었다”는 걸 떠올린 게 큰 도움이 됐다. 그게 아니었으면 두 번 성공만 보고 배너를 걷어내고 잘못된 원인을 기록했을 것이다

화면이 흔들린 진짜 이유

게임 중에 그림이 미세하게 떨린다는 이야기가 있었다. 처음엔 광고 전환 때만 그런 줄 알았는데 평소에도 났다.

원인은 안전영역이 시스템 표시줄을 따라 움직이는 것이었다. 이 게임은 표시줄을 숨기고 화면을 다 쓰는데, 화면 가장자리를 건드리면 표시줄이 잠깐 나타난다. 그때마다 쓸 수 있는 영역이 변하고 판이 다시 계산된다. 손이 아래쪽 통을 자주 건드리니 계속 났다.

세 가지를 시도했고 각각 대가가 달랐다.

  • 광고 중에만 고정 — 광고 전환은 잡히는데 게임 중은 그대로

  • 표시줄이 차지하는 자리를 늘 비워 두기 — 안 흔들리지만 화면이 좁아짐

  • 값을 고정하되 위쪽만 남기기 — 크기는 그대로면서 흔들림만 사라짐. 이걸로 확정

  • 배치가 흔들리면 배치 코드를 보기 전에 “입력값이 흔들리는가”를 본다

  • 처음엔 그 위를 배경색으로 덮어 가리려 했는데 부족했다. 덮어도 움직임 자체는 남는다


색이 뭉개지던 원인이 넷이었다

동생이 “게임에 들어간 색이 원본과 다르다”며 여섯 개를 짚어 왔다. 전수 조사하니 원인이 넷 겹쳐 있었다.

첫째, 배경이 흰색에 가까웠다. 안 채운 칸은 배경색으로 보이니 그림 색이 배경과 비슷하면 구별이 안 된다. 그래서 최소 거리를 강제하면서 흰 부분을 어둡게 눌렀다. 호랑이 흰 얼굴이 68% 밝기로 눌린 게 이것이다.

둘째, 면적이 작은 색은 지웠다. 색마다 통이 하나씩 생기니 몇 칸을 위해 통을 쓰지 않으려는 규칙인데, 호랑이 코와 떡볶이 파가 여기 걸렸다.

셋째, 비슷한 색끼리 합쳤다. 떡볶이 양념 두 색이 하나가 됐다.

넷째, 색을 줄이는 과정이 상한 안에서도 두 색을 평균으로 묶었다. 한복 치마 그림자와 태극기 빛 반사가 이렇게 사라졌다.

  • 배경은 앱이 만드는 값이고 그림은 받은 데이터다. 못 맞추면 배경을 옮기는 게 맞다
  • 동생 그림은 색이 한 칸씩 정확히 찍혀 있어서 색 줄이기 자체가 필요 없었다. 상한 이내면 건너뛰게 했다

두 단계가 서로를 덮고 있었다

배경을 지정하고 다시 넣었는데도 색이 그대로 뭉개졌다.

그림을 등록하는 단계와 배경을 적용하는 단계가 따로 있는데, 뒤 단계가 원본에서 다시 처리하면서 앞 단계의 결과를 통째로 덮고 있었다. 손그림용으로 만들어 둔 처리가 매번 날아간 거다.

  • 같은 데이터를 두 단계가 각각 처리하면 뒤가 앞을 지운다. 어느 쪽이 최종인지 하나로 정한다
  • 그런 구조는 각 단계만 보면 다 맞게 동작한다. 이어서 돌려야 드러난다

여섯 중 넷만 고치고 끝낼 뻔했다

동생이 보낸 목록이 여섯이었는데 넷만 처리하고 다음으로 넘어갔다. 목록을 다시 대조하다 “태극기 빛 반사 색은 원본에 있다”를 마저 잡았다.

  • 받은 목록은 항목 수를 세고 다 처리했는지 대조한다. 하나씩 처리하다 보면 끝난 줄 안다

색이 늘면 난이도가 바뀐다

색을 살리니 통이 늘었다. 통이 늘면 그 판이 어려워진다.

여섯 판을 다시 만들어 목표 난이도와 대조했고 다섯이 맞았다. 하나는 못 맞췄다 — 그 그림이 화면을 꽉 채워서 벽을 놓을 자리가 없었고, 벽 예산을 늘려도 그대로였다.

  • 예산을 늘려도 안 되면 배치 한계다. 숫자를 더 키우는 것은 의미가 없다
  • 못 맞추는 것은 혼자 정하지 않고 확인받는다. 이번엔 “그대로 간다”로 정해졌다

다음에 할 일

  • 며칠 지표 확인 — 클라우드 저장 연동률, 크래시·ANR, 광고 노출 수
  • 도안 추가 검토 — 동생이 다음 묶음을 보내면
  • 광고 제거 상품 — 리텐션이 쌓이면 판단
  • 100탄씩 추가 배포

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