시작 글

약속한지 한주만에 저번주는 개발 일지를 재껴버리고 말았다. 새로운 전자기기가 생겨서 거기에 정신이 팔리는 바람에 집에 와서 코딩을 할 의지를 전혀 살릴 수가 없었기 때문이라고 어떻게든 변명을 하자면 할 수 있겠지만, 어쩌겠는가. 안한 것은 안한 것. 정말 낯부끄러워 얼굴을 들기 힘들다.

뭐, 아무튼 정신 차리고 이번주는 확실히 코딩 했으니까 조금은 정상참작의 여지가 있지 않을까 싶은데.

사실 저번주도 아예 하지 않은 건 아니고 커밋 하나를 하긴 했는데, 아무튼 주마다 결산을 하기로 했으니 그건 일단 포함시키지 않았다.


작업

screenshot
이번주 작업 분량


1. 라이팅

이번주는 전체적으로 라이팅 기능을 손봤다. 초기 버전에서 (리소스가 너무 허접해서)환경을 꾸미기 위해 넣어본 라이팅 기능이 있었는데, 오랫동안 방치되어 있었기 때문에 다시 살리려면 조금 손을 봐야 했다. 번거롭지만.

다행히 막상 작업해보니 되살리는 것 자체는 크게 어렵지 않았다. 문제가 됐던 건 두 가지 정도.

첫 번째로는 오브젝트 제작 관련 방식이 수기로 되어 있어서 Tiled에 연동이 되지 않았던 문제. Tiled에서 받아오는 타입과 맞춰서 조금 수정해주니 작동됐다.

두 번째는 오브젝트 소팅 문제. 빛이니까 항상 가장 위에 있어야 하는데 기존 로직에 맞춰서 대충 보수를 해뒀던 코드는 MapObjects 관리 쪽에 얘를 추가해주고 있어서 아무리 fornt()를 호출해서 최상단으로 올리려 해도 붙어있는 그룹의 위치가 주인공 아랫쪽이라 주인공이 늘 빛을 먹지 않는 문제가 있었다.

——
맵 오브젝트 - 내부에서 y 좌표에 따라 소팅
주인공
Overlaped 오브젝트 - 내부에서 y 좌표에 따라 소팅
——

현재 이런 상태로 소팅이 되는데, 맵 오브젝트에서 떼서 Overlaped 오브젝트로 옮겨주니 잘 작동했다. 물론 빛은 y 좌표에 영향을 받지 않아야 하니 Overlaped 오브젝트 소팅 후에 한번 더 front()로 끌어올렸다.

screenshot
라이팅 적용 화면

되살리는 것은 대충 이 정도로 마무리 할 수 있었다. 하지만 기존의 라이팅은 이번 시나리오에서 사용하기 조금 힘든 측면이 있었다. 그냥 색깔을 블랜딩 해주는 라이팅인데, 밤 효과와 함께 섞으려고 하니 밤 효과의 검정과 기존의 라이팅이 함께 섞여 우중충해지는 문제.. 그래서 알파 먹인 검정색을 씌우고 특정 원은 라이팅을 해주는 nightLight를 만들었다.

기존에 만들어둔 normalLight의 쉐이더를 정말 얼기설기 짰기 때문에 코드가 좀 곤혹스럽다.. 나중에 다시 고치긴 해야 할 듯 하다.

근데 막상 만들고 보니 그냥 가산 블랜딩을 써서 해도 됐을 것 같은 기분이…(또륵) 쓸데 없는 짓을 해버렸나..


2. 스크롤 시 주인공의 말풍선이 밀리는 문제

또 시나리오 관련 처리를 하다 보니 이벤트로 맵 스크롤 시에 주인공의 말풍선이 이상하게 밀리는 문제가 발생했다. 캐릭터의 자식으로 붙였던 것 같은데… 하면서 코드를 보니 아 맞아. 옛날에 소팅 관련 문제로 인해 맵에다가 말풍선을 붙여버렸었지. 그래서 맵에 붙은 말풍선이 스크롤 시에 함께 움직여버리는 문제였다.

즉, 주인공은 항상 중간에 있는데 말풍선은 맵이 움직이니 함께 움직여 버리는 문제.

스크롤 된 만큼 말풍선도 반대로 움직여줘서 처리했다. 간단-


맺음 글

이번주에 한 일 역시 게임의 전체적인 진도와는 크게 관계가 없는 일들이었네. 밤에 모닥불 근처에 있다. 글로 적으면 이렇게 간단한데 코드로 이걸 옮기려니 왜 이렇게 번거로운지.

아무튼 이번주도 코딩 했다. 그것으로 만족해볼까.