본문 바로가기
유니티

[Unity] 아주 간단한 멀티 플레이 구현 (Mirror 사용)

728x90
반응형

이번 포스팅에서는 간단하게 서버(호스트)와 클라이언트를 만들어 멀티플레이를 구현해보겠습니다. 유니티에서는 Mirror라고 하는 네트워크 API를 무료로 제공해주는데 이걸 사용하면 쉽게 구현이 가능합니다. 일단은 유니티 에셋 스토어에 가서 Mirror를 다운로드 해줍니다.

 

에셋스토어에서 다운로드를 끝낸후에는 프로젝트에서 Package Manager에 들어가서 Mirror를 Import해줍니다. 정상적으로 Import가 되었다면 Assets폴더안에 Mirror폴더와 ScriptTemplates폴더가 생성되었을겁니다.

 

이제 기본적인 패키지 세팅은 끝났습니다. 이제 서버역할을 해줄 NetworkManager를 세팅할 차례입니다. 우선 빈 게임오브젝트를 생성해준 후 NetworkManager, NetworkManager HUD, Kcp Transport를 추가하여 줍니다. Mirror에서는 Multiplex, Simple Web, Telepathy등의 여러 transport를 제공하지만 이번 포스팅에서는 Kcp Transport만 사용하겠습니다.

 

컴포넌트 추가해준 후 사용할 transport를 꼭 NetworkManager안에 있는 Transport 프로퍼티에 추가해 주어야합니다.

 

이번에는 클라이언트 역할을 해줄 오브젝트를 만들어 주겠습니다. 사각형 오브젝트를 만들어준 후 간단한 이동 script를 추가해주었습니다. 이제 이곳에 통신에 필요한 Network Identity, Network Transform 컴포넌트를 추가해줍니다. Network Identity는 서버에서 클라이언트를 분별할 수 있도록 도와주는 컴포넌트입니다. Network Transform은 멀티 플레이어들 끼리 오브젝트의 위치를 공유하고 싶을 때 사용됩니다. 해당 컴포넌트를 가지고 있는 오브젝트는 자동으로 다른 클라이언트들에게 위치를 업데이트해줍니다. 

 

 위에서 만든 클라이언트용 오브젝트를 Prefab으로 만들어준 후에 서버 쪽 NetworkManager컴포넌트에있는 Player Prefab프로퍼티에  추가하여줍니다. 서버는 서버에 접속해오는 클라이언트에게 해당 Prefab을 Instantiate해줍니다. 이러면 네트워크 세팅이 끝났습니다. 이제 프로젝트를 빌드해주고 실행파일로 게임을 2개 실행해줍니다.

 

첫번째로 실행한 게임은 Host로 실행해서 서버와 클라이언트 역할을 동시에 맡깁니다. Host로 접근하면 클라이언트 오브젝트에서 만든 사각형이 나와서 조작할 수 있습니다.

 

두번째 게임은 클라이언트로만 실행해서 앞선 게임서버에 접속해줍니다. 그러면 앞선게임에서 조작하는 사각형이 보이고 두번째 게임에서 조작하는 사각형도 첫번째 게임에 정상적으로 출력됩니다.

반응형