[libGDX] libGDX 시작하기

libGDX - 크로스 플랫폼 자바 게임 프레임워크

안드로이드 게임 프레임워크는 여러가지가 있는데 2D 게임 프레임워크에서 최강은 libGDX라고 생각됩니다. [libGDX 시작하기]를 옛날에도 올린적이 있지만 2년전 포스팅이라서 굉장히 낡았습니다. libGDX는 그 이후 굉장한 발전을 이루었고 많은 변화가 있었습니다. 프로젝트 세팅을 하는 법 부터 크게 바뀌었기 때문에 다시 포스팅을 하려고 합니다.

libGDX란?

libGDX는 윈도우, 리눅스, 맥, 안드로이드, 아이폰, html5, 블랙베리등 다양한 플랫폼에서 동작하는 게임 프레임워크입니다. 이 프레임워크의 창시자인 Mario Zechner씨는 시작하세요 안드로이드 게임 프로그래밍이라는 책의 저자이기도 합니다. 안드로이드 게임 제작에 상당한 노하우를 가지고 계신 분이고 libGDX에 이 노하우들이 녹아들어가 있습니다.

libGDX의 최대강점은 크로스 플랫폼입니다. 플랫폼을 추가할때마다 추가되는 코드는 10줄이 되지 않습니다. 그리고 모든 플랫폼에서 게임이 동일하게 작동합니다. 그래서 안드로이드 게임 개발을 할때 안드로이드폰이나 에뮬레이터를 쓰지 않고 데스크탑에서 바로 디버깅을 할 수 있습니다. 데스크탑에서 바로 디버깅이 가능하기 때문에 생산성이 굉장히 향상됩니다. 앱을 실행할때 시간 지연이 거의 없이 실행할 수 있기 때문이고, JVM의 강력한 디버깅 기능들을 사용할 수 있기 때문입니다. JVM의 디버깅 기능들에 대해서는 나중에 따로 포스팅을 하겠습니다.


Setup 프로그램 이용하기

jar 파일을 다운받아서 build path에 추가하던 예전 방식과 달리 현재 방식은 gradle 빌드 시스템을 이용해서 Maven Central에서 직접 라이브러리를 갖어옵니다. 먼저 libGDX 다운로드 페이지에 가보면 gradle 프로젝트를 자동으로 만들어 주는 간단한 프로그램을 배포하고 있습니다. Download Setup App이라는 버튼을 누르면 gdx-setup.jar 이라는 프로그램을 다운로드 합니다. 해당 프로그램을 실행시키면 다음과 같이 나옵니다.


gdx-setup.jar을 실행한 모습


프로그램이 실행되면 필드들을 채워줍니다.

  • Name: 어플리케이션의 이름입니다.
  • Pakcage: 기본 패키지 이름입니다.
  • Game class: 메인 클래스의 이름입니다.
  • Destination: 프로젝트를 생성할 경로입니다.
  • Android SDK: 안드로이드 sdk의 경로입니다. 안드로이드 sdk가 설치되어 있는 경로를 지정해 주면 됩니다.
  • LibGDX Version: libGDX 버전입니다. 왠만하면 최신버전으로 하는게 좋겠죠.
  • Sub Projects: 프로젝트를 생성할 플랫폼들입니다.
  • Extensions: 추가할 라이브러리들 입니다. 원하는 라이브러리들만 선택하면 됩니다. libGDX에서 제공되는 추가 라이브러리에 대해서는 나중에 따로 포스팅하겠습니다.

Generate 버튼 옆에 Advanced 버튼이 있는데, Advanced 버튼을 누르면 IDE 프로젝트를 선택할 수 있습니다.



저는 IntelliJ IDEA를 이용해서 개발할것이기 때문에 IDEA를 선택했습니다.

필드를 다 채웠으면 Generate를 눌러서 프로젝트를 생성합니다.


gdx-setup이 프로젝트를 생성하였다.


Generate 버튼을 누르면 프로젝트가 생성되기 시작합니다. 이때 libGDX의 코어 라이브러리, 플랫폼 라이브러리, 확장 라이브러리들이 모두 다운로드 되기 때문에 시간이 좀 걸립니다. 저는 위에서 보다시피 3분정도가 걸렸습니다. 프로젝트가 생성되었으면 이제 프로젝트를 열어서 작업하면 됩니다.

libGDX 실행하기

