유니티 엔진 - 게임 프로젝트/데디케이트 기반 모바일 게임

로비 구현 - 3) ParrelSync 패키지의 사용 + 플레이어간의 퇴장 동기화

monstro 2025. 12. 16. 20:18
728x90
반응형

- 개요

ParrelSync 패키지유니티에서 멀티 플레이어를 테스트하는 용도로 사용한다

해당 패키지를 프로젝트에 추가한 후에 사용하는 절차는 다음과 같다

  • 1) 상단 ParrelSync - Clones Manager - Create New Clone 선택
  • 2) 지정한 프로젝트와 동일한 경로에 "동일한 폴더명_clone_생성번호"의 폴더 생성
  • 3) 생성된 클론 대상으로 Open In New Editor 실행후에 에디터를 통해 멀티 플레이어 테스트 가능

 

다음으로 유니티에서 변경사항을 즉시 반영하도록 다음과 같이 설정한다

  • 상단 Project Settings 탭 - Player - Run in Background 옵션 선택

 

위와 같이 세팅하고 플레이어의 게임 퇴장을 다른 플레이어에게 전파하도록 설정한다

기본적으로 플레이어의 정보를 다른 모든 플레이어에게 전파하는 것은 매부 비효율적이지만,

프로젝트의 크기를 고려하여 이대로 수행한다

 

- 서버 사이드

1) UsersManager 클래스

 

NetworkServer를 멤버변수로 추가하고 생성자에서 멤버변수를 설정한다

 

 

Disconnect 함수에 위와 같이 로직을 추가하여

NotifyOtherPlayers 함수를 호출하여 다른 플레이어들을 대상으로 연결이 끊긴 플레이어의 정보를 전파한다

 

 

NotifyOtherPlayers 함수의 로직은 위와 같다

새로운 Net_OnServerStatus 패킷을 생성하고 인자로 받은 ID를 제외한 다른 플레이어들에게 패킷을 전송한다

 

- 클라이언트 사이드

1) NetworkClient 클래스

 

OnApplicationQuit 함수를 추가하여 내부적으로 Disconnect 함수를 호출하도록 설정한다

Disconnect 함수에서는 NetManager로부터 DisconnectAll 함수를 호출하여 활성화된 연결들만 끊도록 설정한다

 

 

OnDestroy 함수를 추가하여 NetPeer가 존재한다면 

NetManager로부터 Stop 함수를 호출하여 모든 네트워크 활동을 완전히 종료한다

 

2) UI_Lobby 클래스

 

로그아웃을 수행하는 버튼을 멤버변수로 추가한다

 

 

Start 함수에서 버튼 멤버변수를 설정하고 onClick 이벤트에 Logout 함수를 연결한다

 

 

Logout 함수의 로직은 위와 같다

NetworkClientDisconnect 함수를 호출하고 로그인 씬으로 전환한다

 

- 최종 실행 결과

 

728x90
반응형