
오늘은 개인과제로 했던 Text RPG를 팀 프로젝트로 만들어 보는 시간입니다. 기간은 5일. 5명의 조원과 함께 만듭니다.
필수 기능 가이드
* 게임 시작 화면
* 상태 보기
* 전투 시작
도전 기능 가이드
* 캐릭터 생성 기능
* 아이템 사용 기능
* 그 외 여러가지
등등을 구현하기 위해, 조원들의 역할 분담을 나누고, 전체적인 계획을 짰습니다.
기간은 널럴하기 때문에 필수 기능을 우선 다 완성시킨 후에, 안정적으로 원하는 도전 기능을 조금씩 추가할 계획입니다.

만약 혼자 만든다면 하루만에 다 만들 양입니다.
때문에 저는 이번 기회에 협업 능력을 키우는데 중점을 두었습니다.
저번 팀 프로젝트에서는 소극적으로 나서서 상황을 봤기 때문에, 이번 에서는 제가 원하는 상황을 만들기 위해 조장을 자처해서 협업 시스템으로 추진해 보았습니다.
구조는 이렇습니다.
TextRPG/
├── Program.cs ← 실행 진입점
├── Game/
│ ├── GameManager.cs ← 전체 흐름 제어
│ └── Scene/
│ ├── TitleScene.cs
│ ├── StatusScene.cs
│ ├── BattleScene.cs
│ ├── BattleResultScene.cs
│ └── HealScene.cs
│
└── Data/
├── Player.cs
└── Monster.cs
각 클래스를 나누고, GameManager로 하나씩 불러 오는 것입니다.
지난번 팀 프로젝트 때 Unity에서 한 방식으로, 각 기능들만 그때 그때 만들고 추가하는 느낌입니다.
- 피그곰 - UI정리, 구조, 전환 관리
- A - 시작 화면, 상태 보기
- B - 상태 보기, 캐릭터 생성
- C - 전투시작화면(몬스터 구현하기)
- D - 인벤토리, 아이템-장비-무기, 드랍, 소비, 로그매니저, 퀘스트(마지막 도전)
때문에 역할 분담을 위와 같이 정했습니다. 이 역할까지는 한 다음에 이틀, 혹은 삼일차부터 새롭고 재미있는 도전 과제들을 추가할 계획입니다.
저는 여기서 각 코드들을 병합, 구조를 관리하는 역할에, 남는 시간 동안 UI관리를 맡았습니다.
사람들의 실력에 따라서 역할을 분담한 후, 필수 기능이 구현 되면 본인의 실력에 따라서 다양한 기능을 추가하는게 목표입니다.
여기까지는 이 팀 과제를 받았을 때 제가 생각한 흐름입니다.
이 과정에서 각 클래스들을 Scene으로 규정. 그리고 각 Scene들을 Iscene 클래스를 만들어 그에 상속하도록 하였습니다.
방식은 인스턴스 생성 방식으로 하고 있습니다. 작은 규모이다 보니 굳이 싱글톤으로 하지는 않았습니다. 현재 협업하는 방식도 처음 해보는 형태이기 때문에 다음에 협업할 때 건의해볼 생각입니다.
때문에 각 씬(클래스)들을
return new BattleScene();
return new StatusScene();
이런 식으로 불러 왔고, 각자가 만든 코드를 조금씩만 수정해서 병합하는 것 까지는 성공했습니다.
이 과정에서 큰 사건이 터집니다.
GithubDesktop을 이용해서 github를 관리하고 있었는데, 모두가 main에 올리는 순간 모두가 충돌이 났습니다.
원인은 제가 처음에 main을 잘못 퍼블리싱하여 독을 퍼뜨렸고, 그 독을 모두가 꽤 심하게 마신 후에 독인걸 알아차렸습니다.
원인은 총 3가지.
1. ,gitignore 파일의 이름 틀림
2. 비쥬얼 스튜디오를 만든 후에 커밋. 때문에 obj, bin 파일 등이 만들어진 후에 커밋이 되었고, 그걸 기본으로 복사하여 만든 팀원들은 .gitignore도 통하지 않아서 매번 머지할 때 마다 충돌이 되었습니다.
이게 충돌이 되는 이유는, 위 파일들은 디버깅을 할 때 디버깅 과정 중 계속 변화하는 파일이기 때문에, 다른 사람과 병합할 경우 같은 줄에 다른게 생깁니다. 그리고 어차피 받은 후 실행, 디버깅 하는 중에 다시 파일이 변하기 때문에 계속해서 충돌이 생기는 원인 중 하나입니다. 이런 걸 무시하라고 .gitignore파일이 있는건데, 이 파일을 넣기 전에 제가 위의 파일을 넣고 커밋을 하여서
.gitignore파일이 있음에도, 맨 처음에 원래 있던 파일인지 알고 무시하지 못하고 계속해서 잔류하게 되었습니다.
(물론 .gitignore파일도 잘못 됌)
3. 경로지정을 잘못 했습니다.
비쥬얼 스튜디오의 솔류션이 있는 파일에 해야 합니다.
원래는 공용 공간을 만든 후, 비쥬얼 스튜디오를 연결하는데, 비쥬얼 스튜디오부터 킨 후에 그 폴더 안에 깃허브 경로를 지정하다 보니, 솔류션 보다 안에 있는 파일로 지정이 되었습니다.

이 폴더 자체를 경로로 지정해야 하는데, 저 폴더 하나를 누르고 경로 지정을 해서, 저 폴더가 공유 되었습니다.
때문에 밖에 있었던 비쥬얼 스튜디오의 솔류션은 공유가 안되는 상황이었습니다.
아직 협업의 경험이 모두가 적었기에, 각자 만든 코드들은 각자의 방법으로 실행하고 확인을 하고 있었기 때문에 몇 시간 동안 눈치채지 못했습니다.
어느 정도 코드가 완성되고 병합하는 과정에서, 제가 병합을 맡았기 때문에 문제 없이 병합을 하고 있었습니다. 그도 그럴게 주인인 저는 솔류션을 가지고 있었으니까요.
하지만 다른 사람들은 클래스 코드만 저에게 전해주고, 정작 저 솔류션 파일은 없있기 때문에 본인의 컴퓨터에서는 실행이 안됐습니다.
물론 처음에 잘못 되었을 때 그냥 새로운 깃허브를 파자는 의견도 나왔지만, 어차피 이번 팀프로젝트는 분량이 적다. (실제로 하루면 다 완성할 수 있는 분량) 때문에 최대한의 이해를 위해, 이 망가진걸 고쳐가면서 해보자 라는 의견이 모였습니다.
그렇게 어찌 저찌 고쳐가면서 했는데, 한 두 명씩 계속 충돌이 일어나고, 질문을 하러 가다 보니 보다 못한 튜터님께서 확실한 문제를 알기 위해 직접 깃허브 관리자 권한을 얻은 후 1부터 다시 보면서 원인을 찾아냈습니다.
한 3시간은 깃허브 충돌 문제로 아무것도 못한 것 같지만, 덕분에 조금 더 이해가 높아졌네요.
'공부 > 게임 공부' 카테고리의 다른 글
| Text RPG의 콘솔창 항상 중앙정렬 시키기 (1) | 2025.10.16 |
|---|---|
| TextRPG 중앙관리형으로 인터페이스 주기 (0) | 2025.10.15 |
| C#으로 간단한 게임 만들기 (0) | 2025.10.13 |
| Text-RPG 만들어 보기 (1) | 2025.10.02 |
| C# 기초 문법 [ 배열과 리스트 , 클래스와 인스턴스 ] (0) | 2025.10.01 |