2019년 6월 28일 금요일

[20190628] 잡설 - 유연성

개발이 중반을 넘어가면 코드 품질에 신경을 쓰지 않을 수 없다.

마무리를 확실하게 해두지 않으면 비용이 열 배, 백 배로 돌아오기 때문이고, 일이 터지면 정신 건강과 손목 건강이 수습 되지 않기 때문이기도 하다.

거기에 덤으로 자동화에도 최대한 신경을 써야 하는데...

코드 품질과 같은 취지에서 어떤 데이터를 생산하건 그것을 관리하는 일은 자연히 따라오기 마련이고, 가뜩이나 일들이 까다로워지는데 디테일을 손보는 과정에서 번거로운 일들이 벌어지면 안되기 때문이다.

그런 이유에서 아주 오랜시간 코드에 박혀있던 Tile Build 관련 Data를 빼내기로 했다.

아이고 언제 다 하냐.
( '_')y-~

> 일지는 이 작업 까지 마무리 하면 쓰자.

> 1번 수정

2019년 6월 24일 월요일

[20190624] 잡설 - 늘었어.

지난 Tile Concept 003 작업 이후로 실력이 쬐~~~끔 오른 것 같다.

의도치 않게 또 tile을 찍고 있는데 찾아보는 자료들의 의도라고 해야 하나 패턴 이라고 해야 하나, 전에는 눈에 들어오지 않던 것들이 들어온다.

자기 학대 뒤의 성장.
피할 수 없는 무한 Loop 이긴 하지만 그리 즐거운 과정은 아니구먼.


하지만 색상을 보는 눈은 전혀 늘지 않았지. 하 하 하
( o_o)y-~


> 역시 도둑질도 실력이 있어야 한다.
> 지금 찾아보는 자료는 "The Legend of Zelda - The Minish Cap"
> 이 게임 Tile이 정말 아름다워.

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


palette 흉내중.
베끼기는 안돼. 방식만 배워온다.
( '_')y-~

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

20190625

이 둘중에 하나로 낙점할 듯.


채도를 낮춰야 하는가...
( '_')y-~

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


흐으으음... 단련된적 없는 능력을 활용하려니 결정장애가 오는구나. ( '_')y-~

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


"선생님. 그만 쳐 노시고.. 일을 하셔야 하지 않겠습니까."
( o_o)y-~

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

20190626


이 것으로 Concept 완료.
Builder에 넣기 위한 작업 시작.
( '_')y-~

> 근데 위가 아퍼.
> 조급해 하지 말고 쉬자.
> 어차피 다 내가 할 일이니까.
---------------------------------------------------------------------

> 6번 추가
> 1번 수정

2019년 6월 21일 금요일

[20190621] Tile Concept 003

더워지고 있습니다.
곤란한 계절이 슬슬 시동을 거는 모양입니다.

선풍기뿐인 방에서 시원하게 작업하려면 얼음이 필수죠.
내동실에서 제빙틀을 꺼내 씻어 말리고 물을 부어 얼음을 만들었습니다.

뭐랄까... 얼음은 미묘한 풍미가 있는 것 같습니다.
보리차에 넣어도 뭔가 더 맛있는 느낌적인 느낌이거든요.

그렇습니다.
( '_')y-~



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

이 일지는 2019년 6월 16일 작업의 일부, 18일 ~ 20일 그리고 21일 작업의 일부를 대상으로 합니다.

작업 내역은...
  • 새 Tile Concept 의 제작
...입니다.

요즘들어 작업 내역이 짧네요.
목록이 간결하다는 것은 흔히 설명할 것이 많다는 의미이기도 하죠. @_@
이 일지는 과연 어떨런지.



+ 새 Tile Concept 의 제작

Tile 작업은 언제나 언제나 변함없이 Concept의 제작으로 시작합니다.

가장 못하는 분야이기도 하고 Monster, Object 등과는 다르게 영향이 광범위하고 틀어지면 수습이 힘들기 때문입니다.

전 Twitch로 Retro Game의 Speedrun 방송을 자주 틀어놓는데요.
거기서 잊고 있던 그것을 다시 보고 말았습니다.

< Megaman2 - Flashman stage >

