Fake 3D, 대화 상자
벌써 2주가 넘었네요. 더 빨리 찾아오고 싶었는데…
하드가 죽으려고 해서 저장장치를 ssd로 교체하는 겸 CPU도 교체하고 램도 추가했습니다. 그래서 시스템 다시 설치하고 세팅하느라 시간 왕창 날려버렸습니다. XD
그래픽 품질을 위한 노력

평범하게 이미지를 회전시켜서 출력하면 왼쪽과 같이 깨지는 현상이 있었습니다.
이걸 어떻게 이쁘게 처리할 방법이 없을까.
고민하던 와중에 에이스프라이트에서 사용된 회전 알고리즘이 Rot-Sprite
라는 이미지 처리 방식이라는 것을 알게 되었습니다. 여러 검색을 거쳐서 Scale3x
에 기반한 Fast Rot-Sprite
소스 코드를 발견했고, 이를 통해서 스프라이트를 이쁘게 뭉개는 것에 성공했습니다.


이것을 연구한 이유는 2D 이미지를 겹겹이 쌓아서 3D처럼 보이게 만드는 fake3d
를 구현하기 위함이었습니다. 그냥 이미지를 회전시켜 쌓아올리면 지진이 나듯이 흔들리는 현상이 발생했습니다. 그리고 완전히 눕혔을 때 이미지가 너무 납작해져서 완전히 사라지는 현상도 있었기에 그대로 이용하기에는 무리였습니다.

그래서 Fast Rot-Sprite
방식을 이용해서 이미지를 이쁘게 회전시켰고, 아무리 납작해져도 이미지가 사라지지 않게끔 이미지 좌표 값을 계산해서 출력할 수 있도록 코드를 작성했습니다.

마지막으로 간단하게 검을 그려서 출력시킨 모습입니다.
( 되게 귀엽지 않나요 ㅋㅋ )
이렇게 열심히 만들었지만 생각보다 GPU를 많이 잡아먹더군요. 게임에서 실시간으로 계산하는 것은 무리가 있기에… 스프라이트를 미리 만들어놓고 출력시키는 방향으로 가야할 것 같습니다.
3D 게임에서 요구하는 사양을 낮추기 위해 변하지 않는 그림자는 미리 렌더링을 해놓는 것처럼 말이죠.
대화 상자

이 이미지는 옛날에 만든 대화 상자입니다.
충분히 깔끔하고 직관적이긴 하지만 게임 분위기에 더 어울리게끔 만들기 위해 뜯어 고쳤습니다.

이것이 새롭게 만든 모습입니다.
아직 완성한 것은 아니지만 나름 결과물이 이쁘게 나와서 올려봅니다.
어떤 선택지를 고르고 있는지 이전보다 더 잘 보여주는 것 같아서 좋네요.
캐릭터 모션 계속 만드는 중...

모션을 계속 그리고 적용하고.. 반복 중입니다.
지금은 달리기, 숙이기, 일어서기, 구르기, 매달리기 정도만 구현되어 있습니다. 구현해야 할 것들이 산더미네요.

이런 식으로 작업하고 있습니다.
매번 결과물을 게임 안에서 확인하지 않아도 돼서 정말 좋습니다.
그 외 잡다한 이야기

움직이는 발판 위를 달릴 수 있도록 코드를 수정했습니다. 근데 버그가 좀 많아서 다시 뜯어고쳐야… (눈물)
다음 목표
대화 상자는 계획대로 만들었지만… fake 3d 구현에 힘쓴다고 피격 시스템은 만들지 못했군요.
피격 시스템을 구현하면서 캐릭터 모션 몇 개 추가하고, 이펙트도 적용해보는 방향으로 목표를 잡겠습니다.
연말 잘 마무리하시길 바라면서. 모두 즐거운 밤 되시길!