MidNight / Direct2D

2023. 9. 1. 23:02게임/내가 만든 게임

 

게임 장르 :  2D 플랫포머 

 

제작 기간  :  23.08 (3주)

 

개발 환경  :  C++ ,  Direct2D , Win32 API 

 

플레이 영상  :  https://youtu.be/zjurtTQS2R8

 


개발 과정

 게임인재원 2Q 미니 프로젝트를 진행하였다. 이번에도 프로그래밍 4명으로 팀을 만들었다. 이후에는 기획자분들이 자신의 기획한 게임을 발표하시는데 MidNight 게임의 발표를 보고 이 게임을 선택하였다. 선택한 이유는 2D플랫포머이고 빛과 파티클이 게임에 잘 어울리고 맵툴이 필요한 게임이었기에 팀의 방향성과 가장 적합하였습니다. 

 

구현

 

이펙트

Direct2D에서 지원하는 Effect 기능들을 활용해서 실제 게임에 적용했습니다.  첫 번째 이미지는 포인트 라이트를 사용해서 빛을 구현하였습니다. 

포인트 라이트 예시 이미지

포인트 라이트는 알파값으로 그림자를 생성하기 때문에 알파값이 0인 비트맵에 라이트를 그리면 그 비트맵을 다시 화면에 그리면 점 광원이 네모난 모양으로 잘리기 때문에 다시 알파마스크 이펙트르를 사용해서 원형 이미지로 잘라주었습니다.  최종적으로는 게임에서 나온 다양한 파티클들과 포인트라이트를 결합하였습니다. 

 

꽁꽁어는 효과

꽁꽁 어는 효과는 색깔을 추출하는 이펙트와 애니메이션을 느리게 재생하여 움직임이 둔해지는 효과를 구현하였습니다.   구현 방법으로는 얼음에 닿으면 RGB값을 추출해서 점점  ratio에 따라서 원래의 색깔을 찾아가게 만들었고 ratio에 따라서 애니메이션도 천천히 재생하였습니다. 

 

소감

2Q 프로젝트로 게임을 완성해서 만족스러운 경험이었다. 먼저 팀워크가 잘 맞아서 만족스러운 결과물이 나왔던 것 같다. 이펙트와 파티클을 합쳐서 게임 그래픽을 발전시키고 , 플레이어 충돌과 같은 여러 가지 어려운 처리들을 해결하면서 같이 성장하는 기분을 느낄 수 있었다.  그리고 실제로 다른 사람이 내 코드를 사용하는 경험을 할 수 있었기 때문에 더욱더 도움이 되었다. 

3주간의 기간 동안 여러 가지 개발을 하면서 아쉬운 점은 마감기한이 다가올수록 마음이 급해져서 완성도가 없는 코드를 자꾸 작성하게 되었다. 남이 보기도 어렵고 사용하기 어려운 코드들이 많았다. 2D플랫포머에서 필요한 기능들이 많았고 이것들을 내가 직접 구현하려고 하다 보니깐 생각보다 시간이 짧았고 엔진에서 충돌 처리를 하는 논리에서 불필요한 연산들이 많았던 것 같다. 

3주는 절대로 긴 기간이 아니었다...