Program/Android Java

안드로이드 게임 엔진 ROKON - Hello World

너구리V 2011. 4. 15. 00:22

첫번째 Rokon totorials 에 오신것을 환영합니다.

여기서는 어떻게 Rokon Project를 설정하는지 배우게 될것입니다.

이미 자바와 안드로이드 SDK에 대해 경험을 좀 해봤다고 가정하겠습니다.

여기서는 개발도구로 이클립스를 사용하겠습니다만, 다른 툴을 사용한다고 하더라도 따라하는것은 가능합니다.

(마지막에 전체 소스를 다운로드 받으실수 있습니다.)

처음에는 Rokon library를 여기 서 다운로드 하실수 있습니다. 몇개 파일이 있는데,

actual library[rokon_lib_x-y-z.zip] 형식의 파일만 필요 합니다.

이클립스를 열고 새로운 안드로이드 프로젝트를 생성하는데, 어떤 버젼이라도 상관 없습니다. Rokon은

1.5 버전 이상이면 어떤것이라도 지원합니다.

프로젝트 폴더를 설정합니다.(폴더에 당신의"AndroidManifest.xml"이 있어야 합니다.)

만일 어디에 있는지 모르겠다면, 프로젝트의 Package Explorer 를 우클릭해서, Properties를 선택하고,

프로젝트 경로를 'Location' 하위에서 볼수 있습니다.


여기에 'libs' 폴더를 생성하고 'rokon_lib_x-y-z.zip' 파일을 여기에 해제합니다.

이클립스로 돌아가서 Package Explorer 을 refresh합니다.(우클릭해서 'Refresh'를 선택하든지

F5를 누르면 됩니다.)

정확한 장소에 모든 파일들이 있는지 확인해 봅니다.



그리고, 'rokon_x-y-z.jar' 을 빌더 경로에 추가합니다.(파일에 우클릭을하고 Build Path > Add to Build Path를

선택 합니다.) 이 파일은 Referenced Livraries 아래에 나타나게 됩니다.


당신의 Rokon project에 설정하고, 이젠 정말로 코딩을 할 준비가 되었습니다.

main activity 클래스를 열고 아래 코드로 변경합니다.

package com.rokonexamples.helloworld;

import com.stickycoding.rokon.DrawPriority;
import com.stickycoding.rokon.RokonActivity;

public class MainActivity extends RokonActivity {

    public static final float GAME_WIDTH = 480f;
    public static final float GAME_HEIGHT = 320f;

    private GameScene scene;

    public void onCreate() {
        debugMode();
        forceFullscreen();
        forceLandscape();
        setGameSize(GAME_WIDTH, GAME_HEIGHT);
        setDrawPriority(DrawPriority.PRIORITY_VBO);
        setGraphicsPath("textures/");
        createEngine();
    }

    public void onLoadComplete() {
        Textures.load();
        setScene(scene = new GameScene());
    }
}

([Ctrl + Shift + O] 키를 누르면 자동으로 import 설정이 완료 됩니다.)

모든 안드로이드 어플리케이션은 'onCreate()'가 우리가 만든 게임의 시작지점이며 이곳이 Rokon Engine를

설정할 부분입니다.

첫번째 라인:

debugMode();

rokon에게 debug모드임을 알려주게 됩니다. FPS와 Debug.print() 호출을 화면에 찍게 되는것을 의미합니다.

forceFullscreen();
forceLandscape();

이것은 게임이 전체 스크린과 landscape 모드 임을 알려 줍니다.(물론 옵션입니다.)
('forcePortrait()' 함수와 치환 가능합니다.)

setGameSize(GAME_WIDTH, GAME_HEIGHT);

게임 스크린 사이즈를 설정하는 부분인데, 장치보다 더 작거나 더 크게 한다면 그렇게 될것입니다.

크게 하거나 작게 하는건 저것을 설정하면 됩니다.

setGraphicsPath("textures/")

그래픽을 이 폴더에서 찾으라고 Rokon에게 설정하는것입니다.(이건 'assets/textures/' 처럼 됩니다.)