"나도 파랗고 반짝이는 Tile이 가지고 싶다."
...그렇게 시작했습니다. @_@



첫 작업은 원본에 가까운 Megaman2 Tilesheet를 구하는 것 이었습니다.
이런 일에 도움을 주는 사이트들이 여럿 있습니다. 그곳에서 쉽게 구할 수 있었죠.

이어서 분석과 간보기에 착수했습니다.
색상과 패턴 배치 그리고 특징을 찾아보고 흉내내서 찍어보는 과정입니다.

그리고 오래지 않아 "내 게임에는 맞지 않는다" 는 것을 알게 되었습니다.
  • 색이 강해서 Palette 흉내는 불가하다.
  • 타일이 굉장히 부각되는데 내 게임은 그래서는 안된다.
  • 실력이 부족해서 느낌을 살릴 수 없다.
...정도의 이유로 말입니다.


그래서 반짝이는 것은 포기하고 파란 Tile을 작업하기로 했습니다.

구글링을 통해 얼음과 눈이 나오는 Tile들을 수집하고
Twitter에서 여러 예술가들의 작품을 관찰하고
흉내내기 작업도 몇차례 가지고나서


첫 결과물은 이렇게 나왔습니다.
여전히 얼음 블럭 느낌에 어떤 미련이 남아 있는 결과물 입니다.

만들다보니 Tile Size를 키우는 작업이 예정되어 있다는 것이 떠올랐습니다.
재작업을 피하기 위해 Tile의 기준 크기를 16x16 에서 24x24로 키웠습니다.


바닥 Tile이 점점 맘에 안듭니다.


이리 저리 수작을 부려보지만. 그런게 잘 통하는 경우는 잘 없더라구요.
그래도 나중에 물 패턴에 적용할 그물( ? ) 패턴은 얻었네요. ( o_o)y-~

결국 유일하게 자신감을 가지고 있는 문양 패턴( ? ) 찍기를 활용해서 갈아 엎었습니다.


심심해진 감이 있지만 괜찮아 보이네요.

여기 까지 왔으면 다음은 노가다 입니다. 될때 까지 계속 찍고 또 찍는거죠.
그리하여...


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

게임에 올리는게 가능할 정도로 작업했으면 좋았겠지만 그러려면 이 녀석들을 분해해서 Tile Builder에 투척이 가능해야 합니다.
손목이 시큰거리기도 해서 그건 잠시 미뤄 둡니다.

대충 4일동안 18시간 책상에 붙어 작업했습니다.
일 당 작업시간이 상당히 형편없는데요. 핸드폰 붙들고 Twitter에서 자료를 검색한다거나 Game 영상을 찾아본다거나 머리를 쥐어 뜯는다거나를 반복했기 때문에 실제 작업시간은 제법 길었답니다.
( '_')y-~

작업을 마무리 지을쯤에는 최근에 나온 "cadence of hyrule" 의 자료를 많이 찾아봤습니다.
그러면서 이런 생각을 했더랬습니다.

"내 작업의 품질이 저정도가 나와야 하는 건가?"

답은 "아니오" 였고 맘편하게 작업을 끝낼 수 있었네요. ( ^_^)y-~

일지는 여기 까지 입니다.



손목, 어깨, 목 언저리... 가 안좋습니다. 이 작업하면서 무리한 덕이겠죠.
오늘은 꼴랑 1시간 반 작업했지만 맘편하게 작업을 접을 생각입니다.

주말 잘 쉬고 월요일에 다시 작업 들어갑니다.

다들 즐거운 주말 보내시고 행복하세요.
( '_')y-~!

> 1번 수정( 간단한 영단어를 틀려버림. 하 하. )

2019년 6월 18일 화요일

[20190618] 잡설 - 지쳤으면 찍어야지.

+ twitter 에서 옮겨옴.

20190618

Researching new tile pattern~!
( '_')y-~

코드 작업에 너무나 지쳐버린 것이다.
그렇다면 Dot를 찍어야지.

공부할게 너무 많은 스타일이지만...
찍다보면 길이 보이겠지.


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

20190618

타일 한 묶음을 며칠 만에 완성해야 수지가 맞는 걸까?
모르겠구만.
( '_')y-~

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

