안드로이드 어플 만들기
안드로이드 어플 만들기 ▣슈팅게임 만들기 2 ■지난번에는 플레이어 클래스를 제작했었는데요. 이번에는 배경을 만들어 보겠습니다. ■ 현재 바탕이 되는 배경화면은 렌더링할때 기본으로 깔리는 검은색인데요. 이것을 배경답게 만들어 보도록 하겠습니다. 이미지를 하나 준비하겠습니다. 인터넷에서 인공사진으로 준비했구요. 사이즈는 320X2000 이고. 파일이름은 background0으로 했습니다. ■ BackGround 클래스를 만들겠습니다. 이미지 처리를 위해서 프레임워크의 GraphicObject를 상속 받습니다. ■ 클래스를 만들었으니 GameState에서 객체를 생성하고 그리도록 하겠습니다. ■ 이미지가 제대로 적용이 되는지 확인해 보겠습니다. ■ 배경이 추가가 됐습니다. 이제 이 배경을 스크롤을 시켜보겠습니..
[안드로이드 게임 만들기] 스프라이트 애니메이션
안드로이드 게임 만들기 SpriteAnimation 게임에서 가장 중요한것 중 하나가 애니매이션 일텐데요. 여기서는 안드로이드의 애니매이션중에서 2D 스프아이트 애니메이션을 구현하는 방법을 알아보겠습니다. 여러 방법이 있지만 비트맵 하나를 리소스에 추가해서 정보를 코드에 직접 작정하는 방식으로 구현해 보겠습니다. 다음과 같이 연속적인 이미지를 이용해서 구현해 볼텐데요. 포토샵에 소질이 없어서 좀 허접 하더라도 이해해주세요^^; ■ 이런 이미지가 있으면 전체를 한번에 그려주는 것이 아니라 프레임 하나씩 연속적으로 네개를 그려주면서 마치 움직이는 듯한 느낌을 주는 것입니다. 직접 해보면서 어떻게 작동하는지 알아보도록 할게요. ■먼저 FrameWork패키지에 SpriteAnimation클래스를 만들고 지난 포..
안드로이드 게임 프로그래밍 [그래픽오브젝트]
안드로이드 게임 프로그래밍 [그래픽오브젝트] 그림 하나를 그리려면 좌표와 비트맵은 물론이고 여러개의 멤버 변수를 선언해야 합니다. 그림 하나를 띄우는 어플같은 경우에는 관계가 없겠지만, 게임은 화면 하나에 여러개의 이미지를 그려줘야 합니다. 그럴때마다 멤버 변수를 추가하면서 작업하면 복잡해시고 시간도 오래 걸리게 되는데요. 이런 과정을 하나의 클래스로 만들어 놓으면 그려야 할 이미지가 많아져도 간결하게 처리할 수 있고, 나중에 다른 프로젝트에서도 이 클래스를 재사용 할 수 있습니다. 첫번째로 화면에 표시되는 대부분을 차지하는 GraphicObject 클래스를 만들도록 하겠습니다. 이 클래스에 포함되어야 할 멤버가 어떤것들이 있을까요? 먼저 비트맵을 표현하기 위해서 Bitmap클래스와 좌표값 x, y가 필..
안드로이드 게임 개발 [프레임워크 만들기]
안드로이드 게임 개발 [프레임워크 만들기] 게임의 상태는 어플리케이션이 실행 중일 때의 위치 또는 모드라고 생각하면 될텐데요. 보통 게임은 시작전과 준비상태, 진행, 종료 순으로 처리가 이루어 질것입니다. 현재의 상태에 따라서 입력(화면터치. 키패드)에 대한 처리가 달라지게 됩니다. 예를 들어 준비 상태에 있을때 터치(입력)을 하게 되면 실행이 된다거나, 종료된 상태에서는 입력을 하게 되면 대기상태가 되거나 재시작을 하게 됩니다. 즉, 같은 입력을 하더라도 현재의 상태에 따라서 처리하는게 달라진다는 뜻입니다. 게임은 이런 상태의 집합으로 이루어져 있습니다. 상태를 관리하고 사용할 수 있는 기반을 제작하는 과정을 코딩을 해보면서 이해를 해보도록 하겠습니다. ■ 먼저 IState클래스를 생성해서 인터페이스로..
[안드로이드] SoundManager
▣ 안드로이드 게임 프레임워크 만들기 3 SoundManager 사운드 매니저를 하나 만들어 놓으면 필요할 때마다 코드를 반복해서 작성하지 않아도 되고, 다른 프로젝트에서도 쉽게 사용할 수 있습니다. 지난 포스팅에서 해봤듯이 사운드를 재생하는 방법은 두가지 방법이 있는데요. 사운드폴▶ http://kd3302.tistory.com/46 미디어플레이어 ▶ http://kd3302.tistory.com/39 게임에 적용하기에는 사운드폴 클래스를 이용해서 개발하는게 용이 합니다. 앞선 포스팅에서 객체생성, 리소스 로딩, 사운드 출력이라는 세단계로 SoundPool을 이용해서 처리했는데요. 여기에서는 위의 세단계를 더욱 쉽게 이용할 수 있도록 SoundManager를 제작하도록 하겠습니다. ■ 먼저 두가지 방법..
[안드로이드] SoundPool 사운드재생
안드로이드에는 사운드를 재생하고 관리 할 수 있는 방법이 두가지가 있습니다. 지난번에 알아본 MediaPlayer를 이용하는 방법과 지금 알아볼 SoundPool을 이용해서 재생하는 방법인데요. 미디어 플레이어를 이용한 방법으로도 대부분의 사운드를 처리할 수 있지만 그거 하나로 게임을 제작하기는 어렵습니다. MediaPlayer를 이용한 방법 ▶ http://kd3302.tistory.com/39 SoundPool을 이용해서 실행을 하려면 먼서 객체를 생성하고, 리소스를 로드해서 실행을 합니다. 객체를 생성하는 방법은 다음과 같습니다. ■ 에서 최대 스트림 개수는 동시에 재생이 가능한 최대 스트림의 갯수를 말하는 거구요. 두번째 오디오 스트림타입은 보통 AudioManager.SREAM MUSIC을 사용..
[안드로이드] AppManager
게임 프레임워크 중에서 지난 포스팅에서 SurfaceView에 대해서 알아봤었는데요. 이번에는 애플리케이션의 모든것을 관리하는 AppManager에 대해서 알아보도록 할게요. ■ 앱 매니저는 지금 만들고 있는 프레임워크를 사용하는 어플리케이션을 관리하는 기능을 하게 됩니다. 관리에 필요한 여러가지 기능을 하나로 합쳐놓은 건데요. 프로젝트 어디에서나 접근할 수 있도록 싱글턴 패턴을 적용해서 작성하도록 하겠습니다. 먼저 클래스를 하나 만들겠습니다. ■ 게임에서 사용할 서브시스템이나 애플리케이션에 관련된 정보를 멤버 변수로 추가합니다. 먼저 게임 뷰나 리소스를 추가합니다. ■ 앱 매니저에서 GameView와 Resources의 인스턴스 정보를 알기 위해서는 GameView 생성자에서 앱 매니저에 인스턴스 값을..
[안드로이드 게임 개발] 기초다지기 SurfaceView
안드로이드에서 기본 뷰(view)는 게임을 만들때에는 적합하지 않습니다. 안드로이드에서는 5초이상 동작이 멈추면 ANR(Application Not Responding)에러가 발생하게 되는데요. 게임과 같이 연산처리가 많은 어플을 UI스레드에서 처리하다 보면 GUI업데이트가 늦어지게 되고 ANR에러가 발생하게 됩니다. 이런 에러 발생을 막기 위해서 SurfaceView를 사용하는 것입니다. 다른View는 화면 업데이트를 UI스레드에서 처리하지만 SurfaceView는 백그라운드로 처리하므로 어플의 자원을 차지하지 않고 원할하게 업데이트를 할 수 있습니다. 그리고 OpenGL을 통한 가속도 지원하기 때문에 3D 그래픽도 표현 할 수 있습니다. 위 그림에서 보듯이 SurfaceView는 하나의 틀의 역할을 ..
[안드로이드 게임 개발] 사운드
어떤 종류의 게임이건 사운드는 필수요소라고 할수 있는데요. 정말 재미있는 게임도 sound가 없으면 재미가 반감되겠죠. sound는 게임을 구성하는 요소 중굉장히 중요한 위치를 차지 합니다. 안드로이드 플랫폼에서는 일반적인 미디어파일에 대한 인코딩과 디코딩을 제공하므로 오디오 파일을 게임에 쉽게 통합 할 수 있습니다. ■ 다음과 같은 형식의 프로그램을 만들어보면서 sound를 넣는 과정을 살펴보도록 하겠습니다. 1. 실행하면 배경음악이 흘러나옵니다. 2. 스페이스를 누르면 배경음악이 멈추고 다시 한번 누르면 재생이 됩니다. 3. 방향키를 누르면 효과음을 재생합니다. 먼저 기본 프로젝트를 생성하고 메인 액티비티와 view를 상속받은 SoundExam클래스를 만들어서다음과 같이 기본 코딩을 하겠습니다. 다음..
[안드로이드 게임 개발] Thread
일반적인 어플을 만들때에는 스레드를 쓰지 않아도 어느정도는 개발이 가능하지만, 게임에서는 필수입니다. 일반 어플리케이션에서는 메인 스레드에서 거의 모든작업을 진행되지만, 게임에서처럼 지속적인 처리와 관련된 처리는 지원하지 않습니다. 스레드는 특정 작업을 분산시켜서 작업하는 것이라고 생각하면 되는데요. 에제를 만들어가면서 이해해 보도록 하겠습니다. ■ 두개의 아이콘이 한 화면에서 위,아래로 움직이는 프로그램을 만들어보도록 하겠습니다. 먼저 프로젝트를 생성하고, 뷰 클래스를 상속받은 스레드 클래스를 만들어서 다음과 같이 기본 코딩을 하겠습니다. ■ 다음으로 이미지 두개를 화면에 배치하도록 하겠습니다. ■ 위의 소소대로 코딩을 해서 AVD에 아이콘 두개를 배치해봤습니다. 이제 이 두 아이콘이 위쪽으로 왕복을 ..
[안드로이드 게임 개발] 기초 익히기 onTouchEvent
요즘 출시되는 스마트폰은 다 터치 방식이잖아요. 이런 스마트폰 환경에서 게임이나 어플을 만들기 위해서는 터치 입력 처리가 필수적입니다. 터치입력 방식에 대해서 알아보도록 하겠습니다. 안드로이드 프로젝트를 하나 생성하고 View클래스를 상속받은 클래스를 먼저 만들도록 하겠습니다. ■ MainActivity ■ View클래스를 상속받은 클래스를 만들고 화면에 그림을 출력하기 위해서 onDraw()메서드를 오버라이딩 해줍니다. 안드로이드에서 더치 이벤트를 처리하는 방법은 두가지입니다. 1. 콜백 메서드를 이용하는 방법 Boolean onTouchEvent(MotionEvent e) onTouchEvent()메서드는 View클래스에서 오버라이드 해서 사용할 수 있습니다. 2. 리스너 핸들러를 이용하는 방법 Bo..
[안드로이드 게임 개발_1] 기초 다지기
화면에 이미지 띄우기 게임(2D) 화면은 무수히 많은 그림들로 이루어져 있습니다. 때문에 먼저 그림파일을 불러와서 화면에 띄우는 것부터 해보겠습니다. 먼저 프로젝트를 하나 생성해서 소스 코드를 수정해서 게임의 가장 기초적인 부분인 이미지를 띄워보겠습니다. 위의 그림의 파일은 기본 액티비티의 소스코드 입니다. 액티비티는 모든 애플리케이션의 가장 중심이 되는 클래스입니다. 여기서는 "애플리케이션의 중심은 클래스이다" 정도만 알고 넘어가도록 하겠습니다. ■ 화면의 기본 단위 View 위의 액티비티가 어플의 가장 기본이기는 하지만 실제로 화면에 보이는 것은 아니고, 그 안에 포함된 뷰(View)라는 것이 실제 화면에 보이는 것입니다. 보통 다른 어플을 만들때는 뷰에서 파생된 클래스만으로도 어느정도 개발이 가능합..
[안드로이드] 개발환경 구축하기 (ADT, SDK)
안드로이드를 개발하기 위해서는 먼저 자바 JDK, 이클립스, SDK를 설치해야 합니다. ■자바 JDK설치하기 : http://kd3302.tistory.com/21 ■이클립스 설치하기 : http://kd3302.tistory.com/22 이번에는 SDK설치 과정을 살펴보도록 하겠습니다. SDK를 설치하기 위해서는 구글에서 만든 안드로이드 개발툴킷(ADT: android Development Toolkit)이라는 플러그인을 먼저 설치해야 합니다. ■ 이클립스를 실행하고 [Help▶ Install New Sofware... ] 선택합니다. ■ 소프트웨어를 다운받는 창이 나타나는데요. Add...버튼을 클립합니다. ■ 다음과 같이 'Add Repository'라는 창이 뜨는데요. 이것은 플러그인 업데이트 정..