5. 이미지 소스 다운로드 & 툴 소개(Pixabay & Paint.net)

게임을 만들기 위해서는 많은 이미지 파일들이 필요합니다. 직접 그리거나 그래픽 디자이너를 고용한다면 가장 좋겠지만 저같은 돈 없는 공돌이 출신은 직접 해결해야 합니다. 그래서 저는 상업적으로 사용할 수 있는 무료 이미지를 다운 받을 수 있는 itch.io를 주로 이용합니다.(이미지 뿐만 아닌 폰트, 사운드 등 게임 제작시 필요한 모든 asset들을 찾을 수 있습니다.)

https://itch.io/game-assets/free

https://www.kenney.nl/assets

pixabay(무료 이미지)

다음은 이미지 파일을 다루기 위해 포토샾 같은 그래픽 툴이 필요한데, 포토샾 등 전문 이미지 툴을 다룰줄 아시는 분들은 다음 으로 바로 넘어 가시면 됩니다. 무료 이용 가능하고 사용하기 쉬운 Paint.net 을 소개해 드립니다.

Paint.net

추가로 Paint.net 에서 사용할 수 있는 Grid Maker Plugin 도 같이 사용하면 매우 유용합니다.

Grid Maker Plugin

Grid Maker Plugin에 대해 간단하게 설명 드리겠습니다. 위와 같이 먼저 레이어를 추가합니다.

‘효과’ -> ‘렌더링’ -> ‘Grid/Checkerboard’ 클릭

만들고자 하는 그리드의 픽셀 입력 후 ‘확인’ 클릭

위와 같이 그리드가 표시되게 되어 애니메이션 이미지 등을 만들 때 유용합니다. 필요에 따라 레이어를 활성화/비활성화해서 사용하시면 됩니다.

완성된 게임

1) Animal Cards

2) Finger Runner

4. 게임 액티비티 작성

‘onCreate()’ 메서드는 삭제해 줍니다.(액티비티 처음 만들 때 AppCompatActivity의 메소드로 사용하지 않습니다.)

먼저 카메라 필드를 생성하기 위해 ‘Camera’라고 치면 여러개가 드롭 다운 창이 표시되는데, ‘org.andengine,engine.camera’ 를 선택하시면 됩니다. 앞으로도 이런 경우 대부분 andengine에서 제공하는 클래스를 사용하시면 됩니다.

위와 같이 카메라 필드와 관련 변수들을 선언해 줍니다. 화면 resolution을 480 x 800 px로 낮게 개발하면 똥폰에서도 돌아갈 수 있어 많은 핸드폰에서 사용할 수 있기 때문인 것 같습니다(? 저의 뇌피셜이라 확실하지는 않습니다.)

onCreateEngineOptions() 메서드를 작성합니다.

onCreateScene() 메서드를 작성해 주면 드디어 AndEngine을 이용해 푸른색의 화면을 띄울 수 있개 되었습니다.

이제 실행을 해보기 위해 ‘Open AVD Manager’를 엽니다.

‘Create Virtual Device’ 를 눌러 줍니다.

사람들이 가장 많이 쓰겠다 싶은 휴대폰을 적당히 선택하고 ‘Next’ 를 눌러 줍니다.

사람들이 가장 많이 쓰겠다 싶은 안드로이드 버전을 골라 다운로드 받고, 다운로드가 끝나면 ‘Next’를 눌러 Virtual Device를 설치합니다.

방금 설치한 Device를 선택하고 앱을 실행(shift + F10) 합니다.

위와 같이 Virtual Device가 실행되고 푸른 배경의 화면이 보이면 성공입니다.

다음 시간에는 게임 제작에 필요한 이미지 파일을 구할 수 있는 사이트와 그래픽 툴에 대해 알려드리겠습니다.

안드로이드 스튜디오 소스

완성된 게임

1) Animal Cards

2) Finger Runner

3. 게임 액티비티 생성

이제 본격적인 게임 개발을 위한 프로그래밍을 시작합니다.

위와 같이 ‘app’ -> ‘java’ -> ‘패키지 네임’ -> ‘New’ -> ‘Activity’ -> ‘Empty Activity’를 클릭합니다.

액티비티 이름을 입력해주고, ‘Generate Layout File’의 체크는 해제해 주고, ‘Laucher Activity’는 체크해 주고 ‘Finish’를 눌러 새로운 액티비티를 생성합니다. 일반적인 앱은 화면을 표시해 주는 layout file과 로직이 들어있은 java file을 쌍으로 만드는데, 게임의 경우 java로 화면을 직접 생성하기 때문에 ‘Generate Layout File’에 체크를 해제해 layout file을 생성하지 않았습니다. ‘Launcher Activity’에 체크를 하면 앱 실행시 이 액티비티가 실행이 된다는 의미 입니다.

잠시후 ‘GameActivity’가 화면에 표시 되면 ‘AppCompatActivity’ 를 지우고 ‘SimpleBaseGameActivity’ 를 입력해 ‘GameActivity’ 가 AndEngine에서 제공하는 ‘SimpleBaseGameActivity’를 상속 받도록 해줍니다.

이렇게 하면 위 화면에서 보시는 것처럼 빨간 줄이 생기는데 이것은 ‘SimpleBaseGameActivity’를 상속받은 ‘GameActivity’에 ‘SimpleBaseGameActivity’의 필수 메서드들이 없어서 그런 것입니다. 빨간 줄 있는 곳에 마우스를 클릭하고 ‘Alt + Enter’를 누르면 드롭다운 창이 열리는데 ‘implement methods’를 클릭해주면 메서드를 선택할 수 있는 창이 나타 납니다.

