2019년 8월 13일 화요일

[20190813] 휴식 또는 새작업

스토리 작업을 진득하게 했습니다.

여러 번의 갈아엎기 끝에 대강의 쓸만한 것이 나왔지만 여기에 시간이 필요하다는 것을 알게 되었습니다.
매일 아침 이야기를 일정 부분 갈아 엎었고 그 것이 지금도 계속 이어지고 있기 때문입니다.
내일 아침이면 또 갈아 엎을지 모를일이죠.

그리고 저에게 휴식이 필요하다는 것을 알게 되었습니다.

정확히는 이 일에서 잠깐 손을 놓을 필요가 있다는 것 입니다.
꾸준히 집중력을 유지하며 작업하고 있지만 뭔가 깊숙한 곳에서 고통이 느껴지는 상황입니다. 몸 보다는 머리가 이 작업에서 벗어나기를 원한다는 생각이 들더군요.

놀고 싶다거나 그런건 아닙니다.
"다른 것을 하고 싶다."
...에 가깝겠네요.

개발비가 간당간당해서 여유가 없는 것은 알지만, 무리해봐야 몸이나 망가진다는 것을 지난 프로젝트로 잘 알고 있습니다.

한 달 또는 두 달, 다른 게임을 짧게 하나 만들 겁니다.

그럼 그때까지 잠깐 안녕.
( '_')y-~

> 따지고 보면 새로운 것을 만드는 것은 아니구나.
> 나름 검증의 시간 이랄까.
> 새 친구가 궁금하면 이 쪽으로( projectLoop )

> 1번 수정

2019년 8월 5일 월요일

[20190805] 잡설 - 준비

이 짓을 시작한지 일수로 5년이 코앞이다.

난 이제 준비 된 것 같다.
이제야.
( '_')y-~

> 뭔가 후회가 있거나 한 것은 아니야.
> 단 한 조각의 후회도 없어.

> 지금 역시 그 때의 "더 이상 준비되길 기다리지 않겠다." 라는 선택이 맞다고 생각해.

> 회사에 있었다면 난 지금 만큼의 인간이 되지 못했을거야.

> 회사는 다시 가고 싶어.
> 이 모습으로 회사에서 얼마만큼의 역량을 보여줄 수 있을지 궁금하거든.

-----------------------------------------------------------------

20190806

시나리오를 정리 중이다.

각 던전을 이야기와 연계 시키기 위해 그리고 적절한 첫 던전을 위해 꼭 정리해 둘 필요가 있다는 생각이 들었다.

시작과 끝은 오래 전에 확정지었기 때문에 크게 문제가 없다.
언제나 처럼 문제는 그 사이의 이야기다.

대강의 흐름을 나름 고전적인 방식으로 정리했지만 아무래도 이야기와 게임이 겉도는 느낌이 강하게 들었다.
던전이 현실 세계가 아닌 곳에 위치하는 것으로 설정한 것이 아마도 원인이 아닌가 싶다.

고립된 세계를 탐험하기 때문에 현실에서 어떤 급박한 상황이 진행되건 반영되는 것이 거의 없다.
현실에서 마을 하나가 날아가든, 전쟁이 터지든... 언제나 던전은 그 모습 그대로인 것이다.

현실과 비현실을 오가며 게임이 진행된다면 그 반전이 나름의 느낌을 담을 수 있을 테지만 나에게 그정도 규모를 다룰 여력은 없다.

이 부분을 손보자.
지금 말고. 내일.
( '_')y-~

-----------------------------------------------------------------

20190808

시나리오 작업은 즐겁다.
어떤 게임을 어떻게 만들지 꿈꾸는 것 다음으로 즐거운 것 같다.

그래서 왜 프로그래밍은 이만큼 즐겁지 못한지 생각하다가 곧 그만뒀다.

이 작업도 각 장면을 구체화 해서 대본을 쓰는 수준까지 작업하면 즐거울 수 없다는 것을 알았기 때문이다.

그래... 일이 다 그렇지...
그런거지.
( '_')y-~

-----------------------------------------------------------------

20190808

Tool을 몇 개 만들고 싶어졌다.

하나는 사건 단위로 구성한 이야기를 편집할 수 있는 Story Card Tool.
각 Card 마다 사건을 적어 넣고 순서를 바꾸어 가며 이야기의 흐름을 구성하는 Tool 이다.

