이번에 2학기 게임 프로그래밍 시간에 팀 프로젝트 게임 개발을 시작하게 되었습니다.
11월 17일 ~ 12월 12일까지 진행하였습니다.
c++ 사이드 뷰 게임으로, 보스 러쉬 형태의 게임을 하고 있습니다.
다운로드 링크 : https://drive.google.com/drive/folders/11h75pAQWopXR6WLRDrX-_RWhGgVqZGlX?usp=drive_link
간단 시연 링크 : https://youtu.be/xmTemrrrXUk
프로젝트 설명
| 게임명 | Deadlock |
| 게임 장르 | 보스 러쉬 |
| 시점 | 2D 사이드 뷰 |
| 개발 엔진 | win32api, c++ |
| 팀원 | 개발2, 아트1 |
| 조작 방법 | 아래 참고 |
| 목적 | 보스의 패턴을 피해서 기믹을 완수한 이후 한발이라도 보스에게 맞추면 되는 게임입니다. 총 3스테이지로 이루어져 있으며, 각 보스들마다 완수해야 하는 기믹은 다릅니다. |
| 설명 | 시작 시, 보스 3마리 중 선택할 수 있습니다. 보스는 생김새와 패턴, 수행해야 하는 기믹 등이 모두 다릅니다. 진행 방식은 보스의 패턴을 계속 피해, 보스가 일정 횟수의 패턴을 사용할 때까지 피하는 것입니다. 예시로 첫 번째 보스는 10번 패턴을 사용한 뒤, 행동을 정지합니다. 이때까지 보스의 패턴을 피해 버티면, 보스의 코어가 나타납니다. 이 코어를 파괴하면 게임을 클리어할 수 있습니다. |
| 레퍼런스 게임 | 레퍼런스로 따온 게임은 IWBTB입니다. 플랫포머 요소를 제거하고 보스적인 요소를 살렸습니다. 찾은 유사 게임은 타이탄 소울 입니다. 서로 한방이라는 요소가 같았고, 차이점은 저희의 게임은 기믹을 완수한다면 유사 게임은 보호막으로 여러번 공격 해야 한다는 차이가 있습니다. |
조작 방법
이동 : A / D
점프 : Space
사격 : J
대시 : K
쉴드 : L
메인 타이틀 화면

게임의 메인 타이틀 화면입니다.
이 화면에서 게임을 시작할 수 있으며, 사운드 설정, 게임 종료가 가능합니다.
우측에는 간단히 게임 조작법이 적혀 있습니다.
설정씬

설정씬입니다.
Bgm과 Effect의 소리 크기를 키우고 줄일 수 있습니다.
슬라이더 바를 사용하여 소리 크기를 조절할 수 있습니다.
뒤로가기를 누르면 메인 타이틀 씬으로 다시 넘어가며, 사운드 세팅은 게임 내내 저장이 됩니다.
보스 선택 씬

보스 선택 씬입니다.
보스는 총 3마리이며, 타이틀 버튼을 눌러 다시 타이틀로 돌아갈 수 있습니다.
첫 번째 보스는 기믹은 따로 존재하지 않으며, 패턴을 총 10번 피하면 보스를 처치할 수 있습니다.
두 번째 보스는 서브 코어가 존재합니다. 패턴을 2번 피할 때 마다 서브 코어가 파괴 대기 상태가 되며, 총알을 발사하며 파괴할 수 있습니다. 만약 파괴를 일정시간 동안 하지 않으면 다시 상태가 원래 상태로 복구됩니다. 이 서브 코어를 모두 파괴하고 추가로 패턴을 2번 더 피하게 된다면, 보스를 처치할 수 있게 됩니다.
세 번째 보스는 플랫폼을 총알로 맞추어 위로 올린 뒤, 특정 패턴에 플레이어가 아주 높이 점프할 때, 그 플랫폼에 올라가야 합니다. 그 플랫폼에 올라가서 플레이어가 직접 몸으로 버튼과 부딪혀서 버튼과 상호작용 해야 합니다. 모든 버튼과 상호작용하게 된다면 보스를 처치할 수 있게 됩니다.
모든 보스는 실드를 가지고 있습니다. 이 실드는 보스가 일정 수의 패턴을 실행하면 자동으로 파괴가 됩니다.
게임 오버 씬

게임 오버 씬입니다.
보스를 다시 선택해서 게임을 진행할 수도 있고, 타이틀로 돌아가거나 게임을 종료할 수 있습니다.
보스 씬

보스1의 씬입니다. 플레이어가 존재하고, 플랫폼이 있습니다.
보스는 구체의 모양을 하고 있으며, 실드를 가지고 있습니다. 일정 수의 패턴을 실행하면 실드는 자동으로 파괴됩니다.

만약 10번의 패턴을 실행하였다면, 이렇게 보스의 모습이 파괴가 됩니다. 이 때 총알을 발사하여 보스를 맞추게 된다면, 게임을 클리어할 수 있습니다.
클리어 씬

클리어 씬입니다.
보스를 선택해서 다른 보스를 잡을 수 있습니다.
타이틀로 돌아갈 수도 있으며, 게임을 종료할 수 있습니다.
마무리
한 달간 진행한 게임 프로그래밍 플젝이 마무리 되었습니다. 마무리 된 시간에 비해 글이 너무 늦어졌습니다. 변명을 조금 하자면, 프로젝트가 끝나고 바로 기말고사, 게임잼, 졸업작품 등 여러 일정이 겹쳐 글을 쓸 상황이 거의 없었습니다. 방학 때도 졸업작품을 준비해야 하기 때문에 방학이 다가오는 지금 글을 빠르게 쓰기로 하였습니다. 개발을 하고 있을 때는 게임이 나름 괜찮게 잘 나왔다고 생각했으나 완성본을 보니 아쉬운 점도 많이 보입니다.
아쉬운 점
이벤트 버스를 구현해야 하는 상황이 생겼는데, 어떤 자료 구조를 활용해야 이벤트 버스를 만들 수 있을 지 오래 고민 했습니다.
다음으로 보스 패턴을 만들 때 수학을 활용해서 게임을 만들어야 하는데, 수학을 어떻게 잘 사용해야 원하는 패턴이 나오는지 여러 번 시도 해야 했기에 어려웠습니다. 게임에 필요한 기능을 대부분은 알지 못하여 이를 찾고 활용하는 과정이 프로젝트 진행 내내 지속 되어 힘들었습니다.
마지막으로 패턴이 잘 기획되지 않아 보스의 패턴들이 비슷해서 아쉬웠습니다.
배운 점 / 느낀 점
그래도 win32로 처음하는 프로젝트였으나, 나름 개발이 잘 된 것 같아 만족합니다.
UI, 씬 세팅 등 여러 작업을 많이 맡게되었는데, 이 때문에 보스 패턴이나 여러 디테일적인 부분에서 신경을 많이 못 쓴것 같아 아쉬웠습니다.
'c++' 카테고리의 다른 글
| c++의 function과 EventBus로 활용법 (0) | 2025.12.12 |
|---|---|
| 백준 c++ 28278 문제 풀이 (0) | 2025.05.21 |
| 백준 c++ 1158 문제 풀이2 (0) | 2025.05.20 |
| 백준 c++ 1158 문제 풀이 (0) | 2025.05.19 |
| 백준 c++ 1966 문제 풀이 (0) | 2025.05.18 |