필수 메서드는 이미 선택이 되어 있으므로 ‘OK’만 눌러주면 됩니다.

필수 메서드들이 자동으로 입력되고 빨간줄은 사라졌습니다.

다음 시간에는 AndEngine을 이용해 화면을 띄워보겠습니다.

완성된 게임

1) Animal Cards

2) Finger Runner

2. 개발 환경 세팅(안드로이드 스튜디오)

안드로이드 앱은 주로 Java나 Kotlin을 사용해 개발합니다.(Kotlin이 좀 더 최신 언어인 것으로 알고 있는데, Kotlin에 대해서는 잘 모르겠습니다.) 완벽하게는 아니 더라도 Java에 대해 기본은 알고 계셔야 앞으로의 내용을 이해하실 수 있기 때문에 Java를 전혀 모르시는 분들은 조금 공부하시고 오시는 것을 추천 합니다. 아래에 무료로 코딩에 대해 배울 수 있는 ‘생활 코딩’이라는 사이트 소개해 드립니다. 저도 예전에 webview를 이용해 웹사이트를 앱으로 만들기 위해 여기서 공부했는데, Java에 대해 이해하는데 많은 도움을 받아 소액이지만 후원도 조금 했습니다.

1) 생활 코딩 – Java 수업듣기

안드로이드 게임(앱)을 만들기 위해 가장 많이 사용하는 안드로이드 개발 IDE(Integrated Development Environment)인 ‘안드로이드 스튜디오’를 설치합니다.

2) 안드로이드 스튜디오 다운로드 받기

안드로이드 스튜디오 실행 후 ‘Start a new Android Studio project’ 선택합니다.

‘No Activity’ 선택 후 ‘Next’를 누릅니다.

위와 같이 게임 이름, 패키지 네임, 저장 위치, 언어, 사용 가능한 최소 안드로이드 버전 결정 후 ‘finish’를 누릅니다.

AndEngine library 를 사용하기 위해 build.gradle(Module: app) dependencies 에 implementation ‘eu.codlab:andengine:1.7.6’ 입력 후 ‘Sync Now’를 눌러 줍니다.

이제 개발 환경은 준비가 끝났습니다. 다음 회에서부터 본격적으로 게임 액티비티를 만들어 보겠습니다.

최종 완성 게임 :

1) Animal Cards

2) Finger Runner

1. 초보자의 AndEngine을 이용한 안드로이드 게임 개발(서론)

우선 이 글은 게임을 직접 개발해 보고 싶은 초보 개발자를 대상으로 합니다. 제가 비전공자이고 14년간 다른 분야(자동차 개발, 프로그래밍 쪽 아님)에서 일을 했고 프로그래밍을 독학으로 공부한지 1년도 안 되었습니다. 하지만 초보의 마음은 초보가 잘 알기 때문에 조금이나마 도움이 될 수 있을 것 같습니다.

왜? AndEngine인가? 게임을 만들려고 하는데 아는게 없으니 책을 알아보니 게임 개발 책들은 왜 다들 그렇게 두껍고 비싼지… 그래서 도서관에 가서 관련 책을 찾다가 ‘만들면서 배우는 AndEngine 게임 프로그래밍’ 이 책이 눈에 들어 옵니다.

다른 책(libGDX)도 있었지만 게임 기록을 서버에 데이터베이스로 저장하고 보여 주는 부분 때문에 AndEngine 책을 보고 공부하기로 결정했습니다. 하지만 책 내용중 서버에 데이터베이스로 저장하는 부분이 책의 내용대로 되지 않았습니다. 자세한 것은 관련 내용 설명 드릴 때 알려 드리겠습니다.(구글링을 통해 해결은 했지만 초보자인 저에게는 멘붕이었습니다.) 그래서 다른 분들은 예전에(2013년) 나온 책이다 보니 지금(2020년 5월) 상황과는 맞지 않아 헤매지 않았으면 하는 마음에 이글을 작성하게 되었습니다.

제가 AndEngine 으로 게임 개발을 하게 된 이유는 아래와 같습니다.

  1. 도서관에 관련 책이 있었다.(게임 기록 서버 저장 부분을 구현하고 싶었습니다.
  2. Java를 조금 안다.(webview를 이용해 웹사이트를 앱으로 만들어 봤습니다.)
  3. 공짜다!!!

Java를 모르고 구닥다리 엔진(AndEngine은 2015년에 개발이 중단 되었습니다.)에 관심이 없는 분들은 뒤로가기를 슬며시 누르시면 됩니다. 하지만 Java를 조금 아신다면 간단한 2D 게임 정도는 만드는데 충분히 할용할 수 있다고 생각해 이글을 쓰고 있습니다. Java를 모르고 게임 개발을 이제 막 시작하시려는 분들 중 1인 개발자나 소규모 그룹으로 게임 게발을 하시고자 하시는 분은 Unity(C#)로,(저도 요즘 조금 더 수준 높은 게임을 만들고자 이제 막 Unity를 공부하기 시작했습니다.) 게임 회사 취직이나 전문 게임 프로그래머가 되시려면 Unreal (C++, JavaScript…) 쪽으로 공부하시면 될 것 같습니다.

AndEngine을 선택하게된 이유는 여기까지 설명 드리고 다음에는 안드로이드 스튜디오 설치부터해서 개발 환경부터 설명 드리겠습니다. 제가 만든 게임은 아래에 링크 참고하세요.(공부하면서 만든 것이라 책의 예제와 유사하지만 나름대로 좀 더 게임 답게 만들고자 노력해 봤습니다.)

카드 짝 맞추기 게임 : Animal Cards

손가락으로 달리는 게임 : Finger Runner