카테고리 보관물: Unity

애드몹(Admob) 의도하지 않은 클릭을 유도하는 레이아웃 – 예기치 않은 전면 광고 실행 조치 방법

개요

간단한 기능을 하는 앱에 애드몹 전면광고가 삽입되어 있었습니다. 어느 날 “귀하의 앱에서 Google AdMob 광고 게재가 중지되었습니다” 라는 제목으로 메일이 왔습니다. 내용을 살펴보니 “의도하지 않은 클릭을 유도하는 레이아웃 – 예기치 않은 전면 광고 실행” 이라고 안내되어 있었습니다. 영문으로는 Layout Encourages Accidental Clicks – Unexpected Launch Interstitials 입니다.

내용 파악

복잡한 기능을 하는 앱이 아니어서 무엇이 문제인지 처음에는 잘 몰랐습니다. 생각해 보니 전면광고가 나타나는 시점을 약간 조정했는데 그것이 문제가 된 것 같았습니다. 우측 상단의 설정 버튼을 제외하고 화면상에 터치가 필요한 앱이 아니었습니다.

처음 앱이 실행되었을 때 사용자가 무심코 화면을 터치하려는 순간 전면광고가 나타나서 의도하지 않은 광고 클릭이 될 수 있다는 생각이 들었습니다. 당연히 의도한 것은 아니었고 가능성은 낮지만 충분히 일어날 수 일이라는 판단이 들어 조치에 들어갔습니다.

첫 번째 조치

지연 시간을 없애고 광고가 완전히 준비된 후 표시가 가능할 때 나타나도록 수정했습니다. 지연 시간을 둔 이유는 광고가 나타나지 않는 현상이 있어서 그랬는데 결과적으로 문제가 되었습니다.

앱 수정 및 업데이트하고 반영된 것을 확인 후 검토 요청을 했습니다. 그러나 거부 메일이 또 다른 위반 사항이 추가되어 도착했습니다.

“게시자 콘텐츠보다 광고나 기타 유료 프로모션 자료가 더 많은 화면 이라는 위반 사항이 추가되었습니다.” 라는 내용이었습니다. 자세한 사항은 이곳에서 확인하실 수 있습니다. 요약하자면 앱에서 제공하는 내용보다 광고가 차지하는 영역이 많다는 것 입니다. 영문으로는 More ads or paid promotional material than publisher-content 입니다.

두 번째 조치

두 개의 문제를 어떻게 해결해야 할지 난감했습니다. 무엇이 문제일까 고민을 해 보았는데 광고가 나타나는 시점을 사용자가 예측할 수 없다는 것이 제일 큰 것 같았습니다. 가장 먼저 앱의 기능이 화면에 표시되고 그 후에 광고가 나타나는데 상황에 따라 빠를 수도 늦을 수도 있을 것 같았습니다.

고민 끝에 앱 기능과 광고가 나타나는 시점을 아예 분리하기로 했습니다. 광고의 준비, 표시, 실패 등 관련된 이벤트가 발생한 후 앱의 본 기능이 작동하도록 수정했습니다. 그리고 추가된 위반사항에 대한 것도 앱의 내용이 나타나기 전에 광고가 나타나므로 문제가 해결될 것 같았습니다. 다시 업데이트하고 반영된 것을 확인한 후 다시 검토 요청했습니다.

대략 한 시간 조금 지나서 문제가 없다는 메일을 받았고 앱에서 전면광고가 나타나는 것을 확인했습니다.

위반 해결 알림 메일

구글에서 위반 메일을 받으면 당황하게 됩니다(필자는 그랬습니다). 약간 막연하지만 차분히 생각해 보면 대부분 해결책을 찾을 수 있을 것 입니다.

위에 언급한 두 가지 위반 사항으로 고민하시는 분들께 도움이 되었으면 합니다.

Final Space Hero

개요

이전에 소개한 고전 우주 슈팅 게임을 제작하고 최적화 작업을 마친 후 어떤 게임을 제작할지 생각해 보았습니다. 세로 스크롤 게임을 만들었으니 가로 스크롤 게임을 만들어 보자는 생각이 들었고 바로 기획에 들어갔습니다. 이름은 Final Space Hero 로 정했습니다.

기획

1인 개발이라서 기획이라고 할 것도 없었지만 적의 유형, 장애물, 보스 등 기본적인 것들에 대한 것을 정리했습니다. 이전 게임에는 없었던 아이템도 추가했습니다. 그리고 난이도에 영향을 줄 수 있는 부분과 게임 플레이 시간을 측정했습니다. 적절한 분량이 되도록 전체적으로 구성했습니다.

Final Space Hero 메인화면

그래픽

이전에 그래픽 작업때문에 너무 고생을 해서 뭔가 좋은 방법이 없을까 고민을 많이 했습니다. 가장 좋은 것은 한땀한땀 만드는 것이지만 프로그래밍을 주로하는 필자로서는 너무 노력이 많이 들고 수정하기가 정말 어려웠습니다.

그래서 생각한 것이 Blender 를 이용해서 기본적인 모양을 만들고 렌더링 기능을 이용해서 원하는 크기의 이미지로 저장되도록 했습니다. 실력이 부족해서 도트 그래픽 느낌을 낼수는 없었지만 개인적으로 만족할만한 결과물이 나왔습니다.

Final Space Hero 게임화면

프로그래밍 및 최적화

이전 게임의 최적화 작업을 진행하면서 알게된 부분을 최대한 반영해서 스크립트를 최대한 효율적으로 동작하도록 작업했습니다. 특히 Update, FixedUpdate 메소드에서 필요없는 반복적인 부분을 배제했습니다.

유니티 자체의 설정도 최대한 모바일 2D 게임에 맞추어 조정했습니다. 실기기를 연결해서 프로파일러를 통해 문제가 없는지 확인하는 작업을 계속 반복했습니다. 매우 시간이 오래걸리고 지루했지만 아주 중요한 작업이라는 것은 이전에 깨달았기에 참을 수 있었습니다.

효과음 및 음악

효과음은 생성 프로그램을 이용해서 만들었습니다. 이전 포스팅을 통해 소개한 프로그램이 있으니 그것을 참조하시면 됩니다.

음악은 iPhone 과 iPad에 있는 GarageBand 앱을 이용해서 만들었습니다. 기본 음악지식이 매우 부족한 필자로서는 느낌만으로 음악을 만들 수 있었습니다. 물론 프로그램을 익히고 익숙해지는데 시간이 걸렸습니다. 쉽게 음악을 만들 수 있는 잘 만들어진 프로그램이라는 생각이 들었습니다.

기타 등등…

처음에는 세로를 가로로 돌리기만 하면되니까 쉽지 않을까 생각했습니다. 역시나 실제 만들어보니 쉬운것이 아니었습니다.

아이템 기능도 처음 만들어 봤는데 고려해야 할 사항이 생각보다 많고 쉽지 않았습니다. 그래도 이전에 있었던 경험이 있어서 그런지 처음 게임을 만들때보다 어려움은 조금 덜 했던 것 같았습니다.

중점을 두었던 것이 많은 테스트와 최적화 작업이었습니다. 굉장히 고되고 지루한 작업이었지만 완성도를 높이기 위한 중요한 작업이라는 것을 몸소 체험했기에 참을 수 있었습니다.

많은분들이 스트레스 없이 재미있게 플레이하시면 좋겠습니다.

다음의 주소에서 확인하실 수 있고 게임이 끝나면 광고가 나타납니다.

https://play.google.com/store/apps/details?id=jaeyoung.kim.finalspacehero