다른 하나는 Time Line Tool 이다.
Game "Reigns" 에서 Time Line에 연대기 비슷한 것을 보여주는 것이 제법 인상적이었는데 비슷한 느낌으로 하나 만들어 보고 싶다.
이야기를 빈틈 없이 구성하려면 각 사건이 일어난 시기에 대한 정리와 각 캐릭터 시점에서 현재 어떤일을 무슨의도로 하고 있는지를 정리해야 한다.
그런데 도움이 될 것 같다.

하지만...
일단 이것 좀 마무리 하자.
( '_')y-~

-----------------------------------------------------------------

20190809

과연...

시나리오 쓰다가 사전을 만든다더니.
그게 의미하는 바를 자~~~알 알겠는걸.

사... 사람살려.

~( o_o)~

-----------------------------------------------------------------

> 4번 추가
> 2번 수정

2019년 7월 30일 화요일

[20190730] 잡설 - 왔네!

왔네.

현자타임이...

아무렇지도 않다가 작업용 의자에 앉았더니
똭~!
...오는구나.

어떡한다.
( '_')y-~

----------------------------------------------------------

twitter 에서 옮겨옴.

내가 올리는 개발일지 트윗을 감사하게도 리트윗 해주시는 분들에게 가끔 미안함을 느낀다.

게임이 너무 올드 하거나, 후지거나, 보잘것 없는 탓에 사람들이 딱히 관심을 보이지 않기 때문이다.

게임이 좀 말라 비틀어진 듯 해도.. 때려치울 것은 아니니까.
계속 미안함을 느낄 예정이다.
( '_')y-~

----------------------------------------------------------

책상에 앉지 않은 채로 작업중이다.

1가지 개선 방안과
1가지 새 작업에 대한 구상이 대충 진행 됐다.

그러고 잠깐 숨을 돌리면서 가지고 있는 의문에 대해 생각했다.
사실 지금만이 아니고 작업을 멈출 적마다 생각했다.

"왜 현자 타임이 왔는가?"

어제 까지 있었던 작업에서 내게 가해진 가장 큰 압박은 무엇이었을까?
그 것은 작업한 코드의 어딘가가 잘못되어서 결과물인 데이터에 문제가 생기고
문제를 해결하느라 장시간 디버깅에 돌입하는 것 이었다.

머릿속으로 데이터 변화를 그려가면서 작업하느라 버거운데 디버깅을 시작하면 산통이 와장창 깨지기 때문이다.

조심 조심 작업하느라고 온 신경을 몰두한 것이 이렇게 돌아오는 것인가.
...라고 대충 대충 결론을 내렸다.

----------------------------------------------------------

20190802

이야기를 만든다는 것이 참으로 어렵다.

시작과 끝을 꿈꾸고 설계하는 것은 언제든 대충 할만했지만 그 것을 넘어서 관계를 입체적으로 구성하고 동선을 설계하는 것은 많은 연습이 필요한 것 같다.

이런 면은 프로그래밍과 맞닿은 부분이 있는 것 같기도 한데 프로그래밍의 본질은 반복이니까 다른 것 같기도 하고.

으렵다.
그리고 잘 하고 싶다.
( '_')y-~

----------------------------------------------------------

> 3번 추가

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번 고침

2019년 7월 24일 수요일

[20190724] 잡설 - 작업중

그럴싸한데.
뭔가 이상하지만 말이야.
( '_')y-~

Tile Builder 와 Tile Animation 작업에 슬슬 끝이 보여.


이게 이렇게 큰 작업이었는지 몰랐네.

-----------------------------------------------------------------------------

20190726

일을 빡시게 하니까 잡념이 모두 날아가 버렸다.

쉬고 싶다는 생각 뿐이다.

( o_o)y-~

> 좋은건가?

2019년 7월 22일 월요일

[20190722] 잡설 - 적절한 주말

일요일에 느릿 느릿 읽던 "라프코스터의 재미이론" 을 마무리 했다.

제법 괜찮은 책이다.
게임이 나아갈 길과 비전을 제시하고, 게임이 "매체" 이며 그렇게 작동해야 한다고 주장한다.
책임과 윤리를 포함한 많은 좋은 이야기가 쏟아져 나왔는데, 그런 좋은 이야기를 읽는 와중에 나는 회의감이 들었다.

결국 게임은 누군가가 만들어내야 하는 것인데 이 땅에 당신이 말하는 그런 물건을 만들어낼 준비를 갖춘 사람이 얼마나 있을까?
나 역시 그런 사람이 아니다.

새로운 경험, 새로운 학습, 새로운 시각.... 도전할 만한 많은 새로움이 있다.
거기에 도전하는 사람들은 생계를 이어나갈 수 있는가?
사람들이 그런 것을 원하기는 하는가?