이제 생성된 프로젝트에를 실행해 보도록 하겠습니다. 여기서는 intelliJ IDEA를 기준으로 설명하겠습니다. (참고로 이클립스로 작업하려면 이클립스 gradle 플러그인이 필요합니다. 이클립스 플러그인 추가에서 update site로 http://dist.springsource.com/release/TOOLS/gradle를 추가하면 됩니다.)

먼저 IntelliJ IDEA를 실행한 후 Open Project를 클릭합니다.


IntelliJ 에서 Open Proejct를 하자


그리고 나서 gdx-setup으로 생성된 프로젝트를 선택하고 OK 버튼을 누릅니다.


gdx-setup이 생성한 프로젝트 열기


그러면 아래와 같이 프로젝트가 열립니다. Gradle 모듈들로 android, core, desktop, html, ios가 생성된 것을 확인할 수 있습니다. 현재 이 프로젝트는 가장 기초적인 뼈대는 완성되 있는 프로젝트이기 때문에 바로 실행해 볼 수 있습니다.


gdx-setup이 생성한 기본 프로젝트


desktop 모듈에 들어가서 DesktopLauncher 클래스를 찾아 줍니다. DesktopLauncher는 데스크탑에서 libGDX 게임을 실행하는 클래스입니다. 클래스에서 오른쪽 버튼을 누르면 Run 버튼이 나옵니다. Run 버튼을 누르면 게임을 시작할 수 있습니다.


Desktop Launcher를 실행해보자


실행하면 빌드를 하고 게임을 실행합니다. 하지만 게임을 실행하면 바로 죽어버립니다. 에러 메세지를 살펴보니 다음과 같이 써져 있습니다.

com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: badlogic.jpg

이것은 working directory가 설정되지 않았기 때문입니다. 기본적으로 libGDX는 모든 asset 파일들을 android/assets에 저장하도록 하고 있습니다. 그렇기 때문에 실행을 할때 모듈의 working directory에서 실행하면 안되고 android/assets에서 실행되도록 해야합니다.

이 문제를 해결하기 위해서 먼저 오른쪽 상단에서 Edit Configuration 버튼을 클릭해줍니다.


오른쪽 상단의 Edit Configuration을 클릭


그러면 창 하나가 뜨는데 중간에 Working directory를 설정하는 부분이 보입니다. 해당 필드의 오른쪽에 … 버튼을 클릭합니다.


working directory 설정하기


그리고 android 폴더의 assets 폴더를 클릭하고 OK 버튼을 누릅니다. 그러면 working directory가 제대로 설정됩니다.


working directory를 android/assets으로 설정


다시 DesktopLauncher를 실행한 모습입니다. 제대로 libGDX 가 실행되는 것을 확인할 수 있습니다.


libGDX 기본 화면


마치면서

libGDX는 1.0에 들어오면서 완전히 새로운 시스템으로 갈아탔습니다. libGDX 프로젝트를 gradle 프로젝트로 생성되도록 전면 개편이 되었습니다. Gradle 시스템으로 바뀌면서 많은 사람들이 어려워하고 불편해 하는것 같습니다. 하지만 gradle는 굉장히 확장성이 좋고 익숙해지면 굉장히 사용하기 편한 빌드시스템입니다. 라이브러리 관리도 mavenCentral과 직접 연동이 되기 때문에 한줄 추가로 라이브러리를 바로바로 추가할 수 있습니다. Gradle에 생소하신 분들은 새로운 프로젝트 생성 방법이 좀 어려울 수 도 있을것 같지만, gdx-setup이라는 훌륭한 프로젝트 생성 도구도 제공해 주니 조금만 공부하면 쉽게 할 수 있을거라고 생각합니다.



저작자 표시
신고

'프로그래밍 > libGDX' 카테고리의 다른 글

[libGDX] libGDX 시작하기  (4) 2014.05.23
[libGDX] 안드로이드 네이티브 UI 사용하기  (11) 2013.12.16
[libGDX] 입력 처리  (1) 2013.12.14
[libGDX] 파티클 에디터  (0) 2013.12.09
[libGDX] 곡선 함수  (0) 2013.12.03
[libGDX] PCM으로 오디오 녹음/재생하기  (2) 2013.11.21
  • yunhs 주소 수정/제거 답글달기 2014.07.04 10:38 신고

    강좌 잘 봤습니다. 저도 게임개발 출신임에도 이런저런 프레임워크를 많이 사용해보지 못해서 고민이었는데 어느정도 해소가 되는거 같습니다. 혹시 ios용 게임이 있는지 여부를 확인해주실수 있으신가요? 회사차원에서 한번 건의를 해보고자 하는데 안드로이드야 어느정도 레퍼런스가 있는거 같습니다만 ios는 아직 확인이 안되어 멀티플랫폼 차원에서 말씀드리기가 좀 애매하네요 ㅜㅜ

  • skara 주소 수정/제거 답글달기 2014.07.06 23:05 신고

    libgdx. 다 좋은데, 최신 버전에서 더 이상 GL 1.x을 지원하지 않는다고 해서 좀 실망했습니다.
    물론 GL 1.x에 신경을 많이 써 주길 바란 건 아니지만, 지원을 아예 끊어 버리다니...
    http://www.badlogicgames.com/wordpress/?p=3311

    • Favicon of http://edoli.tistory.com 소리미아 에돌이 주소 수정/제거 2014.07.07 09:07 신고

      GL 1.x 가 기능적으로 많이 부족해서 GL 1.x 를 계속 지원하는것은 좀 힘들어 보이긴 했어요. 사실 게임 개발할때 거의 GL 2.x 이상을 기준으로 개발하기도 하고, 이제 GL 1.x 기기는 거의 남아있지 않으니 지원을 끊는게 앞으로의 발전을 위해서 필요한 선택이었다고 생각합니다.

  • uuu 주소 수정/제거 답글달기 2014.08.01 18:19 신고

    .

비밀 댓글

티스토리 툴바