20190619

어제보다 나아진건가.


잘 모르것네.
( @_@)y-~

Monster등의 크기 증가를 위해 Tile 기준을 16x16 에서 24x24로 키움.

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

20190619

흐음...
제대로 만들고 있는 것인가.
( '_')y-~


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


> 1번 수정
> 4번 추가

[20190618] 잡설 - 부족해

경로 산출
경로의 두께 조절 기능
인벤토리 연계
가이드 뷰
경로 이동 노드
노드의 공격 기능
노드의 스폰 기능
연출
.
.
.

짧은 시간에 제법 많은 기능을 만든 것 같은데 왜...
  • 이 정도 작업량으로는 부족하다""
...라는 생각이 머리를 떠나지 않을까.


아마도 부족하다는 생각이 틀린건 아닐꺼다.
남은 시간과 거기에 맞출 체력이 내게 없다는 거겠지.


압박감을 넘어설 정도의 집중력 아니면 무시할 정도의 마음의 여유가 필요하다.
체력은 단기간에 해결하기 어려우니까.
( '_')y-~

> 1번 고침

2019년 6월 16일 일요일

[20190616] Throw #4 - 일단 마무리

날씨가 정말 정말 좋습니다.
덕분인지 산책도 할 수 있었네요.
10km 쯤 걸어봤는데 부담이 느껴지긴 했지만 즐거운 시간이었습니다.
다행하게도 면역력 역시 이상이 느껴지지 않았습니다.
( ^_^)y-~



작업 이야기를 해볼까요.

이 일지는 6월 12일 ~ 14일 그리고 16일 작업의 일부를 대상으로 합니다.

작업 내역은...
  • 두께가 1 이상인 투척 경로의 개선
...입니다.



투척 경로 산출 작업은 지난 일지로 끝났었습니다.
몇 가지 만족스럽지 못하지만 쉽게 마무리 하는데 도움이 될 요구사항들로 작업을 마무리 했었죠.

그런데 말입니다..
그게 게임에서 돌려보니 영~~~ 만족스럽지 않더란 말입니다.
개발자인 저는 만족 했던 기능이.
유저인 저는 만족하지 못하더군요.
( '_')y-~

손이 많이 가고.
시간을 많이 잡아먹지만
좀 더 그럴싸한

그런 투척 경로를 만들어야 겠다는 생각이 들었습니다.



두께가 1 이상인 투척 경로의 이전 요구사항을 살펴봅시다.

1. 8 방향 기준으로 만든다.
2. 경로 사이에 빈틈이 없어야 한다.
3. 위, 아래, 좌, 우 4방향을 기본 방향으로 한다.
4. 확장된 경로는 주 경로를 수평이동해서 만든다.
5. 대각선은 예외 처리 한다.

이와 같은 요구사항을 반영한 결과는...


...이렇습니다.

"경로가 이상하네" 라고 느끼는 사람이 있겠지만, "이 정도의 부실함( ? )은 나름의 재미 요소로 쓰일 수 있지 않을까?" 라고 생각했습니다.


하지만 유저인 저를 만족시키지 못했죠. ( o_o)a

그래서 개선작업에 착수했습니다.



두께가 1 이상인 투척 경로의 새로운 요구사항은 다음과 같습니다.

1. 기준 방향 없다.
2. 예외 처리 없다.

즉 자연 스러운 경로를 만들자는 겁니다.

요구사항을 정리한 이후 어떻게 알고리듬을 조정할 것인지를 놓고 20시간쯤 머리를 쥐어 뜯으며 아래의 그림을 만들었습니다.


그리고 이전의 알고리듬이 제공하는 긍정적인( 버려서는 안되는 ) 부분 은 유지하면서 기능을 확장했습니다.


눈치 빠르신분은 요구사항 2종류와 그림을 보시고 코드 꼬락서니가 어떨지 감이 오실겁니다.

그러므로 더이상의 자세한 설명은 생략합니다. ( +_+)y-~

투척 경로 작업은 여기까지 입니다. 자잘한 버그나 기능개선이 아니면 한동안 손대지 않을 것 같네요.
그리고 이번 일지도 여기까지 입니다.