소위 메이저한 장소에서 게임을 만드는 사람들은 당신이 주장하는 것들과 얼마나 연관이 있는 물건들을 만들어 내고 있는가?

내가 너무 비관적인 것인가.
그럴지도 모르겠다.
( 그래도 미래가 보이지 않는걸. )
( '_')y-~

> 저자는 할아버지에게 전해줄 답이라고 부를만한 것을 얻었다.
> 나도 이 길의 끝자락에서 나름의 답에 도달하고 싶다.

> 후대에게 예술가라 칭해지는 많은 이들은 그들 스스로 밥벌이를 해내기 보다는 독지가의 후원에 기대어 생존한 경우가 많았다.
> 밥벌이가 최우선인 생존형 인디에게 무슨 도전을 기대할 수 있을까?
> 어떤 인디 개발자는 돈은 다른일로 벌고, 게임은 취미삼아 만든다고도 하더라.
> 하긴 나도 있는 돈 다 떨어질 때 까지 개발해보고 안되면 때려칠 생각이니 길은 다르더라도 취지는 같은건가.

> 1번 수정
> 1번 추가


2019년 7월 9일 화요일

[20190709] 잡설 - 낭비가 심해

Tile의 기준 크기를 24px로 올리고 나서 약간의 "물리적" 인 문제가 발생했다.
예견된 문제라서 "발생" 이라는 표현이 어울리지는 않지만... 뭐... 생긴건 생긴거니까.
( '_')y-~

16px 에서 24px로 기준 크기를 키운다는 것은...


...각 Tile이 이전에 비해서 2배 이상의 pixel을 점유한다는 의미이다.

projectRogue는 1024px를 최대 Texture 크기로 내맘대로 정해놨는데, 기준 사이즈의 변경으로 인해 Tile Sheet의 공간이 최대한 아껴써도 모자를 지경이 되었다.

가장 많은 Tile이 생성되는 Dir8을 기준으로 살펴보면...


1개 Theme의 1개 Usage만 만들어도 저만큼을 차지해버리는 것이다.
한 Map에 적어도 4 - 5개 Theme가 포함될 예정인데 이러면 2개 정도 넣으면 공간이 없다.

위 Tile Sheet에 보면 노란색으로 칠해놓은 녀석들이 있는데 모두 동일한 Tile이다.
Direction Index는 다르지만 결과물이 같은 녀석들이 저만큼씩 있는 것이다.

그리하여 저 녀석들을 제거하는 작업을 하기로 했다.
Texture 공간과 Memory를 교환하는 작업이랄까...

대충 만들어 잘 썼던 시간은 안녕이다.

.
.
.
이후에 Tile Animation 작업까지 하고나면 이 코드를 어디 팔아도 될 것 같다.
( @_@)y-~

------------------------------------------------------------

20190710

첫 작업은 Dir Index 와 Rect Index를 분리하는 것인가.

아 이거 까다롭구만.
( o_o)y-~

------------------------------------------------------------

20190715

진행중인 작업의 유용성.


------------------------------------------------------------

20190717

돌아가는 Template Code 를 작성하긴 했는데, mapping 과정에서 typedef 로는 작동하지 않는 것이 using 으로는 작동하는 것이 이해가 가지 않는다.

돌아가면 되는거 아니냐고?
그럴리가 있나.

이거 마무리 하면 밀도 있는 단련의 시간을 가져야겠다.
( '_')y-~

------------------------------------------------------------

20190717

Tile Animation Build 성공.


Tile Sheet는 뽑았는데 돌려줄 녀석이 없네.
이게 무슨 게임 샀는데 게임기 없는 꼬락서니 인가.

만들자.
( '_')y-~

------------------------------------------------------------

> 4번 추가

[20190709] Tile Piece, Pattern, Build

잠드는 시간이 일정치 않은 덕에 정신 못차리는 시간을 보내고 있습니다.
더불어 작업 시간도 들쑥 날쑥하고 무리하기 쉽상이네요.

건강을 위해서라도 얼른 대책을 찾아봐야겠습니다.
( o_o)y-~



작업 이야기를 해볼까요.

이 일지는 2019년 6월 24일 ~ 29일, 7월 2일 ~5일 그리고 7일의 작업을 대상으로 합니다.

작업 내역은...
  1. 24px용 Tile Set 제작
  2. Tile Builder 관련 모든 Data를 Table로 Export
  3. Test용 24px Tile Set 제작
...입니다.



1. 24px용 Tile Set 제작

