티스토리 뷰

Game/LibGDX

08. 시작 클래스와 설정

유승구 2013. 1. 7. 11:18

시작클래스와 설정

  • 데스크탑 (LWJGL)
  • 안드로이드
    • .xml 파일
      • 타겟 SDK 버전
      • 화면 방향 & Configuratio Changes
      • 퍼미션
    • 라이브 배경화면
  • HTML5/GWT
    • 모듈 파일들
    • 로딩 화면
각각의 타겟 플랫폼의 시작클래스는 작성되어졌다. 이 클래스는 어플리케이션 상속에 관한 특별한 백엔드로 구현되있고 어플리케이션 리스너가 로직으로 상속되어있다. 시작 클래스들은 플랫폼에 의존적이므로 어떻게 각각의 백엔드에 맞게 설정되고 구현되는지를 확인해 보자.

데스크탑(LWJGL)

my-gdx-game 안에 Main.java 클래스를 열어보면 다음이 보인다.


package com.me.mygdxgame;

import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;

public class Main {
   
public static void main(String[] args) {
     
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
      cfg
.title = "my-gdx-game";
      cfg
.useGL20 = false;
      cfg
.width = 480;
      cfg
.height = 320;
               
     
new LwjglApplication(new MyGdxGame(), cfg);
   
}
}


처음에는 LwjglApplicationConfiguration이 기술되있다. 이 클래스는 다양한 환경 설정 셋팅(시작 화면 해상도, OpenGL ES 1.x 2.0 사용여부 등)이 명시되있다.  Javadocs을 참조하여 이 클래스에 대한 많은 정보를 얻을 수 있다.


구성 개체가 설정될 때 LwjglApplication은 구체화 됩니다. MyGdxGame() 클래스는 어플리케이션 리스너를 게임로직으로 구현했습니다.


라이프 사이클 챕터에서 설명한 대로 윈도우가 생성 될 때부터 어플리케이션 리스너는 수행됩니다.


안드로이드(Android)

안드로이드 어플리케이션은 진입포인트와 같은 main() 메소드를 사용하지 않습니다. 하지만 대신 Activity를 필요로 합니다. my-gdx-game-android 프로젝트의 MainActivity.java 클래스를 엽니다.


package com.me.mygdxgame;

import android.os.Bundle;

import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;

public class MainActivity extends AndroidApplication {
   
@Override
   
public void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
       
       
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        cfg
.useGL20 = false;
       
        initialize
(new MyGdxGame(), cfg);
   
}
}

메인 시작점이 되는 메소드는 Activity의 onCreate() 메소드입니다. MainActivity는 AndroidApplication(이건 다시 Activity가 그 부모가 된다.)으로부터 기원을 두고 있다는 점에 주목해야 한다. 데스크탑 시작 클래스와 같이 구성 설정 객체는 생성된다. (AndroidApplicationConfiguration). 설정 시에 AndroidAppliction.initialize() 메소드가 호출되며 ApplicationListener 뿐만 아니라 configuration도 지나간다.


안드로이드 어플리케이션은 다중 액티비티를 가질수 있습니다. libgdx 게임은 오직 하나의 액티비티로만 구현되어야 합니다. 게임의 또다른 화면은 개별적인 액티비티가 아닌 libgdx 내부에서 상속받습니다. 그 이유로는 새로운 액티비티를 생성할 때마다 새로운 OpenGL 컨텍스트를 생성하여 상속 받아야 하고 모든 그래픽 리소스를 다시 불러와야 하는데 이는 시간이 소비된다는 말과 같습니다.


AndroidManifest.xml 파일


안드로이드 프로젝트의 root 디렉토리에서 찾을 수 있는 AndroidManifest.xml 파일을 통해 안드로이드 어플리케이션을 설정합니다. 다음 내용 처럼 보입니다.


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   
package="com.me.mygdxgame"
   
android:versionCode="1"
   
android:versionName="1.0" >

   
<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="15" />

   
<application
       
android:icon="@drawable/ic_launcher"
       
android:label="@string/app_name" >
       
<activity
           
android:name=".MainActivity"
           
android:label="@string/app_name"
           
android:screenOrientation="landscape"
           
android:configChanges="keyboard|keyboardHidden|orientation">
           
<intent-filter>
               
<action android:name="android.intent.action.MAIN" />
               
<category android:name="android.intent.category.LAUNCHER" />
           
</intent-filter>
       
</activity>
   
</application>

</manifest>


Target Sdk Version


tagetSdkVersion은 6 이상으로 잡는 것이 중요합니다. 안드로이드 버전을 1.5 이상을 지원한다면 이 속성은 조정할 필요는 없습니다. 높은 안드로이드 버전은 어플리케이션이 상속된 상태로 구동될 것입니다. 불편한 환경의 저해상도 그림 영역은 실제 표시되는 화면 영역보다 작게 표시 됩니다.


화면 방향 & Configuration Changes


targetSdkVersion을 추가함으로 screenOrientation 과 configChanges 액티비티 속성이 설정됩니다.


'Game > LibGDX' 카테고리의 다른 글

[샘플분석] Action sequence  (0) 2013.08.12
[샘플분석] 가속 테스트  (0) 2013.08.12
08. 시작 클래스와 설정  (0) 2013.01.07
07. 라이프 사이클  (0) 2013.01.07
06. 어플리케이션 프레임워크  (0) 2013.01.07
05. 프로젝트 설정  (0) 2013.01.07
댓글
댓글쓰기 폼