[Unity] 유니티 게임 개발 프로젝트 협업 방식과 MVC 패턴 이해

728x90

게임 개발과 관련하여 팀 프로젝트 협업과 MVC 패턴의 이해

개발 팀 프로젝트를 수행하는 과정에서 클라 - 클라 / 클라 - 서버 간 협업을 자주 하게 된다. 여기서 문제는 개발 프로세스가 연결되어 있어 서로 영향을 주고받기 때문에 만약 한 쪽에서 구현이 안되면 다른 쪽도 개발 진척에 문제가 발생할 수 있다. 가령 서로 다른 두 개발자가 각각 피격 기능과 저장 기능을 구현해본다고 가정해보자.  피격 기능으로 체력이 깎인 데이터가 있어야 그 데이터가 저장되는지를 테스트해 볼 수 있기 때문에 개발 순서 상 피격 기능 -> 저장 기능 순으로 구현되어야 할 것이다. 하지만 개발 기간은 제한되어 있기 때문에 한쪽이 개발을 완료할 때까지 기다릴 수 없다. 

 

이럴 때 실무에서는 모듈화(Modularity)를 통해 워크 플로우를 효율적으로 개선하고 있다.

모듈화는 쉽게 말해 개발 어느 쪽에서도 호환가능한 코드단을 구현해 놓은 것을 의미한다.

모듈화가 진행되어 있으면 클라 - 서버에서 특정 작업이 완료된 이 후 언제든지 모듈을 끼웠다 뺐다 하면서 테스트 해볼 수 있는 것이다. 

 

만약 게임 개발 프로세스에서는 다음과 같이 기본적인 모듈화 방법을 사용해 볼 수 있다.

만약 A가 피격 후 플레이어의 체력이 깎이는 기능을, B는 플레이한 게임을 Save 하는 기능을 구현한다고 가정하다. 이론 상 A의 작업이 먼저 끝나야 B의 작업을 진행하고 테스트 해 볼 수 있다. 하지만 모듈화를 시켜놓으면 A의 작업 진척 속도와는 상관 없이 B의 작업 모듈을 테스트 해 볼 수 있다.

// 피격 후 체력이 깎이는 기능
PlayerHealth.Instance.HP--;
bool result = Save();
if(result)
{
	print("퀘스트 성공");
}
// 게임 플레이 중간에 Save하는 기능
bool Save()
{
	pirnt("Player가 세이브에 성공했습니다.")
    return true;
}

게임 플레이 저장 기능을 bool 타입으로 선언해 주고 데미지 기능 구현부에 실행 여부만 판단하는 코드를 넣어주면 된다. 데미지 기능 구현이 완료되면 Save() 가 정상적으로 돌아가는지 테스트만 해주면 될 것이기 때문에 서로 개발 속도에 영향을 받지 않고 작업을 진행할 수 있다.

 

모듈화와 같이 개발 프로젝트 협업 과정을 효율적으로 진행시킬 수 있는 방식을 MVC Pattern라고 한다. 쉽게 말해 각각 개발 요소들에 대한 상호 간의 종속성을 끊어 독립적으로 개발이 가능하도록 설계를 하는 패턴이다. 그리고 그 개발 요소들 사이사이에 모듈(Module)을 끼워 넣어 종속성을 끊고, 필요 시 유연하게 테스트를 해 볼 수 있다.

 

728x90