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

오늘 한 일

  • v1.1.0 출시 — 설정에 문의하기, 하단 배너, 전면 광고 간격 조정
  • 진행 상황 클라우드 저장 구현 (구글 계정 연결, 선택)
  • v1.2.0 빌드해서 내부 테스트에 올림
  • 광고 화면이 검게 뜨고 게임이 버벅이던 원인을 찾아 고침

막힌 부분

로그인이 안 뚫리는데 이유가 매번 달랐다

진행 상황을 계정에 저장하려면 게임 서비스에 로그인이 돼야 한다. 붙였는데 안 됐고, 고칠 때마다 다른 이유로 또 안 됐다. 네 군데를 전부 맞춰야 했다.

첫째, 서명 지문마다 인증 정보가 따로 필요하다. 서비스는 앱이 어떤 열쇠로 서명됐는지로 신원을 확인하는데, 이 앱은 열쇠가 넷이다 — 올릴 때 쓰는 것, 스토어가 배포용으로 다시 서명하는 것 둘, 그리고 개발 중에 쓰는 것. 개발용을 빠뜨려서 내 폰에서만 안 됐다.

둘째, 서비스를 앱 시작 때 한 번 초기화해야 한다. 쓰는 라이브러리가 그걸 대신 해 주지 않는데 문서에도 안 적혀 있다. 공식 문서 3단계를 보고서야 알았다.

셋째, 동의 화면을 정식으로 공개해야 한다. 브랜딩을 채우고, 방침·약관 주소를 넣고, 그 주소의 도메인 소유를 인증하고, 그다음 공개. 하나라도 빠지면 목록에 등록된 사람만 된다.

넷째, 콘솔에서 저장 기능을 켜고 테스터를 등록해야 한다.

  • 네 군데가 각각 다른 증상을 낸다. “로그인이 안 된다”는 하나인데 원인은 넷이었다
  • 로그에 찍히는 요청 주소를 보면 빠르다. 어느 프로젝트를 보고 있는지, 무엇을 요구하는지가 한 줄에 나온다

로그인은 성공했는데 실패로 처리했다

넷을 다 맞추고 나서 화면에 구글 환영 인사가 떴다. 그런데 앱 안내는 “연결하지 못했습니다”였다.

성공 판정이 반대로 짜여 있었다. 쓰던 함수는 성공하면 문자열을 돌려주고 실패는 예외로 던지는데, “성공하면 빈 값”으로 짐작한 채로 짜여 있었다.

그래서 로그인은 됐는데 그 뒤의 동기화도 보상 지급도 통째로 건너뛰었다.

  • 반환값 규약은 짐작하지 않는다. 라이브러리 코드를 열어 보면 몇 줄이면 확인된다
  • 겉으로 성공한 것과 앱이 성공으로 읽는 것은 다르다. 화면에 환영 인사가 뜬 게 단서였다

광고 화면이 껍데기만 뜨고 검게 남았다

전면 광고로 넘어가긴 하는데 타이머와 닫기 버튼만 있고 안이 검었다. 게임도 평소보다 버벅였다.

로그를 보니 오류가 딱 하나 있었는데 배너 쪽이었다. 2초마다 같은 오류가 반복됐다. 광고 안의 스크립트 연결이 끊겼다는 뜻이다.

원인은 게임 화면은 모래가 움직여야 하니 초당 60번 다시 그리는데, 배너를 그 안에서 매번 새로 만들고 있었다. 광고 뷰가 초당 60번 갱신 대상이 된 셈이다.

전면 광고도 같은 기반을 쓰기 때문에 배너가 무너지면 같이 무너진다. 증상이 셋으로 흩어져 나왔지만 원인은 하나였다.

  • 배너 위젯을 한 번만 만들어 들고 있게 했다. 같은 것을 넘기면 그 자리를 통째로 건너뛴다
  • 자주 다시 그리는 화면에 남의 뷰를 넣을 때는 그 뷰가 같이 다시 그려지는지 본다

없던 문제를 개선 과정에서 만들었다

며칠 전 성능을 재보려다 도구가 틀려서 못 쟀고, 실기기에서 버벅임이 없어 그 항목을 보류로 내렸다.

그런데 지금 버벅인다. 그때 확인한 빌드에는 배너가 없었다. 원래 있던 문제가 아니라 그 뒤에 넣은 것이 만든 것이다.

  • 성능이 괜찮다고 확인한 시점 이후에 무엇을 넣었는지가 중요하다. 확인은 그 시점의 빌드에 대한 것이지 지금 빌드에 대한 것이 아니다
  • 새 요소를 넣을 때 “그때 괜찮았으니 지금도 괜찮다”고 넘기지 않는다

고쳤더니 화면이 움찔거렸다

광고를 띄우기 직전에 시스템 표시줄을 되돌리는 처리가 있다. 닫기 버튼이 화면 밖에 그려지던 문제를 잡으려고 넣은 것이다.

진짜 원인은 나중에 따로 밝혀져서 고쳤으니 이건 이제 필요 없을 줄 알고 빼 봤다. 그랬더니 승리 화면에서 띄우는 광고에서만 닫기 버튼이 안 떴다. 게임 화면에서 띄우는 것은 멀쩡했다.

되돌렸다. 시작 시점 문제는 원인이었고, 이건 매번 필요한 준비였다. 둘 다 필요했다.

대신 그 대가인 움찔거림을 없앴다. 표시줄이 나타나면 화면에서 쓸 수 있는 영역이 줄어 판이 다시 계산되는데, 광고를 띄우는 동안 그 영역 값을 직전 상태로 고정했다. 그러면 표시줄이 들락거려도 배치가 아예 안 움직인다.

  • 처음엔 그 위를 배경색으로 덮어 가리려 했는데 부족했다. 덮어도 움직임 자체는 남는다
  • 가리는 것과 안 움직이게 하는 것은 다르다. 원인을 없앨 수 있으면 그쪽이 낫다

다음에 할 일

  • 내부 테스트 빌드로 로그인 확인 — 스토어 서명 경로는 아직 안 통과해 봤다
  • 게임 서비스 게시 — 안 하면 등록된 테스터만 로그인된다
  • 데이터 보안 양식 갱신 — 방침과 어긋나면 그 자체가 위반이다
  • 도안 검토해서 교체 목록 확정
  • 소프트 런칭
  • 광고 제거 상품 — 리텐션과 광고 노출 수를 보고 판단
  • 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