지난 일지는 Tile Concept 작업에 대한 것이었습니다.
연달아 Tile 작업을 할 예정은 없었지만 자료를 찾다 발견한 Tile이 너무 마음에 들어서 "흉내를 조금 내볼까?" ...라는 마음으로 시작해버렸습니다.

여러 시행착오가 있었지만...


...이렇게 마무리 되었습니다.

2번 작업을 하느라 아직 Game에 적용은 못했습니다.
마무리 되면 일지에 남겨 보겠습니다.

적을게 많지만 잡설에 작업 내역을 남겨 놨기 때문에 이정도로 마무리 합니다.
작업 과정이 대충 담긴 잡설 ]



2. Tile Builder 관련 모든 Data를 Table로 Export

일지 작성이 늦어지게 만든 바로 그 작업입니다.

1번 작업을 끝내고 Tile Set을 Tile Builder에 넣으려고 했습니다.
그리고 저는 Code와 Data가 얽기 설기 엮인 참으로 아름다운 광경과 다시 마주하게 되었습니다.
미루고 미루고 다시 미뤄왔지만 24px 로 Tile 크기도 키운 상황. 대규모 작업이 예정되어 있는 마당에 정리 한다면 지금이라는 생각이 들더군요.

이 작업은...
  • Tile Piece Data Export
  • Tile Pattern Data Export
  • Tile Build Data Export
...의 3가지 일을 처리 하는 것으로 정리 되었습니다.

작업이야 지루하고 뻔한 반복작업이었기 때문에 각 Data에 대한 설명이나 늘어놔 볼까 합니다.


- Tile Piece Data

< 16px Dir8 Test Tile >

이렇게 생겨먹은 Tile Set의 그림 조각 정보입니다.

이 녀석을 빼내는 작업은 실수했을 때 원인 찾기가 어려워서 한땀 한땀 신중하게 옮겼습니다.
작업량이 정~~말 많아서 고생이었네요.


- Tile Pattern Data

어떤 Tile Piece 정보를 가져다가, 어떤 방식으로 조립해서, 어떤 용도로 사용할 것인가를 정의한 Data 입니다.
이 녀석이 Tile Sheet를 만드는 핵심입니다.

조립방식은 Dir0, Dir1, Dir8, Dir8_Reverse 등을 만들어 뒀고, Base, Wall, Room, Road, Blank, Deco_1 등등의 용도를 정의해 뒀지만...

길고 지루한 설명을 해야 하니 이쯤에서 접겠습니다. ( @_@)y-~


- Tile Build Data

Tile Build Data는 Tile Sheet에 어떤 Tile Pattern을 포함할지를 정의한 Data 입니다.
각 Theme 별로 어느 Tile Pattern을 사용할지를 지정할 수 있습니다.

Map 하나에 Tile Sheet 한 개 이기 때문에 해당 맵에 사용될 Theme를 모두 포함해야 합니다.

이 Data로 Build를 잘 하면...


...이런 녀석을 얻을 수 있습니다.



3. Test용 24px Tile Set 제작

이 작업은 2번 작업이 진행되는 과정에서 함께 진행되었습니다.
빼낸 Data가 정상인지 확인을 해야 하니까요.

다음과 같은 4가지 Tile Set이 만들어졌습니다.


Test용 Tile이기 때문에 최대한 실수를 파악하기 쉽게 만들었습니다.

Dir0 을 위한 Tile Set을 가장 먼저 만들었는데요.
20조각을 5종류 만들어서 Table에 넣었더랬습니다.
그랬더니 20 * 20 * 20 * 20 * 20 종류의 패턴을 조합하느라고 제 맥북이 죽으려고 하더군요.
처음에는 <어딜 잘못고쳐서 무한 loop가 되었나?> 라고 생각 했습니다.
메모리를 2기가 까지 찍고나서 작업이 마무리 되더라구요.
( o_o)y-~


일지는 여기 까지 입니다.


열흘이 넘게 작업했는데 생각만큼 적을것이 많지는 않았네요.
다행입니다. ~( ^_^)~

Tile Builder 가 대충 정리 되서 미뤄둔 새 Tile의 Sheet를 제작할까 했지만... 약간의 개선 작업이 예정되어 있어서 미뤄야 할 것 같습니다.

다음 일지는 아마도 Tile Builder 개선 작업과 새 Tile Sheet가 될 듯 합니다.



날씨가 많이 더워졌습니다.
거의 집 밖으로 나가지 않아서 체감은 못했지만 맥북의 온도가 올라간 것을 보니 크게 와닿는군요.

다들 더위 조심하시고 건강한 여름 되세요.
( '_')y-~

> 1번 수정