경사면 이동, 그래픽 작업

이번엔 쉐이더 작업을 위주로 많은 시간을 보냈습니다.

경사면 이동

movement

깔끔하게 경사면을 걸을 수 있게 되었습니다 (짝짝)

지금까지 평평한 바닥만 걷는 플랫포머를 만들다보니 구현하기 정말 힘들었습니다. 벽에 막 끼이기도 하고, 착지하는 순간에 예상과는 다른 위치로 이동하기도 하는.. 재밌는 현상이 발생했습니다. 하하

이전에 이벤트 참여를 위해서 만들었던 ●■▲ 게임이 많이 도움되었습니다. 이때도 이런 문제를 해결하기 위해서 노력했었죠. 어떻게든 벽에 끼이지만 않게끔 만들었었지만요.

사실 경사면을 없앨지 만들지 고민했었습니다. 아무래도 평평한 바닥만 있는 것보다는 생각해야 할 예외처리가 많았기에.. 적이 플레이어를 쫓아가는 방식이라던가, 경사면에서 이동할 때 속도의 변화라던가..

그래도 이런 요소가 없어지면 맵을 표현할 방법이 많이 줄어든다고 판단하고 그대로 가기로 결정했습니다.


캐릭터

character design

캐릭터는 어떤 사이즈로 그릴지, 어떤 그림체로 그릴지 결정했습니다. 단순하면서도 어떻게보면 섬세하면서 깔끔한, 그런 디자인 말이죠.

이런 느낌으로 그려야겠어! 라고만 결정했기에 아직 그려논 그림이 없습니다. 캐릭터 구상과 디자인이 끝나는대로 그림그려서 가져오겠습니다.

(MomodoraKatana ZERO의 게임이 많이 도움이 되었습니다.)


레이어 구성

layer

레이어 구성은 위 그림처럼 배경 / 타일 / 오브젝트 / 타일 로 나눠서 구성했습니다.

● 1번 레이어: 배경은 단색. 또는 움직이지 않을 이미지 (주로 하늘)
● 2~4 레이어: 카메라 시점에 따라 조금 움직이는 배경 이미지로 구성.
(타일이라고 적은 이유는 Tile set으로 구성할 것이기 때문)
● 5~7 레이어: 오브젝트를 그릴 레이어.
(3개로 나눠논 이유는 앞에 있는 오브젝트와 뒤에 있는 오브젝트를 구분하기 위해서)
● 마지막 8번 레이어: 플레이어가 밟을 수 있는 바닥 타일 이미지.
(젤 마지막에 위치한 이유는 cave story와 비슷하게 캐릭터를 가릴 수 있는 바닥과 풀 같은 식물들을 따로 그리기 위해서)

빛에 관련된 draw는 레이어 사이사이에 수행되도록 했습니다.


빛, 조명

light
light-2

제일 많은 시간을 쏟은 빛 시스템입니다.
이 시스템의 대부분은 쉐이더를 이용해서 구현했습니다.
원래는 normal map 이라는 텍스처 또한 그려서 구현할려고 했었으나..! 개발할 수 있는 시간이 부족했기에 이런 노말맵 이미지가 없어도 빛에 대한 표현이 가능하도록 만들었습니다.

보시면 아시겠지만 모서리에서만 빛이 그려지는 걸 볼 수 있습니다. Katana ZERO게임에서도 이런 식으로 표현했더라고요. 정말 깔끔하고, 이쁘게 구현되서 기쁩니다.

outline

플레이어가 어두운 옷을 입고 있을 때 배경도 어두우면 잘 안보이더라고요. 반대로 밝은 부분이 배경의 밝은 부분과 겹치면 경계가 모호해지는 경우도 생겼습니다.

그래서 배경에 따라 모서리가 항상 잘 보일 수 있게끔 자동 보정해주는 작업도 진행했습니다.

background with light
result
result 2

이것도 노말맵 텍스처 없이 그림자를 그릴 수 있게 작업한 모습입니다. 단순히 색상의 밝기 값을 깊이로 계산해서 그렸습니다.

sunlight
water and light

물 질감도 넣어주고 햇빛도 추가.

이것이 이번에 작업한 모든 것이 담긴 결과물입니다.


다음 목표

아직 배경과 오브젝트를 그리는 코드가 완벽하지 않아서…
지금 당장은 여태 작성해온 코드를 좀 더 다듬으면서 캐릭터 움직임과 피격에 관련된 시스템을 만들어 오도록 하겠습니다.




긴 글 읽어주셔서 정말 감사합니다.

모두 즐거운 밤 되시길!