개발방법

멀티 게임 개발일지 1 - Unity

재밌는게임~ 2024. 7. 13. 18:30

깃허브 링크 : SiwonChoi98/MultiPlayerGame: d (github.com)

멀티 게임 개발에 대해서 느낀 점을 적어보려한다.

 

싱글게임을 7~9개 정도 개발해본 나는 멀티 게임 개발에 대한 흥미가 생겼고, 어떻게 개발할지 찾아보다가 Photon과 Mirror를 통해서 개발할 수 있다는 정보를 찾아서 Mirror를 선택하게 되었다. 

한글로 된 정보가 많은 Photon를 사용할 것인지 영어로 된 문서가 많은 Mirror를 사용할 것인지 보다가 Mirror를 선택하게 되었다. (Photon도 좋지만 어차피 새롭게 배우는거 영어 실력도 늘릴겸 모르는걸 찾아보는게 재밌을 것 같았다...여차하면 번역기도 잘되어 있으니까...)

 

Mirror에 대한 기본 정보는 공식 Document에 나와있지만 처음 멀티 개발을 해보면 헷갈리거나 이해가 안되는 것들이 생기기 마련이다. 필자도... 이해하는데 조금 걸렸다... 

 

간단하게 만 말하자면 

 

Mirror를 통해 Dedicated Server를 사용할 수 있고, 필자는 Listen Server를 사용하였다. 

* Dedicated Server : 전용 서버 

* Listen Server : 호스트 (서버, 클라이언트) / 방장 , 게스트 (클라이언트) / 참여유저

 

Unity Mirror는 기본적으로 클라이언트-서버 모델을 사용하여 네트워크 기능을 제공한다.

여기서 Room Manager는 방을 관리하는 역할을 한다.

 

포트번호를 통해서 방을 입장하게 되며 커스텀으로 여러 방을 만들 수 도 있을 거 같다.

(나는 아직 인게임을 하고 있기 때문에 추후에 개발하여 글을 업데이트 해보겠다.)

 

RoomManager를 이미 제공하여 객체를 생성해 component로 넣어주기만 하면 된다.

 

이런 식으로 말이다.

 

RoomManager를 Setting 하는 방법은 Youtube 또는 공식 Document에 나와 있으니까 참고하면 된다.

 

이제 게임 룸에 입장 하겠다.

로비화면에서 아래와 같이 버튼을 눌렀을 때 코드를 작성해준다.

호스트를 만드는 코드와 게스트로 들어가는 코드를 RoomManager에서 싱글톤으로 불러와서 작성해준다.

 

이러한 코드를 작성해서 버튼을 연결해주면 서버가 방을 파고 클라이언트가 들어가는 형태가 나올 수 있다.

이제 방을 생성하는 버튼을 누르게 되면 게임 룸으로 이동하게 된다.

 

게임 룸은 기본적으로 Mirror에서 UHD를 제공하여 아래와 같은 형태를 가지게 된다.

 

 

여기서 커스텀으로 방의 옵션을 만들어 줄 수도 있다. 기본은 바로 시작이 가능하게 되어있지만 

게임시작 시 최소인원이나 여러 제약 사항들을 걸어줄 수 도 있다.

 

Ready 버튼을 통해 게임 씬으로 이동하게 되면

 

RoomManager에서 플레이어 오브젝트를 저장한 프리팹이 생성된다. (유저 인원 수 대로)

 

여기까지 게임 씬까지 넘어가는 걸 해봤다.

다음 일지는 게임 오브젝트가 어떻게 서버와 클라이언트가 나눠서 동작하는지 작성해보겠다. 

 

재밌는 게임을 개발을 목표로 달려보자!!!

728x90