openGL기반, 안드로이드용 2D 게임 엔진 AndEngine으로 개발하기 위해 최초의 프로젝트 생성과 기본적인 오버라이드, 그리고 이미지 출력까지의 과정을 정리했습니다.
※이클립스와 안드로이드 개발 환경이 갖춰진 것을 전제로 합니다.
AndEngine 다운로드 (라이브러리 및 샘플 코드)
http://andengineexamples.googlecode.com/hg/
(andengine.jar 는 http://andengineexamples.googlecode.com/hg/lib/ 에서 다운로드)
1. 안드로이드 프로젝트를 생성한다
2. 프로젝트 폴더 내에 lib 폴더를 만들어 andengine.jar 를 카피한다.
3. 프로젝트에서 우클릭 -> Build Path -> Configure Build Path -> Add JARs -> andengine.jar 를 선택하고 OK
4. 생성한 프로젝트의 extends Activity를 extends BaseGameActivity 로 변경.
5. Source -> Override / Implements Methods 선택하여 다음의 함수를 오버라이드
public Engine onLoadEngine()
public void onLoadResources()
public Scene onLoadScene()
public void onLoadComplete()
6. 다음 변수를 준비
public static final int CAMERA_WIDTH = 480;//만들고자 하는 게임의 가로 해상도 값을 넣는다.
public static final int CAMERA_HEIGHT = 320;//만들고자 하는 게임의 세로 해상도 값을 넣는다.
private Camera mCamera;
private Scene scene;
※ 실제 단말기에서는 단말기 전체화면 사이즈에 맞게 자동으로 리사이징된다.
※ 단, 터치 영역은 실제 해상도의 좌표가 들어오므로 해당 해상도는 수정해야 한다.
7. onLoadEngine()의 내용을 다음과 같이 수정
this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
return new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera).setNeedsMusic(true));
8. onLoadScene()의 내용에 다음을 삽입
scene = new Scene(1); // 괄호 안 숫자는 레이어의 갯수
.
.
return scene;
대략 여기까지의 과정은 다음 링크의 영상에서 볼 수 있습니다.
http://www.youtube.com/watch?v=q-genimutmQ
9. 이미지 불러들여 표시하기
(1)이미지를 텍스처로 생성

(※drawable~ 폴더가 아닌 assets 폴더를 사용함에 유의)
변수에
private Texture imgsrc;
추가하고
onLoadResources() 에서
imgsrc=new Texture(512,512,TextureOptions.BILINEAR);
TextureRegionFactory.createFromAsset(imgsrc, this, "mychr.png",0,0);
mEngine.getTextureManager().loadTexture(imgsrc);
이와 같이 하면 이미지 텍스처가 생성됩니다.
new Texture에서 지정하는 크기는, 이미지의 크기보다 커야 하며, 2의 자승값이어야 합니다.
(예:이미지 크기가 100*100 이라면 new Texture(128,128,... 과 같이 정의)
(예:이미지 크기가 320*240 이라면 new Texture(512,256,... 과 같이 정의)
(2)텍스처로 스프라이트를 만들어 화면에 표시
변수에
private Sprite bg;
추가하고
onLoadScene()에서 (꼭 여기일 필요는 없으나, 언제이건 텍스처의 등록이 끝난 이후여야 함)
bg=new Sprite(0,0,new TextureRegion(imgsrc,0,0,imgsrc.getWidth(),imgsrc.getHeight()));
scene.getLastChild().attachChild(bg);
로 스프라이트를 화면에 표시.
※ 이미지 출력 방식이, 기본 SDK의 drawImage 같은 것과는 개념이 전혀 다르므로 사용에 많은 이해가 필요합니다.
openGL에 대한 이해가 없으면 쓰기 상당히 힘든 엔진입니다.
그래서 openGL을 익히고 나면..
...
..그냥 자기가 api를 만들어 쓰는게 나을 수 있습니다..
여하튼 AndEngine을 써 보기로 하셨다면,
지옥에 오신 것을 환영합니다.


댓글을 달아 주세요
댓글 RSS 주소 : http://www.modelisland.pe.kr/blog/rss/comment/289