본문 바로가기

Server

Photon Unity Networking PUN 튜토리얼 따라하기 4

원문: doc.photonengine.com/ko-kr/pun/current/demos-and-tutorials/pun-basics-tutorial/gamemanager-levels

 

4 - 게임 매니저와 레벨 | Photon Engine

Photon Quantum 혁신적인 멀티플레이 게임 개발에 도전! MOBA, 브라울러, RTS, 격투, 스포츠게임을 신속한 예측 네트워크 엔진으로 개발할 수 있습니다.

doc.photonengine.com

0, 1, 2, 3 단계를 통해 기본적인 포톤 통신구조와 여러 플레이어를 지원하는 씬을 만들어두었다.

 

이번 챕터에서는 사람 수에 맞춰서 씬을 불러오는 기능을 구현한다.

 

1. 경기장 로딩 루틴

원문대로 진행

 

2. 플레이어들의 연결 관찰

원문대로 진행

 

 

3. 로비에서 경기장 로딩

원문대로 진행

OnJoinedRoom 함수의 경우 아래처럼 작성되면 된다.

 

public override void OnJoinedRoom()
        {
            Debug.Log("PUN Basics Tutorial/Launcher: OnJoinedRoom() called by PUN. Now this client is in a room.");
            
            // #Critical: We only load if we are the first player, else we rely on `PhotonNetwork.AutomaticallySyncScene` to sync our instance scene.
            if (PhotonNetwork.CurrentRoom.PlayerCount == 1)
            {
                Debug.Log("We load the 'Room for 1' ");


                // #Critical
                // Load the Room Level.
                PhotonNetwork.LoadLevel("Room for 1");
            }
        }

 

OnConnectedToMaster 함수의 경우 아래처럼 작성되면 된다. 

public override void OnConnectedToMaster()
        {
            // we don't want to do anything if we are not attempting to join a room.
            // this case where isConnecting is false is typically when you lost or quit the game, when this level is loaded, OnConnectedToMaster will be called, in that case
            // we don't want to do anything.
            if (isConnecting)
            {

                Debug.Log("PUN Basics Tutorial/Launcher: OnConnectedToMaster() was called by PUN");

                // #Critical: The first we try to do is to join a potential existing room. If there is, good, else, we'll be called back with OnJoinRandomFailed()
                PhotonNetwork.JoinRandomRoom();
            }

        }

 

이제 Launcher 씬을 실행해보자. 

 

플레이어 이름을 넣고 Play 버튼을 누르면 

이런 씬이 나오게 된다.

 

그런데 지금 우리는 여러명이 접속할 때의 상태를 봐야한다.

 

그러니 실행파일을 만들어서, 하나의 PC에서 여러개를 띄워보자. 

 

빌드세팅을 켜고 

우 하단의 빌드 버튼을 눌러준다. 폴더는 적절히 골라준다. 

 

빌드가 끝나면, 해당 폴더로 가보자. 

실행파일을 볼 수 있다.

 

이것을 실행시켜보자. 

 

그러면 플레이어 이름 입력하는 부분을 스킵하고, 바로 방으로 들어가진다. 

 

왜일까?

 

비밀은 BuildSetting에 있다.

 

튜토리얼을 그대로 따라왔다면, 빌드세팅 안에 씬이 네개만 있을 것이다.

 

저기에 Launcher 씬도 드레그 해서 넣어주자.

 

 

위 이미지처럼 하면 된다. 순서가 굉장히 중요하다. (왜냐하면, 플레이어가 접속할때 부르는 씬이 0번째 씬이기 때문. 맨 우측의 index를 눈여겨보자.)

 

다시 빌드해보자. 그리고 실행시켜보자.

 

아래 이미지는 플레이어 한명만 룸에 접속했을 때의 결과이다.  

 

다음 이미지는 두명이 룸에 접속했을 때의 결과이다.

 

 

방이 넓어진 것을 알 수 있다.

 

Leave Game을 눌러주면 

 

 

이 창으로 돌아간다. 

 

이번챕터는 여기까지.