하나 하나 확실히 만들어가고 있습니다.
코드 복잡도가 이전 게임보다 많이 높아서 이쯤오니 확실하게 하지 않으면 후폭풍이 감당이 안되네요.
느려도 확실하게 마무리 하고 갑니다.

전 잠깐 쉬고 오랜만에 Dot 작업을 할 계획입니다.

다들 좋은 날씨 잘 즐기시고
전 쉬러 갑니다.
( '_')y-~

> 2번 고침

2019년 6월 12일 수요일

[20190612] 잡설 - 어렵네

머리 빠개지는중.
( @_@)y-~


적당히 마무리 하려고 했건만...
회차를 거듭함에 따라 모양새가 좋아지는 것은 게임 플레이나 코딩이나 다르지 않다.

갈아 엎어야 하는가.

> 3번 수정

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

나는 알고리듬 개선 작업을 하고 있는 것인가.
아니면 사각형에 대한 고찰을 하고 있는 것인가.
( '_')y-~

어느 쪽이건 간에 일이 진행된다는 것은 사실이다.

2019년 6월 11일 화요일

[20190611] Throw #3

여전히 집에만 박혀 생활하고 있습니다.

잠드는 시간과 깨는 시간이 슬슬 안정을 잡아가고 있는 덕에 약간의 활력이 돌아왔네요.
작업 시간도 조금 늘었습니다.

그동안 어지간하면 주말 이틀을 쉬어왔는데 요즘은 주말에 하루, 주중에 하루 쉬고 있습니다.
뭔가 일이 계속 반복되는 느낌과 피로감이 있네요.
익숙해지면 괜찮아지는 것인지.... 모르겠습니다.
( '_')y-~



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

이 일지는 6월 10일, 11일의 작업을 대상으로 합니다.

작업 내역은...
  1. 발사체를 통한 Spawn
  2. 투척 경로 산출에 굵기 속성 추가
  3. 발사체에 개선된 투척 경로 적용
...입니다.



1. 발사체를 통한 Spawn

Monster 중에 Map에 무언가를 만들어내는 녀석이 있었습니다.


바로 이 녀석 이죠.

같은 기능이 발사체에서 가능하게 작업했습니다.


원활한 Test를 위해 Dummy Item 과 Dummy Effect 가 하나씩 추가 되었습니다.
( ^_^)y-~


2. 투척 경로 산출에 굵기 속성 추가

지금의 투척 경로는 단 한 줄로만 만들어 집니다.
그런데 집어던지는 것들의 두께가 모두 같을리는 없겠죠.

그래서 굵기 속성을 추가해서 투석경로가 다양한 굵기를 가지도록 작업해봤습니다.

경로 산출을 위한 기준점을 확장하고


경로를 확장했습니다.


많고 많은~! 시행착오가 있었지만 재미 없는 부분이니까 넘어갑니다.



3. 발사체에 개선된 투척 경로 적용

2번 작업에서 확장된 투척 경로를 발사체에 적용했습니다.


그렇습니다.

미묘한 버벅임이 있네요.
Debug 모드에 Leak Detector 가 적용된 상황이지만 용서될 수는 없습니다.
조만간 만들어놓고 제대로 쓰지는 않은 Caching 기능을 적용해야겠네요.

일지는 여기까지 입니다.



요즘은 오후 6시 전에 작업이 거진 마무리 됩니다.
아침 일찍 일어난 덕분이죠.

기온이 더 올라가면 피난을 가던가 낮밤을 바꿔야 할텐데 이 생활 패턴이 얼마나 지속될런지... 모르겠네요.

다들 좋은 하루 되세요.
전 쉬러 갑니다.
( '_')y-~

2019년 6월 8일 토요일

[20190608] Throw #2

조용히 작업에만 집중하는 시간을 보내고 있습니다.

몸은 많이 회복한 것 같은데... 체력이 아프기 전의 절반이 되지 않는 것 같습니다.
이거 좀 아프네요.
전과는 다른 의미로 의욕이 넘치지만 몸이 따라오질 않습니다.

수면시간이 안정되면 얼른 산책을 시작해야겠습니다.



작업 이야기를 해볼까요.

