내일배움캠프_Unreal/TIL

내일배움캠프_Unreal/TIL - Day 23 (251230)

하임 2025. 12. 30. 21:32

오늘은 팀 프로젝트 2일차를 진행함.

 

Git 관리하시는 분이 Branch별 역할 분담 하는 법을 배워오셔서 알려주심.

  • main : 최종 결과물, 배포 가능한 상태의 완성본만 관리함. (프로젝트 종료 시점이나 중간 발표 시점에만 합침)
  • develop : 다음 버전을 위해 개발 중인 코드를 모으는 곳, 팀원들이 만든 기능(feature)들이 모임. (빌드 성공 상태를 유지해야 함)
  • feature : 새로운 기능을 만들 때 사용하는 임시 Branch, 작업이 끝나면 develop에 합치고 삭제함.

점점 Git 사용법에 익숙해져가는 거 같아서 만족스러움.

 

 

이후 팀 프로젝트 진행 시간에 기획 초안 마무리 및 역할 분배해서 시작함.

 

나는 Player 파트를 구현하게 됨.

우선, 해당 게임 특성 상 Player는 유일한 객체이기 때문에 Singleton Pattern을 구현함.

class Player : public Character
{
private:
	// 1. 정적 멤버 포인터: 유일한 플레이어 객체를 가리킴
	static Player* instance;

public:
	// 2. 복사 생성자 및 대입 연산자 삭제 (유일성 보장)
	Player(const Player&) = delete;
	Player& operator=(const Player&) = delete;

	// 3. 싱글톤 인스턴스 반환 함수: 필요할 때 생성
	static Player* GetInstance(); 
};

Player* Player::instance = nullptr;

Player* Player::GetInstance()
{
	if (instance == nullptr) {
		cout << "플레이어 이름을 입력하세요: ";
		string name;
		getline(cin, name);

		// 빈 값 입력 시 기본 이름 설정
		if (name.empty()) 
		{
			cout << "이름이 입력되지 않아 기본 이름 'Steve'로 설정됩니다.\n";
			name = "Steve";
		}
		instance = new Player(name);
	}
	return instance;
}

 

이외에 필요한 기능들을 구현함.

int GetLevel() const;	// 레벨 출력 함수
int GetExp() const;	// 경험치 출력 함수
int GetGold() const;	// 골드 출력 함수

void EarnReward();	// 경험치 획득 함수 (추가 구현에서 골드 획득 포함 예정)
void LevelUp();		// 레벨업 함수
void ResetBuff();	// 버프한 스텟 초기화 함수

virtual void Attack(Character* monster) override;	// 공격 함수
virtual void UseItem() override;			// 아이템 사용 함수

 

 

프로젝트를 하면서 내 코드를 작성하는 능력뿐만 아니라 상대 코드를 읽고 이해하는 능력의 중요성을 알게 되었고, 내 생각과 다른 더 좋은 아이디어를 접하면서 지식이 늘게 되었으며, 협업 툴에도 익숙해져 감.

 

내일은 완성된 팀원들의 필수 기능들에 맞춰서 코드를 수정하고 합치는 과정을 진행할 예정임.

러프하게 완성된 게임과 튜터님의 피드백, 더 발전할 기능들이 기대됨.