Develop/Java

[프로젝트] 마피아 게임 프로젝트 후기

SpruceMoon 2025. 12. 3. 09:00

 

 

- GITHUB 링크 : https://github.com/png401/Mafia_Project_JAVA2_ver2

 

GitHub - png401/Mafia_Project_JAVA2_ver2

Contribute to png401/Mafia_Project_JAVA2_ver2 development by creating an account on GitHub.

github.com

 

 

 

프로젝트를 마무리하며...

 

 처음 주제를 제안했을 때까지만 해도 이렇게 완성도 높은 프로그램을 만들어낼 수 있을 줄은 몰랐다. 그저 수업 시간에 배웠던 Thread, Socket 통신, GUI, SOLID 규칙 개념을 모두 적용할 수 있어 개념들을 회고하는 시간이 되었으면 했는데 상상 이상이었다. 팀원들이 너무 멋지다... 짱짱맨들.

 

 우선... Git을 사용하는 법은 이전에 배우긴 했지만 java프로젝트로 협업을 하는 것은 처음이었기 때문에, 이클립스와 git은 정말 상상 이상으로 좋지 않은 조합이구나 싶었다. 결국 vscode가 익숙했던지라 이클립스의 날것의 콘솔에 적응하지 못한 나(나약하다!)는 제일 먼저 인텔리제이로 이전했고 거기서도 많은 오류를 고치고 (대체 왜 자바가 없다고 뜨는데) git을 연동하는 데 성공했다. 이건 추후 알게 된 이야기지만 인텔리제이도 plantUML과 비슷한 프로그램이 사용이 가능하다고 한다... 물론.. 우리의 프로젝트는 테스트를 하려면 팀원들이 있어야 하거나 혼자 네 개의 클라이언트를 돌려야 해서 이클립스를 완전히 떼어놓지는 못하긴 했다. (나중에 인텔리제이에서도 되는지 확인해보고 싶다.) 그래도 코드를 커밋하고 푸시하고 풀하고 풀리퀘스트를 하면서 협업 툴에 익숙해지고 왜 이걸 쓰는지 유용함을 느끼는 시간이 되어 유익했다고 생각한다!

 

 두 번째로... 정말 온갖 종류의 오류가 났다. 객체 지향은 처음에 설계가 참 중요하구나를 뼈저리게 느꼈던 것 같다. 그나마 UML이 체계적으로 완성된 상태라 그렇지 이것도 아니었다면 아마 지금까지 겪었던 오류의 세 배에 달하는 오류를 겪었을 게 뻔하다... 교수님께서 수업 시간에 보여주셨던 사진처럼... 멀티쓰레드가 그렇게 우리 마음대로 잘 안 되는구나 싶기도 했다. 프로젝트 도중 생긴 문제는 참 여러 종류가 있었는데, 그중 가장 임팩트가 컸던 오류에 대해 말하자면(마지막으로 고친 커다란 산...아니 버그.) 게임 시간을 제한하려고 작성했던 Thread.sleep() 구문이 아예 사회자를 잠들게 만들어서 밤 사이 능력 사용이 안 되는 문제가 있었다. 사실 원인이 쓰레드인줄도 몰랐다. 사회자가 직업을 분배하려면 싱글톤이어야겠다! 하고 결론을 내리고 처음에 코드를 작성했었는데, 클라이언트와 서버가 사용하는 사회자와 사회자가 따로따로다?! 사실 사회자는 싱글톤이 아니다!? ... 와 같은 수많은 가설(우리가 짠 코드인데 왜 우리가 가설을 세우고 있는가)을 세워가며 문제의 원인을 발견하기 위해 머리를 맞댔다. 팀원들 모두 반쯤 절박한 심정으로(제발 이것만 되면 집에 가자) 지피띠니를 돌리고 코드가 고쳐질 때마다 희망을 붙들고 디버깅을 해보고... 결국 문제를 해결한 건 지피티였다. 사회자에 람다식으로 새로운 스레드를 만들어서 가져오자, 거짓말처럼 스킬 사용이 정상화된 것이다! 지피티의 도움을 받긴 했지만, 그래도 이 결과에 이르기까지 수많은 시간을 코드 분석에 사용하고 수없이 많은 시도도 하면서 많은 것을 배우고 체득하는 시간이 되어 좋았다.

 

 이외에도 처음 게임을 시작하기 위해 서버 IP에 접속해 닉네임을 입력할 때, 이 ID와 닉네임 요소를 가진 플레이어 객체는 (대체) 누가 가지고 있는가, 왜 게임 시작 버튼 눌리고 게임 화면으로 전환까지는 성공했는데 직업 배정이 안 되는가?!, 직업 배정은 됐는데 왜 스킬 사용이 안 되는가?! ... 등등의 수많은 문제가 발생했었다. 하나를 짜면 두 개의 문제가 발생해서 (히드라?) 막막했던 적도 있었지만 결국 프로그램을 완성하게 되어 매우 뿌듯하다. 이번 자프실 수업 및 프로젝트를 통해 내가 많이 성장한 것 같아서 (다른 사람이 보기엔 어떨진 모르겠다.) 좋았고 완성된 프로젝트를 보는 게 이렇게 성취감을 주는 일이구나 싶었다. 자신감도 지식도 협업 능력도 많은 걸 얻어가는 시간이었다.