연말에 제출하고, 연초에 쓰는 프로젝트 후기.
3주라는 무척 짧은 시간 동안, C++ 개발자님들께 경외심을 느끼고 시간과 열정을 불태워 제작한 2인 팀 프로젝트이다. 너무 많은 일들이 겹쳐있었지만, 게임 퀘스트처럼 하나 하나씩 해결하는 재미가 있었다. 이 프로젝트는 가장 핵심적인 퀘스트였고 정말 잘 해냈다고 볼 수 있다!
느끼고 배운 것을 정리해보자.
- 일정과 개발 능력에 맞는 기획은 아주 중요하다!
- 게임 플레이가 간단하다면, 시각적 완성도와 재미에 힘을 써 완성도를 높이자.
- 당연한 이야기지만, 가르치는 건 나 또한 성장하는 일이다. 내가 무엇이 부족하고, 설명할 수 없는지 가장 잘 알 수 있다.
배우는 것만큼이나 중요한 일.
- 오류를 해결하는 건 집념보다는 침착함이다. 디버깅할 땐 항상 논리적이고 침착한 상태를 지니자.
- 다음 C++ 프로젝트는 스마트 포인터를 써보자... 더블프리가 정말 힘들었다.
- 성공과 칭찬은 나를 달리게 할 가장 중요한 요소이다. 소중하게 여기고, 원동력으로 삼자!
에피소드들을 자세히 서술하며 느낀점도 써볼 것이다.
똑똑한 기획
짧은 시간 동안 완성도있는 프로젝트를 개발하려면 크거나 콘텐츠가 많은 기획은 금물이었다. 따라서 장르는 하이퍼 캐주얼 장르로 고정을 시켰다. 또, 작은 핵심 기능만으로 재미있는 게임을 위해 고전 게임인 벽돌깨기를 오마주했다.
벽돌 깨기는 벽돌 생성, 총알 발사와 반사 등등 핵심 시스템을 만들고 밸런스를 잘 조정하면 가볍지만, 중독성 있게 즐길 수 있는 게임이다.
다만, 벽돌 깨기를 단순히 따라한다면 모작 게임에 그치지 않았다. 따라서...
개발이 어렵지는 않지만, 플레이어에게 새로운 재미를 줄 수 있는 다양한 기능을 추가했다. 특히, 사방향 방어는 게임의 아이덴티티로 자리잡은 것 같아 만족스럽다.
크지 않지만, 고전게임을 오마주하고 새로운 시스템을 추가한 기획! 개발 일정, 게임의 완성도, 플레이어의 재미를 한 번에 잡을 수 있었다고 생각한다. 프로젝트 완성도에 큰 기여를 한 기획이다!
개발 부스터!
2인 1팀에, 팀원이 Unity는 능숙하지만, C++과 WinAPI에 서툴었다. 그래서 팀원의 강점을 발휘할 수 있게 C++에 최대한 관련되지 않는 부분으로 업무를 분담했다. 팀원은 총알을 마우스 방향으로 날리고 충돌 후 방향을 계산하는 역할을 맡았다.
따라서 내가 비교적 정말 많은 기능 구현을 맡았다!
책임감과 잘해내겠다는 욕심이 한 데 뭉쳐 나에게 개발 부스터를 달았다. 쉬는 시간, 점심 시간, 야자 시간과 주말 시간을 할애해 프로젝트를 작업했다.
프로젝트 전체에 기여하지 않은 부분이 없을 만큼, 2주 정도 되는 짧은 기간 동안 많은 기능들을 구현했다. 특히, 나를 믿고 계속 질문을 던져주는 열심인 팀원에, 내가 열심히 하지 않을 수가 없었다!
반짝반짝
게임이 간단하기 때문에 그래픽과 이펙트에 많은 노력을 쏟았다.
이런 그래픽 작업들은 어렵지 않고 결과가 바로 바로 뜨기 때문에 정말 재미있고 뿌듯한 작업이었다! 이 작업을 하며, 내게 게임 개발자가 천직이라는 것을 다시금 느낄 수 있었다.
잔상을 구현한 알고리즘은 간단하지만, 마음에 드는 알고리즘이다! 이동한 거리마다 생성하고, 3개마다 다음색으로 바꿔주기 위해 나머지 연산과 enum class의 Length를 이용했다!
내겐 너무 먼 당신...
1학기 방과후에서 WinAPI로 다양한 프로그램과 게임을 만들어봤지만, 따라치는 게 아닌 혼자 로직을 생각하는 C++은 정말... 정말 어려웠다. 사실, 교과 선생님께서 주신 프레임워크가 게임을 구현하는 데에 필요한 기능은 거의 다 있었기 때문에(리소스 로드, 애니메이션, 콜라이더, 씬, 오브젝트 등등) 기능 구현 자체는 어렵지 않았다.
애를 먹었던 건 더블 프리였다...
새벽에... 제출 1시간 전까지 더블프리로 3시간 동안 애를 먹고 밤까지 샜다. 정신도 비몽사몽해 디버깅도 잘 되지 않고 얼른 자고 싶은 마음에 침착하지 못해서 시간이 더 걸린 것 같다 ㅠ_ㅠ 결국 얘 때문에 아침 6시에 잠이 들었다.
근본적인 문제는 씬을 넘길 때 발생했다. 다음 프레임에 삭제하기로 이벤트를 설정해주었지만, 그때 씬을 바꾸게 되며 모든 오브젝트를 삭제해준다! 그렇게 되면 다음 프레임, 이벤트를 발생시킬 때 메모리를 두 번 해제하게 되면서 문제가 발생한다. 구조가 복잡해서 원인 파악과 고치는 데에도 많은 시간이 걸려서 제출 기한을 지키지 못할까 불안하고 피곤했었다.
씬을 바꾼 프레임에서는 해제 이벤트 자체를 실행되지 않도록 하는 것으로 해결했다.
같은 오류가 있는 친구를 도움 주기도 했다!
더블프리뿐만이 아니라, 헤더 충돌이나 FMOD 세팅, 아이콘과 리소스 등 많은 문제를 전투하듯 해결했다. 정말 나의 C++에 대한 지식과 감, 구현 능력, 객체지향 구조, 디버깅 능력 등등... 많은 능력치를 수직 상승시킨 프로젝트이다.
칭찬은 민영을 춤추게 한다!
프로젝트를 개발한 후, 물 밀듯 칭찬이 밀려왔다! 친구들은 Unity로 만든 것 같다, 역시 이민영이 팀에 있어야 한다며 최고의 극찬을 해주었다. 교과 선생님은 내년에 가르칠 학생들에게 선배의 우수작으로 쓰겠다고 하셨다.
복도에서 지나갈 때에도, 이 프로젝트에 대해서 칭찬을 하거나 코드 구조를 일부 썼다고 하는 친구들에 정말 뿌듯하고 기뻤다.
프로젝트를 진행하며 마주친 오류들과 좌절, 동태눈에 불을 켜고 오류를 해결한 시간들, 완성도에 집착한 마음이 아깝지 않은 칭찬들이었다! 이런 칭찬들은 항상 나를 기쁘게 한다!
많은 프로젝트와 수행, 졸업작품과 겹치고 실질적인 개발 기간 또한 2주 정도였지만, 짬짬이 시간을 내고 주말을 반납하며 완성도 있게 만든 첫 팀 WinAPI 프로젝트라 뜻깊다.
기타
깃허브 주소
'개발한 게임들 > 선생님을 지켜요!' 카테고리의 다른 글
[Project] 💗 선생님을 지켜요! (0) | 2023.01.06 |
---|