로봇은 실수하지 않아 / Win32API (게임인재원)

2023. 6. 2. 16:53게임/내가 만든 게임

로봇은 실수하지 않아

 

게임 장르 :   요리, 스텔스 시뮬레이션

 

제작 기간  :  23.05 (2주)

 

개발 환경  :  C++ ,  Win32 API 

게임 플레이 영상

 


개발 과정

 게임인재원에서 1Q 마지막으로 Win32 API 프로젝트를 진행하였다. 먼저 프로그래밍 팀을 결성하고 그 후에는 기획안을 보고 선택하는 방식으로 진행하였습니다. 이번 프로젝트에는 전체적으로 팀장을 맡고 싶었기 때문에 팀장을 지원하게 되었고 총 4명의 프로그래머 팀을 결성하게 되었습니다. 이후에는 팀원들과 상의하여 게임은 선택하였는데 기존의 요리 게임인 오버쿡과 비슷하고 구현 난이도가 적절하다고 생각해서 게임을 선택하고 개발하게 되었습니다. 이후에 2주 동안의 개발과정에서 어려움은 많았지만 성공적으로 게임을 제작하였습니다.
 

구현

 전체적인 게임프레임 워크, 카메라효과, UI를 담당하였습니다. 

조명 카메라 

카메라 라이트 효과

 메인 화면에서 마우스 좌표에 따라서 움직이는 조명을 구현하였습니다.  먼저 미리 만들어둔 라이트 텍스처를 불러오고 라이트 택스처를 마우스 위치에 따라서 회전하는 각도 값을 설정하여 PlgBlt을 사용해서 회전하여 카메라 효과 텍스처에 복사하고 랜더링 과정에서는 알파블랜드 함수를 사용하여 화면에 출력하였습니다. 

마우스 위치에 따라서 라이트 텍스처를 회전하는 로직 
회전한 텍스처를 가지고 화면에 출력하는 로직

 
 

플레이어 포커스 아웃  카메라  효과

 

카메라 포커스 아웃 효과

먼저  플레이어 위치와 카메라 진행시간에 따라서 원이 그려지는 위치와 크기를 정하고 카메라 텍스처에 마젠타 색상을 사용하여 원을 그리고 카메라 효과가 랜더링 하는 시점에서는  TransparentBlt 함수를 사용해서 마젠타 색상을 제거해서 카메라 효과를 만들었습니다.

포커스 아웃 로직

 

컸신 

 

게임 컷씬

모바일에서 만화를 볼 때처럼 마우스를 이용하여 컷씬을 넘어가는 느낌을 주고 싶어서 로직을 구현하였습니다.  마우스의 왼쪽 버튼이 눌린 시점의 좌표와 현재 마우스의 좌표를 계산하고 랜더링 과정에서 계산한 차이를 가지고 화면에 2개의 컷씬을 출력하였습니다. 처음과 마지막으로 넘어가면 다음 씬으로 넘어갑니다.

마우스를 사용하여 컷씬을 조절하는  로직
컷씬 랜더링 로직

 

플레이어와 사장님 랜더링 순서

플레이어와 사장님 랜더링 예시

플레이어가 빠른 랜더링 순서 때문에 사장님에게 이상하게 가려지는 상황이 발생해서 플레이어와 사장님의 위치에 따라 랜더링 순서를 변경하여 자연스러운 랜더링을 구현하였습니다.
 

소감

전체적으로 만족스러운 게임을 제작했고 좋은 팀원들을 만나서 즐겁게 작업할 수 있었습니다. 프로그래밍적으로는 여러 가지로 배운 점이 많았는데 첫 번째로는 싱글톤 패턴을 이전까지 사용했었는데 싱글톤 패턴에서 벗어나 리팩토링을 하는 과정에서 내가 싱글톤 패턴을 남발하고 있구나를 깨달았고 이러한 과정을 통해서 다음 프로젝트에서는 좀 더 완성도 높은 구조를 생각해서 게임을 만들어보고 싶어 졌습니다.  다음 2학기 프로젝트전까지 공부를 더해서 프로그래밍적으로 완성도 높은 게임을 만들어보고 싶어 졌습니다. 

'게임 > 내가 만든 게임' 카테고리의 다른 글

MidNight / Direct2D  (0) 2023.09.01
Shapes & Beats / C 콘솔 프로젝트 (게임인재원)  (0) 2023.04.28
피부 + 피하기 / Unity (게임인재원)  (0) 2023.02.18
피하기 게임 / Win32 API  (0) 2023.01.20
지뢰 찾기 / C++  (0) 2022.12.22