2019년 7월 29일 월요일

[20190729] Tile Builder, Tile Animation, Tile Map

이런 날씨를 두고 누군가 이런 표현을 했더랬습니다.
"물 붓고, 끓인다."

환상적인 날씨가 이어지는 와중에 저는 잘 살아 있었습니다.
잘 살아서 달력 머리에 써둔 <작업에만 집중한다> 라는 목표에 너무 집중한 나머지 일지를 작성하기 까지 20여일이 걸렸네요.

그렇습니다.
( o_o)y-~



작업 이야기로 들어갑니다.

이 일지는 2019년 7월 9일 ~ 11일, 15일 ~ 18일, 22일 ~ 25일 그리고 29일의 작업을 대상으로 합니다.

실 작업일은 12일로 전체 기간( 21일 )에 비해 적은 편입니다.
하루는 부가가치세 납부를 위해 소모했고, 4일은 지난 프로젝트의 유지보수를 위해 사용했습니다.
오래 방치했더니 Store에서 내려갔더라구요. o_o
한동안 주 1일은 <루비이야기> Project를 위해 사용될 예정입니다.

작업 내역은...
  1. 8 방향 Tile Pattern 의 중복 Tile 제거
  2. Dir 0, Dir 1에만 적용되어 있던 Tile Variation 기능을 Dir 8, Dir 8 R 에도 적용
  3. Tile Builder에 Tile Animation Build 기능 추가
  4. 게임에 Tile Animation 기능 추가
...입니다.



1. 8 방향 Tile Pattern 의 중복 Tile 제거

8방향 Tile Pattern은 Tile이 어느 위치에 배치되어도 주변 8개 타일과 연속성을 가지는 Tile Sheet를 생성합니다.

< Dir 8 - 16px Test Tile Sheet >

그러기 위해서 8방향에 배치 가능한 지형의 모든 경우의 수를 산출해서 Tile을 조립합니다.
그 수가 256개. 많네요.

256개의 Tile 중에는 경우의 수가 다르지만 조립된 결과물이 같은 녀석들이 있습니다.
그 녀석들을 제거하는 작업이었습니다.


이 작업은 진작 할 수 있었음에도 계속 미뤄왔는데요. 이전에는 Tile의 기준 크기가 16px라서 Tile Sheet에 여유가 있었기 때문입니다.

지난 일지에서 기준 크기를 24px로 늘렸더랬죠. Tile Pattern 하나가 차지하는 영역이 어마 어마 하게 늘어나 버려서 더이상 미룰 수 없었답니다. @_@

자세한 것은 [20190709] 잡설 - 낭비가 심해 이 쪽을 참고해주세요.



2. Dir 0, Dir 1에만 적용되어 있던 Tile Variation 기능을 Dir 8, Dir 8 R 에도 적용

Tile Map 기반 게임을 보면 같은 지형이지만 배치된 Tile이 다른 경우가 있습니다.
물론...

< Dir 1 - Green Tile Sheet >

제 게임도 그렇습니다.

Dungeon용 Tile Pattern인 <Dir 0> 과 <Dir 1> 에만 적용되어 있던 이 기능을 Tile 관련 기능의 통일성 유지를 위해 <Dir 8> 과 <Dir 8 Reverse> 에 적용되었습니다.

적용된 모습은...

< Dir 8 - 24px Test Tile Sheet >

...요렇습니다.



3. Tile Builder에 Tile Animation Build 기능 추가

Tile Animation 을 하려면 Tile Sheet에 Animation이 가능한 Tile이 들어 있어야 겠죠.
Tile Builder에서 Tile Sheet를 Build 할 때 Animation Tile을 포함하도록 기능을 추가했습니다.

이 작업을 위해 무수한 Refactoring 과 Data Format 갈아 엎기가 진행되었는데요.
각 Tile Pattern별로 기능을 구현하고, 중복 코드를 취합해서 추출하고를 반복하다가 종국엔  Graph 자료구조를 동원한 일반화를 통해 고통에서 해방되었습니다.
( '_')y-~

이 녀석은 이 정도로 넘어갑니다.



4. 게임에 Tile Animation 기능 추가

고생해서 Build한 Animation Tile이 굴러갈 수 있도록 Tile Map을 뜯어고쳤습니다.

만들어둔 기능중에 Tile Map 기반으로 작동하는 녀석들은...
  • 던전의 맵
  • 인벤토리의 아이템 사용 가이드
  • 인벤토리의 아이템 던지기 가이드
  • 전장의 안개
  • 시야
...정도 입니다.

이 녀석들의 중복 기능을 모두 추출해서 Tile Map 으로 통합하고, 여기에 Tile Animation 기능을 붙였습니다.

지금은 대충...


...이런  모습입니다.

더 제대로 적용된 모습을 보여드리고 싶은데 그러려면 Tile 작업을 해야 합니다.
아쉽지만 다음 기회로 미뤄둡니다.

일지는 여기 까지 입니다.



일수로 21일, 작업일로 12일을 들여서 Tile Builder 와 Tile Map에 거~~~의 종지부를 찍었습니다.
어지간하면 더 이상의 기능 추가는 없을 겁니다.

홀가분 하면서도 이어서 진행할 작업들을 생각하면 마냥 기쁘지는 않네요.

이 코드들은 앞으로 Tile Map 기반 게임을 만들때마다 큰 힘이 되어줄 겁니다.
그런 방향에서 마음의 위로를 얻어볼까 합니다. ( @_@)y-~



본격적인 여름이 왔습니다. 덥고 습하고 끈적 하네요.
건강하게 이 여름을 버티고 게임을 완성하고 싶습니다.
이 글을 읽는 당신도 건강하게 뜻하는 바를 이루셨으면 좋겠네요.

그럼 전 이만 쉬러 갑니다.
( '_')y-~

> Bonus
> Research Scene 의 Terrain View Test


> 3번 고침

댓글 없음:

댓글 쓰기