안드로이드 게임 개발 [프레임워크 만들기]
안드로이드 게임 개발 [프레임워크 만들기] |
게임의 상태는 어플리케이션이 실행 중일 때의 위치 또는 모드라고 생각하면 될텐데요. 보통 게임은 시작전과 준비상태, 진행, 종료 순으로 처리가 이루어 질것입니다. 현재의 상태에 따라서 입력(화면터치. 키패드)에 대한 처리가 달라지게 됩니다.
예를 들어 준비 상태에 있을때 터치(입력)을 하게 되면 실행이 된다거나, 종료된 상태에서는 입력을 하게 되면 대기상태가 되거나 재시작을 하게 됩니다. 즉, 같은 입력을 하더라도 현재의 상태에 따라서 처리하는게 달라진다는 뜻입니다. 게임은 이런 상태의 집합으로 이루어져 있습니다.
상태를 관리하고 사용할 수 있는 기반을 제작하는 과정을 코딩을 해보면서 이해를 해보도록 하겠습니다.
■ 먼저 IState클래스를 생성해서 인터페이스로 바꾸고 메서드를 추가하도록 하겠습니다.
■ 보통의 상태 기반으로 제작하기 위한 인터페이스 클래스의 틀에 안드로이드 플랫폼에 알맞게 입력처리를 위해 두가지 메서드를 추가하였습니다. 키패드 입력을 담당할 onKeyDown메서드와 터치 입력을 담당할 onTouchEvent메서드를 추가하였습니다.
■ 다음으로 GameView에 추가하고, GameView클래스에서 현재의 상태를 저장할 IState를 추가하고, 상태에 따라서 그림그리기, 업데이트 진행, 입력 처리등을 수행하는 코드를 작성합니다. 현재 상태에서 다른 상태로 바꿀 수 있는 메서드(public void ChangeGameState())만 추가해서 작성합니다.
■ 이렇게 해서 게임 프레임워크가 만들어 졌습니다. 제대로 만들어 졌는지 사용해 보도록 하겠습니다.
■ IState 인터페이스를 상속한 IntroState클래스를 만듭니다.
■ init()메서드와 Render()메서드를 작성해서 기본 아이콘을 화면에 띄우는 과정을 진행합니다.
■ 위와 같이 기본 아이콘을 화면에 띄우는 메서드를 추가하고 GameView 클래스에서 게임 상태 값으로 IntroState의 인스턴스를 넘기도록 하겠습니다.
■ 제대로 실행이 됩니다. 이 화면에서 터치를 했을때 다음 화면으로 넘기는 과정을 진행합니다.
■ 터치했을때 나타날 이미지를 리소스 폴더에 넣어주고, 새로운 클래스 CreditState를 만들도록 하겠습니다. 바팅화면에 있는 비행기 그림을 사용합니다. 이름은 plane로 하고 drawable폴더에 넣었습니다.
■ 다음으로 이미지를 화면에 나타나게할 메서드를 다음과 같이 작성하였습니다.
■ 그리고 이 그림이 보이게 하기위해 GameView에서 첫 상태를 CreditState로 바꿔줍니다.
■ 여기까지 제대로 만들어 졌는지 실행을 해봤습니다. 제대로 작동 합니다.
■ 제대로 출력이 되는걸 확인했으니 이제 GameView의 첫 화면 상태를 다시 IntroState로 바꿔주고, 실행을 했을때 기본 아이콘을 터치하면 비행기 그림으로 변경이 되도록 코드를 추가하겠습니다.
■ 위 내용을 추가하고 실행을 해보면 첫 화면은 기본 안드로이드 아이콘이 나오고 그걸 터치하면 비행기 그림이 나타나게 됩니다. 이렇게 해서 프레임 워크가 제대로 만들어진걸 확인을 해봤습니다.
■ 게임 개발을 하는데 필요한 프레임워크에 필요한 클래스들을 만들어 보고 테스트를 해보고 있습니다. 오늘까지 만든 클래스들인데요. 다음 포스팅에서는 그래픽과 애니매이션을 살펴보도록 하겠습니다.