Hello, AndEngine

안드 엔진의 최신 버전은 GLES2를 사용하는 Anchor Center이다. 다음의 위치로부터 소스코드를 다운로드 받을 수 있다.
https://github.com/nicolasgramlich/AndEngine/tree/GLES2-AnchorCenter
소스 코드를 열어보면 알 수 있겠지만, API 문서도 없고 또한 주석도 없다. 헐~. 그나마 다행인 것은, 엔진의 소스 코드는 꽤 깔끔하게 짜여져 있으므로 소스코드의 변수명 등을 통해서 충분히 이해할 수 있는 수준이긴 하다.

안드 엔진은 하나의 액티비티 내에서 게임 상황따라 장면을 교체해 나가는 방식으로 작동한다. 그러므로 일반적인 앱과 마찬가지로, 안드엔진을 사용한 게임 개발은 액티비티부터 시작된다.

우선, 프로젝트를 만들고, BaseGameActivity를 상속하는 새로운 액티비티를 만든다. BaseGameActivity를 상속한 클래스는 아래 소스와 같이 4가지 메서드를 추가적으로 구현해 줘야 한다.

아래는 안드로이드 폰의 스크린에 빨간색 바탕의 게임 화면을 띄우는 매우 간단한 소스코드이다.

/**
* Hello, AndEngine
* Created by Elex on 2014-06-30.
*/
public class HelloAndEngine extends BaseGameActivity {
    
private static final int WIDTH = 800;
    private static final int
HEIGHT = 480;

    
/**
     *
게임 엔진의 옵션을 설정한다 .
     * @return
     */
    
@Override
    
public EngineOptions onCreateEngineOptions () {
         
// 카메라를 생성 . 카메라는 뷰포트의 역할을 한다 .
         
Camera camera = new Camera(0 , 0, WIDTH, HEIGHT );

         
// 엔진 옵션을 설정한다 .
         
EngineOptions engineOptions = new EngineOptions( true,
                 
ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy() , camera);

         
// 게임 중 사용자의 입력이 없더라도 화면이 꺼지지 않도록 하기 위해서 웨이크락을 지정한다 .
        
engineOptions.setWakeLockOptions(WakeLockOptions. SCREEN_ON );

         
// 마지막으로 , 엔진 옵션을 반환한다 .
         
return engineOptions ;
    
}

    
/**
     *
게임에 필요한 리소스들을 불러온다 . 텍스쳐, 사운드 , 음악 , 폰트 등.
     * @param
pOnCreateResourcesCallback
    
* @throws IOException
     */
    
@Override
    
public void onCreateResources (OnCreateResourcesCallback pOnCreateResourcesCallback)
             
throws IOException {

         
// 리소스 생성이 끝나면 다음 콜백 메서드를 실행해서 끝이라고 알려줘야 한다.
        
pOnCreateResourcesCallback.onCreateResourcesFinished() ;
    
}

    
/**
     *
게임에서 사용될 장면을 생성한다 .
     * @param
pOnCreateSceneCallback
    
* @throws IOException
     */
    
@Override
    
public void onCreateScene (OnCreateSceneCallback pOnCreateSceneCallback)
             
throws IOException {
         
// 장면을 생성한다 .
         
Scene scene = new Scene();

         
// 장면 생성이 끝나면 다음 콜백 메서드를 실행해서 끝이라고 알려줘야 한다.
        
pOnCreateSceneCallback.onCreateSceneFinished(scene) ;
    
}

    
/**
     *
장면을 엔티티들로 채운다.
     * @param
pScene
    
* @param pOnPopulateSceneCallback
    
* @throws IOException
     */
    
@Override
    
public void onPopulateScene (Scene pScene , OnPopulateSceneCallback pOnPopulateSceneCallback)
             
throws IOException {
         pScene.setBackground(
new Background( 1.0f, 0.0f , 0.0f ));

         
// 마찬가지로 , 다음 콜백 메서드를 실행해서 끝났다고 알려준다 .
        
pOnPopulateSceneCallback.onPopulateSceneFinished() ;
    
}
}

위 소스 코드에서는 가장 기본적인 액티비티인 BaseGameActivity를 상속했지만, 안드 엔진에는 이 외에도 몇가지 액티비티가 더 있다. org.andengine.ui.activity 패키지 아래를 뒤져보면,

LayoutGameActivity, SimpleBaseGameActivity, SimpleLayoutGameActivity, SimpleAsyncGameActivity

LayoutGameActivity를 상속하면 안드로이드의 XML 레이아웃을 정의해서 다양한 UI 위젯들을 사용할 수 있다. 이 때 얻을 수 최대 장점을 광고를 달기 쉽다는 것이다. 
Simple이 붙은 액티비티들은 일부 메서드들을 간략하게 미리 정의해 둔 것들이고, Async는 비동기식으로 동작하는 액티비티이다.


Evernote는 모든 것을 기억하고 간편하게 정리하는데 도움이 됩니다. Evernote를 다운로드하세요.

댓글

이 블로그의 인기 게시물

자바 암호화 확장 (JCE) 관련 자바 1.8.0_151 이후 변경 사항

좌표 변환: 회전 이동

HTTP POST