이 일지는 6월 3일 ~ 5일, 7일, 8일의 작업을 대상으로 합니다.

작업 내역은...
  1. Interaction Process 개선
  2. Item이 활용되는 Interaction의 정규화
  3. 투척 경로 산출에 관통 속성 적용
  4. 발사체 Node 추가
...입니다.



1. Interaction Process 개선

2번 작업을 위한 준비 작업 입니다.
Interaction 처리의 주체를 ManagedActor와 Item등의 말단 객체에서 Core Data라는 이름의 Class로 대신하는 작업입니다.

주요 데이터의 저장소 또는 대리자로서 여러 객체들의 의존성 관리에 많은 도움을 줄거라 생각합니다.



2. Item이 활용되는 Interaction의 정규화

1번 작업에 힘입어 전용 코드를 사용하던 Item 과 Actor 간의 Interaction 을 정규 처리 흐름안으로 집어넣었습니다.

여기 까지 오는데 정말 많은 작업을 했지만... 이만큼의 작업을 더 해야 말끔하게 정리될 겁니다.
지금 할 것은 아니지만요.
( o_o)y-~



3. 투척 경로 산출에 관통 속성 적용

관통 Stat을 추가했고 이 것을 투척 경로 산출에 적용 했습니다.


그렇습니다.



4. 발사체 Node 추가

발사체 관련 기능은 Player A.I 에 작성되어 있었습니다.
이 기능의 폭 넓은 활용을 위해 관련 기능을 대신 처리해줄 Projectile Node를 추가했습니다.

일반화 작업이 마무리 되었으니 조만간 다른 Actor들이 Projectile Node를 활용하게 만드는 작업을 하게 될겁니다.

그 전에 발사체를 통한 Spawn 기능을 처리 해야 하지만요.
( @_@)y-~


일지는 여기까지 입니다.



함께 5년을 지내준 선풍기가 목이 부러졌습니다.
새로 살까 했는데... 올해만 그냥 쓰기로 했습니다.
몇가지 Item( ? ) 을 활용하면 그럭 저럭 쓸수는 있더라고요. @_@
개발을 마무리 하고 홀가분하게 새로 사겠습니다.

다들 좋은 하루 보내시고~!
전 쉬러 갑니다.
( '_')y-~

> 1번 고침

2019년 6월 5일 수요일

[20190605] 잡설 - 변환

"어딘가에서 곱하기는 세계의 변환이다."
...라는 문구를 본적이 있다.

그리고 그 곱하기로 이 세계, 저 세계로 굴러다니다 보면 값에 주어진 엄밀함이 맥없이 사라지는 경우가 더러 있다.

오늘 사소한 버그를 잡기 위해 엄밀함을 기대하며 산출한 값에 약간의 노이즈를 첨가했고, 알고리즘이 잘 굴러가게 되었다.
( '_')y-~

> 코딩을 어거지로 배워야 할 친구들이 이런 재미를 맛봤으면 좋겠건만
> 아마도 무리겠지.


> 3번 고침

2019년 6월 4일 화요일

[20190604] 잡설 - ...

접촉할 수 있는 거진 모든 것들을 무시하거나 방치 하면서 작업 중이다.
걱정되는 부분이 몇 곳에 있지만 진작 이랬어야 하나 하는 생각이 들기도 하고... 복잡하다.

Social Media 쪽은 완전히 놓아버렸다.
Facebook은 완전 방치 상태고, Twitter는 Pixelart 자료 수집용으로만 쓰고 있다.

지난 달의 난장 이후로 내 안에서 무언가 변한 것 으로 보이는데 지금으로서는 이게 좋은지 나쁜지 모르겠다.
차갑게 식었다고 해야 하나.
변한건 변한거니까 일단 받아들이는 수 밖에...


"작업에만 집중한다." ...가 이달의 목표다.
환경은 만들었고 재미 요소가 필요하다. 이 달안에 어느정도 모양을 뽑아보고 싶다.
( '_')y-~

2019년 6월 1일 토요일

[20190601] Throw #1

더운 계절이 왔습니다.
아직 불편한 정도는 아니지만 조만간 어딘가로 피신해야 할런지도 모르겠습니다.
작업이 가능한 커피숍을 찾아놔야겠네요.