엔진이 성공적으로 호출되면 'onLoadcomplete()' 가 불려 집니다.

모든 프로젝트에서 'Textures.load()'가 호출되어야 하는데, game scene를 설정해야 합니다.

setScene(scene = new GameScene());

'forceLandscape()' 나'forcePortrait()' 를 사용하려 한다면 'android:screenOrientation'을 manifest file에

설정해야 합니다.



그러면 소스 디렉토리에 'GameScence.java' 와 'Textures.java' 파일을 생성합니다.

Textures.java 는 게임엔진 안에서 로드되어 져야 합니다.

이 코드를 'Textures.java' 파일에 부쳐 넣습니다.

package com.rokonexamples.helloworld;

import com.stickycoding.rokon.Texture;
import com.stickycoding.rokon.TextureAtlas;

public class Textures {

    public static TextureAtlas atlas;
    public static Texture background;

    public static void load() {
        atlas = new TextureAtlas();
        atlas.insert(background = new Texture("background.png"));
        atlas.complete();
    }
}

alias = new TextureAtlas();

이것은 새로운 게임 요소를 생성하게 되며, 기본적으로 구성요소를 유지해야 합니다.

만일 많은 구성요소 원한다면, 하드웨어를 오버로드 하지 않은 하나 이상의 atlas를 사용해야 합니다.

(한번에 하나만 요구되지 않는다는것을 알아야 하며,  두가지의 다른 scence/map/어떤것이든.. 으로부터

textures를 사용해서는 안됩니다.)

atlas.insert(background = new Texture("background.png"));

우리의 세계에 백그라운드 구조물을 더하겠습니다.
(가장 큰것을 처음에, 가장 작은것을 나중에 추가하도록 해야 합니다.)

atlas.complete();

생성하는것을 완료하게 되며, 이 뒤로 부르는 것은 게임에 더이상 추가되어 지지 않습니다.

그러면, 'GameScence.java' 에 다음 코드를 추가합니다.

package com.rokonexamples.helloworld;

import com.stickycoding.rokon.Scene;
import com.stickycoding.rokon.Sprite;
import com.stickycoding.rokon.background.FixedBackground;

public class GameScene extends Scene {

    private FixedBackground background;

    public GameScene() {
        super();

        setBackground(background = new FixedBackground(Textures.background));
    }

    @Override
    public void onGameLoop() {
    }

    @Override
    public void onPause() {
    }

    @Override
    public void onResume() {
    }

    @Override
    public void onReady() {
    }
}

이것은 기본적으로 비어있습니다.(배경을 제외하고는 말이죠)

setBackground(background = new FixedBackground(Textures.background));

이것은 고정된 배경을 생성합니다.(고정된 배경화면) 그리고 'Textures.load()로부터 구성요소들은 로드 됩니다.

'onGameLoop()' 는 모든 프레임에서 불려지며, 게임로직을 업데이트 하는곳입니다.

하지만, 이것에 대한 더 자세한 내용은 다음에 다룹니다.

'onPause()' 는 게임이 숨겨질때 불려집니다.(사용자가 게임을 끄지 않고 다른 어플리케이션과 왔다갔다 할때..)

사용자를 놓치기 전에 게임을 정지하는 로직을 사용해야 합니다.

'onResume()'는 사용자가 돌아올때 발생합니다.

'onReady()'는 게임이 성공적으로 생성되고, 사용할 준비가 되었을때 발생합니다.
('onLoadComplete() 와 유사합니다.)

그러면, 지금 당신이 원하는 백그라운드 이미지를 'assets/textures/'에 추가합니다.

만일, 제대로 따라했다면 다음과 비슷한것을 보게 될것입니다.(당신이 추가한 배경이미지와는 다르겠지요)


첫번째 Rokon 토튜리얼을 읽어주셔서 감사합니다.

원문 : http://www.rokonandroid.com/tutorials/41-beginner/62-hello-world
출처 : http://artbrain.co.kr/
반응형