[프로젝트] Pac-Man 게임 구현(C++/OpenGL)

박주용·2025년 1월 10일

프로젝트 소개

1980년 Namco에서 배포한 Pac-Man이라는 게임을 아시나요?
고전 명작 게임인데, 이게 생각보다 복잡하고 기발한 알고리즘을 기반으로 합니다. 특히 유령들의 행동 양상이 일종의 기초적인 ai라고 볼 수 있는데, 1980년에 개발됐다는게 상당히 놀랍습니다.

작년 학부 가을학기 C++ 강의에서 최종 프로젝트로 구현한 게임입니다.
Window / Linux 설정에서 Visual Studio로 개발했으며 그래픽은 OpenGL을 활용했습니다. 효과음과 음악은 irrKlang을 사용해서 게임에 삽입했습니다.

이미지나 맵은 인터넷에서 다운받아 텍스쳐로 삽입한 것이 아니라, 전부 OpenGL을 이용해 직접 그렸습니다.

협업 과정

약 3주간 본 프로젝트를 진행하면서 처음으로 깃허브를 통한 협업을 경험할 수 있었습니다. 2인 1조로 진행되었으며, 조원 분은 뼈대 코드를 작성하셨고 저는 세부 알고리즘, 버그 수정, 그래픽 부분을 담당했습니다.

본 프로젝트를 진행하면서 둘 다 협업 개발 과정이 처음이라 다양한 문제들이 발생했습니다.

  • 먼저, 저는 윈도우 개발환경에서 visual studio로 작업을 했지만 조원 분은 맥 개발환경에서 x-code로 작업을 했습니다. 운영체제가 달라 호환되지 않는 코드도 많았고, 특히 외부 라이브러리 사용방법이 달라 처음에는 굉장히 애를 먹었습니다. 임시방편으로 깃허브에서 서로 브랜치를 나누고 master 브랜치에 윈도우 기준으로 통합하는 식으로 진행했습니다.
  • 두 번째로, 서로 업무를 나눠서 진행하다보니 합본에서 버그가 발생할 시 그 원인을 찾기 어려웠습니다. 서로 변수명, 함수명 등 다르고 스파게티 코드처럼 복잡하게 얽혀있어서 초반엔 버그 수정 시간이 엄청 길었습니다. 이 부분을 해결하기 위해 지속적인 소통과 피드백에 특히 신경 썼습니다. 또한 중간중간 대대적인 파일 통합, 변수명 및 함수명 통일, 서로의 코드에 대한 이해를 하는 시간을 가졌습니다.

쉽지 않은 프로젝트였지만 개발 과정에서 굉장히 많은 것을 얻었습니다. 단순히 C++ 프로그래밍 실력 뿐만 아니라 협업 능력이 향상된 것 같습니다. 또한, 앞으로 제가 공부해야 할 부분도 깨닫게 됐습니다. 솔직히 말해서 첫 번째 문제는 잘 해결되진 않은 것 같습니다. 서로의 코드를 브랜치에서 복붙해서 수정하는 과정은 단순히 푸시 풀만 하면 수정되는 깃허브의 순기능을 제대로 활용하지 못한 것입니다. 따라서 협업 시 서로의 운영체제가 다를 경우 통일된 환경에서 개발할 수 있도록 도커 (docker)에 대한 공부가 필요하다고 느꼈습니다.

그리고 초반에는 Chat-GPT, Claude 등 ai의 도움을 받지 않고 전부 개발하고자 했습니다. 하지만 후반에는 너무나 긴 코드가 정리가 안됐고, 시간 기한이 촉박했기에 cursor를 활용하여 개발을 마쳤습니다. AI 툴을 적절히 활용하여 효율적으로 개발하는 능력도 길러야 겠습니다.

플레이 영상

팩맨 오리지널 버전을 최대한 충실하게 구현하고자 하였으며, 추가로 스코어보드를 저장할 수 있게 하였습니다. 아래는 개발한 게임 시연 영상입니다.

코드

코드랑 파일들은 제 깃허브에 남겨놨습니다. 게임 실제로 플레이해보고 싶으시면 참고해주세요!

https://github.com/tony3ynot/Pac-Man_project

profile
이것저것 씁니다.

0개의 댓글