몸은 어느정도 회복이 되어서, 어제는 "이제 좀 살만하네" 라고 생각했습니다.
하지만... 낮/밤이 완전히 바뀌어서 그닥 살만하지는 않네요.
( o_o)y-~



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

10일 만의 일지 입니다. 일지 간격이 좀 기네요.
잡설의 작성이 뜸해져서 더 긴 것으로 느껴지는군요.

이 일지는 5월 22일의 일부, 23일, 25일 ~ 29일, 31일 그리고 6월 1일 작업을 대상으로 합니다.

작업 내역은...
  • Item Throw를 위한 모든 것
...입니다.


몸이 엉망인 덕분에 작업 시간은 50시간 정도로 짧았지만 일은 많이( ? ) 진행되었습니다.
오늘 일지는 이 작업에서 중요했던 순간들을 몇 개 짚는 것으로 작성해보려 합니다.




1. 위치를 특정한다.

무언가를 던지려면 던질 위치를 특정할 필요가 있습니다.
그것에 최적화된 도구는 Mouse 입니다.

Mouse 위치를 활용할 수 있게 관련 기능을 손 봤습니다.


이렇게 Test Scene에서 확인이 가능하지요.



2. 선을 Grid로 변환 한다.

공간이 특정 크기로 규격화 되어 있는 게임이다보니 Ray 를 활용한 간편한 충돌대상감지는 Game에 맞지 않습니다.

그리하여 시작점과 끝점을 지정하면 그것을 Grid 공간의 경로로 변환하는 기능을 만들었습니다.


Twitter에 이 영상을 올렸더니 어느 외국인 친구가 뭐하는 게임인지 전혀 모르겠다고 하더군요. @_@



3. 유의미한 경로로 제한 한다.

Grid Data의 정보를 참고하여 경로가 벽을 뚫고 가지 못하도록 제한 하였습니다.


이정도면 발사체의 이동 경로로는 충분해 보입니다.



4. Inventory 와 연계하여 경로를 보여준다.

Test Scene에서 만든 기능을 Game에 얹었습니다.


경로용 Tile이 이상하죠?



5. Tile 을 넣어본다.

급하게 Tileset을 만들어서 적용 했습니다.


자리잡기 용도라서 특별한 것은 없습니다.
이거 작업하다가 Tile Build 관련 Bug를 하나 잡았습니다. ( ^_^)y-~



6. 발사체를 이동한다.

발사체 노드를 경로에 맞춰서 이동 시켜봤습니다.


여러 시행착오 끝에 마음에 드는 이동 속도를 찾았습니다.



7. 때린다.

무수한 Item 관련 Refactoring과 Data 재설계 끝에 지정한 장소에서 공격 판정을 만들어 냈습니다.
( '_')y-~


여기 까지 진행하면서 이전 일지에서 언급했던...

  • Item, 행동, 대상의 3가지 조합으로 Item활용을  처리 하는 것

...이 완전히 확립되었습니다.

Damage 가 정상표시 되지 않는 것은 Item과 Actor간의 공방 처리가 정규처리를 따르지 않고 별도의 처리 로직을 가지고 있기 때문입니다.

지난번에 관련 기능을 만들면서 Item 관련 기능은 손보지 않았는데요. 지금 저 녀석을 제대로된 처리 흐름안에 포함하기 위해 여러 부분을 갈아 엎는 중입니다.

일지는 여기 까지 입니다.




어제는 이 달 들어 처음으로 산책을 했습니다. 1.5km의 짧은 거리였지만 산을 오르내리는 거라서 나름 운동이 되었네요.

일지를 5월 31일에 작성하고 싶었는데 낮/밤이 뒤집히다보니 6월 1일에 와서야 작성했습니다.
지난 일지에서... "일지 간격이 10일 씩 되는 것은 좀 아니다 싶었습니다." ...라고 적었는데... 뭔가 스스로에게 면목이 없군요. @_@

다음 일지는 이른 시기에 작성해보겠습니다.

일교차가 좀 있는데 다들 감기 조심하시고 좋은 하루 되세요.
전 잠깐 쉬고 다시 일하러 갑니다.
( '_')y-~