저의 경우 AndEngine 을 이용해 게임 완성 후 구글 플레이 등록시 심한 멘붕을 격었습니다.
바로 위와 같이 힘들게 만든 게임이 64비트 요구 사항을 준수하지 않아 등록이 불가능하다는 것이 었습니다. 그래서 구글링을 해서 찾아 보니 다행히 해결책을 찾을 수 있었습니다.
Gradle Scripts -> build.gradle(Module: app) 에 위와 같이 작성 후 Sync Now를 누르고 앱을 빌드하면 오류가 사라져 정상적으로 게임 등록이 가능해 집니다.(구글링을 해보니 문제가 되는 32비트 네이티브 코드는 사용이 안 되니 제외 시키면 된다 뭐 그런 내용이었습니다. -> 저도 초보라 100% 이해를 못해 설명이 허접한 점 이해 부탁합니다.)
이로써 게임 한개를 완성해 봤습니다. 다음 시간부터는 Finger Runner 라는 게임을 예제로 지금까지 다루지 않았던 AndEngine 기능을 중심으로 설명 드리겠습니다.
Gradle Scripts -> build.gradle(Module: app) -> dependencies에 우와 같이 AdMob library를 추가해 주고
multiDex를 지원하도록 위와 같이 입력 후 Sync now를 눌러 줍니다.
AdMob에 접속해 앱을 추가하고 본인의 app ID 발급 받습니다.
manifest에 본인의 app ID를 입력해 줍니다.
광고로 사용할 일반적인 안드로이드 activity를 추가하고, activity를 manifest에도 추가해 줍니다.
위와 같이 광고 종류에 따른 광고 단위 ID를 입력해 줍니다.(여기서는 메인 메뉴에서 게임 시작을 눌렀을 때 광고 화면을 보여 준 후 게임을 시작하도록 전면 광고를 사용했습니다.)
광고 로딩이 끝나면 광고가 재생되도록 위와 같이 작성해 주고
광고를 클릭했을 때와 광고를 닫았을 때 게임 Activity로 돌아가도록 위와 같이 작성해 줍니다.
게임 시작 버튼을 눌렀을 때 광고 Activity가 실행되도록 MainActivity 를 수정해 줍니다.
test ID를 이용하거나 Virtual Device에서는 위와 같이 테스트 광고가 나오지만, 실제 폰에서는 일반 광고가 보여 집니다. 여기에서 주의해야할 것이 있는데, 개발자가 자기 광고를 클릭하거나 링크를 다른 사람에게 보내 클릭을 유도하면 AdMob 계정이 정지될 수 있으니 실수로라도 실제 광고를 클릭하지 않도록 조심해야 합니다.
이번 시간에는 지난 시간 작성한 PHP 파일을 이용해 게임 기록을 DB에 저장하도록 GameActivity를 수정해 보겠습니다.
지난 번에 게임 플레이 시간을 보여 주기 위해 작성했던 registerUodateHandler() 메서드 안에 게임 기록을 저장하는 saveScore()라는 메서드를 넣어 줍니다.
saveScore() 라는 메서드를 위와 같이 작성하고 게임 기록을 DB에 저장하는 saveRecord() 메서드도 넣어 줍니다.
앱에서 웹서버에 접속하기 위해 HttpClient library가 필요합니다. 아래 링크에서 다운로드 받으시면 됩니다.(처음에 최신 버전인 5.0으로 시도해 봤는데 명령어 같은 게 바뀌었는지 안되서 아래 4.5.12 버전을 사용했습니다. -> 제가 서버관련해서는 아는게 별로 없어 이렇게 저렇게 시도해 보다 찾은 방법이라 설명이 부족한 점 이해 부탁 드립니다.)
이번 시간에는 게임 기록을 서버에 저장하고 서버에 저장된 기록을 웹 페이지에 표시해 webview를 이용해 앱에서 볼 수 있도록 만들어 보겠습니다. 저의 경우 이 부분에서 책이 옛날 책(2003년)이다 보니 책대로 되지 않아 가장 많이 헤맸습니다. 다른 분들은 저처럼 헤매지 않았으면 하는 마음에 이 가이드를 작성하게 되었습니다.
이 내용을 이해하기 위해서는 PHP, SQL, HTML(CSS & JavaScript) 대해 조금 알고 있는 것이 좋습니다. 이런 내용에 대해 제 설명이 부족해(저도 자세히 설명해 드리고 싶지만 저도 지식이 부족해서 자세히 설명 못해드리는 점 양해 바랍니다.) 이해가 가지 않는 내용이 있으시면 이전에 소개해드린 생활코딩 이라는 사이트에서 무료로 학습이 가능하오니 참고하십시오.
먼저 게임 기록을 저장하는 DB 서버를 구축해야합니다. 저의 경우는 이미 웹호스팅 서비스를 이용하고 있어서 그걸 그대로 이용했습니다. 직접 자신의 컴퓨터를 DB 서버로 만들려면 생활코딩 PHP 설치 강의를 참고하십시오.
DB 서버 구축 후 게임 기록을 저장할 DB와 table을 만들고, 게임 데이터를 서버에 저장하는 PHP를 작성합니다. 코드 작성시 특별히 선호하는 editor가 없으신 분들은 간단히 코드 작성하기 좋은 MS에서 만든 Visual Studio Code 추천 드립니다.
먼저 DB 접속 부분을 먼저 작성합니다. username, password는 보안에 관련된 내용이라 외부에 공개되지 않도록 주의합니다.
이번 시간에는 게임 플레이 타임을 화면에 실시간으로 보여주도록 만들어 보겠습니다. 현재 4장의 카드만 사용하는 상황에서 플레이 타임이 의미가 없지만 사용하는 카드가 많아지면 게임 시간을 측정해 기록으로 저장해 서로 실력을 겨룰 수 있게 만들면 좀 더 재미 있는 게임이 될 것입니다.
게임 기록을 저장한 text와 게임 시간을 계산하기 위한 변수들을 선언해 줍니다. 폰트는 지난 시간에 만들었던 게임 이름과 같은 폰트를 사용하겠습니다.
카드 터치 영역에 짝이 맞은 카드 수를 계산하는 로직을 작성해 줍니다.
위와 같이 작성해 주면 플레이 타임이 계산되고 화면에 보여집니다. 여기에서 중요한 것은 registerUpdateHandler() 메서드 인데, 이전에는 실행에 지연 시간을 줄 때 사용했었고 이번 시간에는 어떤 조건이 만족하는지 계속 모니터링하는 기능을 이용해 플레이 타임을 계산하는데 사용했습니다.