이번에 프로젝트를 진행하게 되면서 멀티플레이어 게임을 개발하게 되었다.
이때 멀티플레이어 게임을 개발하면서 단일 PC에서 빌드 없이 여러 클라이언트를 바로 테스트해 볼 방법이 있을까?
이번 글에서는 Symbolic Link를 직접 사용하거나, 간접적으로 이를 사용하는 Extension을 통해 이를 해결할 방법을 살펴보도록 하겠다(Windows를 대상으로 작성하였으나, 다른 운영체제에서도 성립할 가능성이 높음).
이론
멀티플레이어 게임 개발은 여러 명의 클라이언트를 동시에 접속시킨 상태에서 게임을 테스트해야 하는 경우가 자주 발생한다.
이때 단일 PC에서 여러 클라이언트를 테스트해야 하는 경우 문제가 생긴다. 보통은 빌드 파일을 만들어서 여러 클라이언트를 동시 접속시키도록 하여 테스트하는데, 매번 빌드해서 테스트하기엔 너무 많은 시간이 걸린다.
이때 빌드 없이 동시에 하나의 PC에 클라이언트 여럿을 접속시켜 테스트할 방법이 있다.
기본적으로 유니티 자체에서는 한 에디터에선 클라이언트 하나만 접속이 가능하므로, 같은 프로젝트의 에디터를 여러 개 열면 해결될 것 같은 느낌이 든다. 그러나 한 PC에서 하나의 프로젝트에 대한 에디터는 단 하나만 열 수 있다. 그렇기 때문에, 해결을 위해서는 직접 프로젝트를 복사해서 여러 개의 에디터를 여는 방법을 사용해야 한다.
그러나 전체 프로젝트를 매번 복사하기엔 몇 가지 문제가 있다.
- 프로젝트 내용이 바뀔 때마다 복사해야 한다.
- 프로젝트 전체를 복사하기엔 너무 용량을 많이 차지하게 된다.
그래서 전체를 복사하지 않게 하기 위해, 프로젝트의 내용물 중 일부를 '링크를 걸어' 대체할 수 있다. 이 개념이 바로 Symbolic Link이다(참고: https://en.wikipedia.org/wiki/Symbolic_link).
이때 (1) Symbolic Link를 직접 만드는 방법을 사용해도 되고, (2) 이를 구현한 Extension을 사용해도 된다. 한번 살펴보자.
1. Symbolic Link 직접 만들기
Windows에서는 Symbolic Link를 만들기 위해 다음과 같은 과정을 거쳐야 한다.
1. cmd를 관리자 권한으로 실행하기
2. mklink (windows)를 통해 심볼릭 링크 생성하기
Assets, Packages, ProjectSettings 총 세 개 폴더에 대해 심볼릭 링크를 생성한다. 나머지 폴더(Library, Temp, obj)는 별도로 복사해주도록 한다.
이때 심볼릭 링크를 생성하는 형식은 다음과 같다.
[ mklink /d 가상폴더 대상폴더 ]
예를 들어, Network Tutorial Project 폴더를 원본으로 해서 Network Tutorial Project Dup 2로 복제하고 싶다면, 아래와 같이 쓸 수 있겠다.
아래에는 ProjectSettings만 적어놨지만, 이외에도 Assets, Packages에 대해서도 동일한 방식으로 실행시켜주자.
이렇게 한 후, 나머지 폴더(Library, Temp, obj)는 별도로 복사해주도록 한다.
이러고 나면 유니티에서 프로젝트를 실행해서 다른 에디터처럼 쓸 수 있다.
2. 다른 Extension 사용: ParralSync 활용하기(*추천)
다만 1번 방법은 모두 직접 설정해야 하다 보니 번거로운 점이 많다.
그래서 이를 자동으로 해결해주는 유니티 에디터 Extension이 존재한다.
https://github.com/VeriorPies/ParrelSync/tree/master
GitHub - VeriorPies/ParrelSync: (Unity3D) Test multiplayer without building
(Unity3D) Test multiplayer without building. Contribute to VeriorPies/ParrelSync development by creating an account on GitHub.
github.com
활용 방법을 살펴보자.
1. 백업하기: 혹시나 모를 문제가 발생할 수 있으니, 프로젝트를 백업해놓거나 Git, SVN과 같은 버전 관리 프로그램으로 상태를 저장해놓자.
2. Package Manager > 상단의 +를 눌러 URL로 패키지를 다운받는다.
이때 붙여넣어야 할 링크는 다음과 같다.
https://github.com/VeriorPies/ParrelSync.git?path=/ParrelSync
3. 다운로드하고 나면 상단의 ParralSync가 생기는데, 여기에서 Clones Manager를 클릭하자.
4. 클론 생성을 위해 Create new clone을 클릭한다.
5. 아래처럼 클론이 새로 생겼을 건데, 이 상태에서 Open in New Editor를 누르면 새로운 에디터가 열린다.
다음부터는 새로운 에디터를 열 때 ParralSync > Clones Manager > Open in New Editor를 눌러 에디터를 열면 되겠다.
1, 2번 방식 모두 똑같이 클론 프로젝트를 만드는 것이고 또 에디터를 여러 개 여는 것이다 보니, 그만큼 부하가 클 수 있다는 점을 감안해야 한다.
그러니 본인의 컴퓨터에 자신이 있지 않다면, 초고사양 게임을 여럿 돌리는 일은 자제하는 게 좋을 것 같다 ㅎㅎ;
참고 문헌
https://forum.photonengine.com/discussion/15509/how-to-test-two-clients-on-one-device
How to test two clients on one device? | Photon Engine
So let's say I have two clients in my game, but I am working on one PC. How can I test to see if both sides are working as they should?
forum.photonengine.com
https://milkyquartz.tistory.com/282
[Unity] 에디터 두개 빌드하기 (빌드없이 멀티 테스트하기)
1. 먼저 이 링크를 복사해준다.https://github.com/VeriorPies/ParrelSync.git?path=/ParrelSync >> 깃허브 링크 GitHub - VeriorPies/ParrelSync: (Unity3D) Test multiplayer without building(Unity3D) Test multiplayer without building. Contribute t
milkyquartz.tistory.com
https://github.com/VeriorPies/ParrelSync/tree/master
GitHub - VeriorPies/ParrelSync: (Unity3D) Test multiplayer without building
(Unity3D) Test multiplayer without building. Contribute to VeriorPies/ParrelSync development by creating an account on GitHub.
github.com
'Unity3D > Tip' 카테고리의 다른 글
Unity - Terrain이 빛나는 문제(URP 모바일, Unity Engine 2022버전 이하)Unity - Terrain이 빛나는 문제(URP 모바일, Unity Engine 2022버전 이하) (0) | 2024.09.03 |
---|---|
유니티 이벤트 시스템 최적화하기 - Graphic Raycaster 제거하기 (1) | 2021.08.10 |
유니티 2D에서 Collider와 Rigidbody 최적화에 관하여 (4) | 2021.08.09 |
Unity VSCode에서 오류가 날 때: CS0246 형식 또는 네임스페이스 이름을 찾을 수 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요. (4) | 2020.12.26 |
유니티 프로파일러(Profiler)를 이용해 성능 개선하기 (7) | 2020.10.04 |
댓글