[CoronaSDK] 블록 어태커 개발 일지
시작 글
추위가 몸살이랑 어깨동무 하면서 찾아왔었다. 그리고 이어서 크런치. 여러가지 외부 요인이 절묘하게 맞아떨어지면서 나는 또 일주일을 개발 일지를 미뤘다. 겨울 날씨가 유난히 시린 지난 2주였다.
지난주 일지는 사실 쓸 수 있었다. 하지만 일지를 쓸 만큼 충분한 양의 코딩을 하질 않았던 바람에..
습관은 숨을 쉬는 것처럼 자연스럽게 행할 수 있어야 하는데 가끔 이렇게 흐트러지는 경우가 왕왕 생긴다. 그럴 때는 심호흡을 하듯이 습관도 한번 골라줘야 한다.
지난주와 지지난주는 바로 그런 심호흡을 하는 기간이었다.
작업
2주 간 작업 분량
이번에는 얼른 필요한 스토리를 전부 진행해 버려야지 다짐했었는데, 막상 그렇게 해 나가자니 필요한 것이 산더미 같았다. 그냥 맵을 구성한다 -> 스크립트를 짠다. 이 두가지만 반복하면 어느 정도 선까지는 해낼 수 있을 줄 알았는데 완전히 착각이었다..
1. 3_field 맵 구성
세 번째 필드를 구성하기 시작했다. 근데 막상 본격적으로 플레이어블 맵이기 때문에 꽤나 골치가 아팠다. 그 중 꽤 골머리를 앓게 한 건 역시 아무래도 맵의 크기. 어느 정도 선에서 만족해야 할까. 그리고 맵과 맵 사이를 이동시키는 것은 허용할 것인가. 정해진 게 아무것도 없었다.
일단 적당한(하다고 생각되는) 크기의 맵을 구성해서 타일을 깔고 오브젝트를 배치하는 작업을 해보기로 했는데 이것만으로도 굉장히 진이 빠졌다. 자동으로 자연스럽게 이어지는 오브젝트(길이라던가 숲이라던가)를 깔아주는 기능이 있다면 편할텐데 싶어서 Tiled 스크립트 기능을 좀 검색해봤는데, 검색 하다가 또 이게 뭐하는 짓인가 싶어서 인터넷에서 고개를 돌렸다. 방법이 있을 법도 한데..
그리고 맵을 구성하다 보니 필요한 것들이 하나 둘 튀어나왔는데 저번에 구현한 맵 높이와 높이 사이를 이어주는 계단 기능이라던가 이벤트 시 동료의 대화창은 어떻게 표현할 것인가, 그리고 맵에 배치된 NPC들의 AI는 어떻게 조작할 것인가가 바로 그것들이다.
다행히 NPC AI 기능은 이번에 얼추 구현했다.
2. NPC AI 기능
루아를 사용하면서 정말 편하다고 생각하는 기능 증 하나가 바로 Duck Typing. 인스턴스의 타입을 체크하지 않고 함수가 있다면 같은 타입으로 취급하는 기능이다.
예전에 C#으로 Behavior Tree를 구현할 때는 정말 한참이 걸렸던 것 같은데(구조화에 심하게 공을 들였기 때문이기도 하지만..) 스크립트로 처리하니 약식이지만 꽤 그럴듯하게 굴러가는 Behavior Tree를 만들 수 있었다.
이런 AI 스크립트 같은 것들은 더 직관적이어야 하는데. 비주얼 툴이 있으면 더 좋을테고.
하지만 나 혼자 쓰는데 그렇게까지 하는 건 역시 욕심이다.
3. 흐르는 물 쉐이더 추가
이건 갑자기 그냥 해보고 싶어서 진행한 건데, 말 그대로 물이 흐르는 기능이다. 물 타일에 붙일 요량으로 슥삭 만들어 봤는데 적은 효용 대비 꽤 그럴듯해서 만족스러웠다.
그냥 오른쪽에서 왼쪽으로 텍스처 UV를 조작했을 뿐.
하지만 Atlas이기 때문에 단순히 UV를 조작하면 다른 타일들이 막 흘러갔기 때문에, 좀 조잡하게 하드코딩을 적절히 섞어서 구현했다.
… 에잉 몰라. 미래의 나에게 떠넘겨야지.
맺음 글
벌써 12월 중순이다. 분명히 여름에 개발 일지를 쓰기 시작했던 것 같은데.. 정말 시간이 야속하다.
하지만 어쩌랴, 내가 할 수 있는 건 습관과 코드를 다듬고 이어 붙여 하루 하루를 살아 보는 것 뿐이다.
자, 다시 코딩 해보자.
