2025년 1월 7일

만약 유니티를 사용하는 개발자라면, 특히 멀티플레이를 지원하는 프로그램을 개발해본 개발자라면 ParrelSync에 들어봤을 것이다.
유니티6가 신규 출시할 때, 중점적으로 다루며 홍보했던 Multiplayer Play Mode(이하 MPPM)가 ParrelSync와 비슷한 역할을 한다.
다만 ParrelSync는 프로젝트를 복사하여 에디터를 1개 더 여는 형식이라 아무래도 리소스를 더 먹고 로딩시간도 길다. 가장 불편한 점은 스크립트나 씬 등 프로젝트에 수정사항이 있으면 ParrelSync로 복사한 프로젝트에서도 컴파일이 한 번 더 이뤄지기 때문에 시간이 더 걸리는 점이다. (각각 별도의 프로젝트 처럼 컴파일됨)
유니티의 MPPM을 사용하면 이 부분에서 자유로워진다. 프로젝트의 수정사항이 생겨도 에디터에서 한 번만 컴파일되면 MPPM은 같이 컴파일되기 때문에 중복해서 기다릴 필요가 없다.
잉걸불을 개발하면서도 이 기능을 적극 활용하고 있는데, 내가 활용하는 방법은 다음과 같다.
- Main Editor (Client)
- MPPM 2 (Server)
- MPPM 3 (Client)
- MPPM 4 (Client)
MPPM은 최대 4개(메인 에디터 포함)까지 동작시킬 수 있으므로 한 개를 Dedicated Server로 활용하는 것이다.
public override void Start()
{
#if UNITY_EDITOR
try
{
if (CurrentPlayer.ReadOnlyTags()[0] == "Server")
StartServer();
}
catch
{
DebugUtils.Log("Client 동작 실행");
}
#endif
}
CurrentPlayer.ReadOnlyTags()
라는 API 함수를 활용할 수 있는데, 이 함수를 통해 MPPM에 등록된 Tags를 가져올 수 있다. 어짜피 하나의 태그만 작성했기 때문에, 첫번째 태그를 가져와서 이 태그가 "Server"인 Player에서만 서버를 실행시켜주면 Dedicated Server처럼 활용할 수 있다. 이를 통해 Main Editor에서 Play Mode를 시작하면 아래 사진의 Player 2는 자동으로 서버를 시작한다.


Player 2가 Server로 실행되었다.

다른 플레이어인 Player 3는 클라이언트의 역할을 할 수 있다.
우측 상단에 위치한 Layout 버튼을 누르면 Console, Game, Hierachy, Inspector, Scene 중 어떤 창을 띄울건지 선택할 수 있다.
플레이모드를 시작했을 때만 체크버튼이 활성화가 되니 참고바란다.
이와같이 Unity에서 공식적으로 ParrelSync의 기능을 지원하고, 사용하기도 더 편리하니 적극 활용하면 개발함에 있어서 훨씬 편할 것이다.