내일배움캠프 - TIL/내일배움캠프 - TIL

내일배움캠프 13일차 - 팀 프로젝트 Text RPG 구현 완료

rudals4469 2025. 4. 28. 20:13

Text RPG

  • 프로젝트 명 : Text Maple RPG
  • 프로젝트 소개 :
    • Text RPG 라는 기본 틀에 우리에게 친숙한 온라인 게임인 Maple Story를 더하여 몰입감 있는 Text RPG 구현하기
    • 기본적인 객체 지향 프로그래밍 준수하여 구현하기
    • 코드 컨벤션, 깃 컨벤션 준수하여 협업하기 
    • 클래스 다이어 그램

와이어 프레임

 

 

오늘은 구현을 완료하고 발표를 하는 날이었다. 금요일엔 TIL을 쓸 시간도 없이 작업을 해서 그런지 기록을 못남겼다. 아쉬웠던 출력 구문과 던전, NPC 상호작용을 마무리 했으며 브금을 추가하여 게임을 좀 더 풍성하게 완성했다.

 

 

실제 시작 화면이다 위에 로고를 추가하여 너무 밋밋한 느낌을 없앴으며 각 각의 메뉴 기능은 모두 정상 작동한다.

이번 구현을 하면서 아쉬웠던 점 두어 개만 짚어본다면

첫 번째로 포션의 클래스 구조 문제와 두 번째로 출력과 로직의 세분화인거 같다.

 

먼저 문제가 된 출력 화면을 먼저 보겠다.

 

와 같이 인벤토리 창에서는 중복되는 포션의 수량을 x 로 표시해주고 있지만 상점의 팔기 탭에서는 중복 포션을 중복해서 출력하고 있다. 이는 포션 클래스에는 HP, MP 포션을 구분하는 타입이 있는데 이것을 기준으로 포션을 나누게 된다.

이를 활용하여 Linq 구문을 사용하여 포션의 타입으로 그룹화 시켜서 출력을 시켰지만 팔 때는 그룹화시켜 버리니깐 포션의 인덱스가 망가져버려 엉뚱한게 팔리는 버그가 발생하였다. 이는 포션의 리스트에 들어온 순서대로 저장되지만 Linq를 통해 정렬이 되어버려 우리가 보는 출력 순서와 실제 포션의 인덱스 순서가 달라서 일어나는 버그이다. 

정작 제출까지는 해결하지 못했지만 생각해본 방법은 포션을 팔 때 인덱스 참조하는 구문을 고치는 것과 애초에 포션 클래스 구조를 다 뜯어 고치는 방법이 있을 것 같다. 둘 다 제출이 코 앞이라 시도하진 못해본게 아쉽다.

 

두번째는 하나의 파일에 로직을 다 때려박고 또 다른 파일에 출력 함수를 다 때려 박는 문제점이다.

사실 이 프로젝트가 이정도로 볼륨이 커질 줄 모르고 안일하게 생각한 업보라고 생각한다.

그로인해 거의 하나의 파일에 1000줄, 1200줄이 넘어가는 너무 무거운 파일이 되어버렸다.

이는 처음 시작 할 때 각 각의 기능을 담당하는 매니저를 두어 매니저에서 출력과 로직을 담당하는 클래스를 나누는 방법을 사용하는 것이 맞았다. 그러면 파일이 좀 더 가벼워지고 각 기능에 대한 책임도 가벼워 질 것이다.

 


 

그렇게 인생 처음으로 해보는 협업 개발 프로젝트를 끝마쳤다.

사실 이정도면 됐겠지 라고 안일하게 생각한 부분도 있다.

다른 팀의 발표를 들으니 우리도 시간은 좀 더 타이트하게 써서 빡세개 해볼 걸 이라고 팀원분들과 얘기를 나눴다.

이미 지나간 일은 후회하지 말고 양분으로 삼아 더 발전하자 가 나의 목표이기에

이번 주의 안일함을 교훈 삼아 다음 주는 더욱 더 끝까지 열심히 해보고 싶다고 생각한 끝이 못내 아쉬운 프로젝트였다.