티스토리 뷰

- Tile based games (http://www.tonypa.pri.ee/tbw/start.html)
위 튜토리얼을 기본으로 하여 Android에 사용될 수 있게끔 공부한 포스트 입니다.


어떤 플랫폼이든 결국 언어의 베이스는 비슷하기 때문에 현재 하고 있는 Android에 이 개념을 적용 시켜보고자 공부를 시작한다. 위 튜토리얼 사이트가 상당히 유명한 것 같은데 보면 볼 수록 그 기본 개념을 잡아주기엔 무리가 없는 좋은 곳이라 생각한다.

순서는 위 튜토리얼 사이트와 동일하게 출발 하도록 하겠다.
과연 얼마만큼 내가 이 스터디 포스트를 만들 수 있을지는 미지수다.
그래도 나의 재산이 되는 거니까 열심히 해보도록 하겠다.

2011-07-28 유승구


1. 선행 준비 사항
   - 안드로이드 게임 개발 프레임워크 
   - 안드로이드 개발 환경 (http://starkapin.tistory.com/127)



[게임 개발 프레임워크]
프레임워크 개발이라는 거창한 말을 썼지만 안드로이드는 UI 프레임이 게임을 직접 플래이 하기엔 좀 누락 되는 현상이 발생한다. 때문에 Surface view를 이용하여 30프레임 이상을 제공하는 뷰로 게임을 제작하게 되는데 이러한 환경을 자신의 입맛 대로 구축하면 된다. (테스트는 해봐야 하지 않겠나?)

참고 : http://foxmann.blog.me/



[Tile based games]
1. Welcome
2. Why Tile
3. Map format
4. More Map




1. Welcome


OutofSociety(http://oos.moxiecode.com/)를 참고하여 작성된 강좌라는 내용을 포함. 특이한 사항은 없다.


2. Why Tile

타일을 사용하게 되면 메모리 사용에 이점이 있다. 하나의 이미지를 여러번 돌려서 사용 할 수 있으니 메모리 이득이 있음. 단점이라 하면 타일이라는게 결국 동일한 이미지를 붙여 쓰는 형태다 보니 주변 타일과 잘 안어울리는 단점이 있음.

3. Map format

 여기서는 배열을 통해 맵 정보를 입력 하게 된다.

 1
 1
 1
 1 1

위 와 같은 테이블 형태로 생각을 해보면 1은 이동 가능한 필드, 0은 이동 불가능한 필드. 이렇게 체크 하여 배열을 넣고 이 배열을 이용하여 맵을 출력시켜 주면 된다.

원문에는 다음과 같이 표현한다.
myMap = [[1, 1, 1, 1, 1, 1, 1, 1],[1, 0, 0, 0, 0, 0, 0, 1],[1, 0, 1, 0, 0, 0, 0, 1],[1, 0, 0, 0, 0, 1, 0, 1],[1, 0, 0, 0, 0, 0, 0, 1],[1, 1, 1, 1, 1, 1, 1, 1]];
이 맵과 연동될 타일을 정의 해주는데, 속성은 각각 Walkable, Frame이다.

Walkable : 캐릭터가 이동가능한가(true), 이동 가능하지 않는가(false) 확인.
Hittest에 대한 이야기가 나오는데 중요하지 않다고 하니 상관 없음.

Frame : 쉽게 말하면 리소스라고 보면 된다. Movie clip을 넣는다고 하는데 우리는 맵 타일에 해당하는 이미지를 넣어보자.

4. More Map


이건 여러 맵의 형태가 있다는 내용인데... 3편에서 사용하는 맵의 형태도 좋지만 여기서 눈여겨 볼만한 주요 포멧 형태들을 나타내주고 있다.

+ JailBitch method
이 방법은 쉽고 좋은 방법중 하나이다. 우리가 가지고 있는 타일 배열 여러가지를 정의해 놓고 이를 일일이 체크하면서 사용한다고 보면 된다.

Type 1 : 마을 사람 1
Type 2 : 마을 사람 2
...
..
.
Type 100 : 벽 1

이런식으로 지정해놓고 각각을 지도 배열에 맞게 배치 한다. 지도는 각 Type에 맞게 배열 될 것이다. 이를 일일이 체크 하는 방식이다.

 + Tree in the Desert
 이 방법의 단점은 나중에 어떤 위치에 뭐가 있는지가 기억 안난다는 것이다.

 해석된 내용을 좀 요약하자면 사막을 상상하면 모래 밖에 없는데 그중에 나무가 듬성 듬성 있다면 굳이 위에 내용처럼 일일이 체크 하고 있을 필요가 없이 나무의 위치만 알고 있으면 된다 이거다.

나무 = {{30,30}, {56,80}}

이렇게 나무 위치만 알고 있으면 해당 위치를 가야 할 때에만 저걸 체크해주면 된다는 내용 

+ S, M, XXXL
마지막으로 XML을 이용한 맵을 만들 수 있다. 아무리 봐도 이게 가장 좋은 것 같다. 그런데 이를 이용하면 추가적으로 처리해줘야 할 내용들이 많아지니 조그만 작업을 하고자 한다면 오히려 맨 처음 방식이 가장 낳을 듯 싶다.


<map>
 <row>
  <cell type="1">
  <cell type="1">
  <cell type="1">
 </row>
 <row>
  <cell type="1">
  <cell type="4">
  <cell type="1">
 </row>
 <row>
  <cell type="1">
  <cell type="1">
  <cell type="1">
 </row>
</map>


이렇게 하면 3X3 맵이 완성하게 되는 것이다. xml 형태로 저장되면 참 편하긴 할텐데...
이 것에 대한 내용은 후에 한번 도전해 보겠다.

이렇게 해서~
처음 intro가 완성 했다.
 
댓글
댓글쓰기 폼