본문 바로가기
Unity

Photon을 이용한 네트워크 프로그래밍

by imagineer_jinny 2021. 8. 17.

Photon

Photon Unity Networking (PUN) is a Unity package for multiplayer games. Flexible matchmaking gets your players into rooms where objects can be synced over the network.

 

 

1. 포톤 데쉬보드 만들기

Your Photon Cloud | Photon Engine

 

Multiplayer Game Development Made Easy | Photon Engine

Sign In Don't have an account? Create one ...

id.photonengine.com

2. 유니티 에셋스토어에서 PUN 2 - FREE 다운로드

 

3. Window - Photon Unity Networking - Highlight Server Setting 

아이디 복사해서 붙여넣기

 

TCP / UDP

TCP 와 UDP 차이를 자세히 알아보자 (velog.io)

 

TCP 와 UDP 차이를 자세히 알아보자

TCP와 UDP는 TCP/IP의 전송계층에서 사용되는 프로토콜이다. 전송계층은 IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당하는 계층이다.

velog.io

 

 

4. 빈 게임 오브젝트로, C# 스크립트로 NetworkManager 생성

 

5. NetworkManage 스크립트 작성

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;

// 서버 클라간의 통신 : 요청(Request)- 응답(Response), Write / Read,Send / Receive

// 1. 접속 요청
// 2. 접속 응답 - 성공(로비 입장 요청)/ 접속 실패
// 3. 로비입장 응답 - 성공(방 입장 요청)/ 접속 실패
// 4. 방 입장 응답-  성공(콘텐츠 진행) / 실패(방 생성 요청)
// 5. 방 생성 응답 - 성공(콘텐츠 진행) / 실패


public class NetworkManager : MonoBehaviourPunCallbacks
{
    // Start is called before the first frame update
    void Start()
    {
        // 1. 접속 요청
        PhotonNetwork.ConnectUsingSettings();
        print("ConnectUsingSettings");

    }

    public override void OnConnectedToMaster()
    {
        print("OnConnectedToMaster");
        base.OnConnectedToMaster();
        
        // 2. 접속 응답 - 성공(로비 입장 요청)/ 접속 실패
        PhotonNetwork.JoinLobby();
        print("JoinLobby");

    }

    public override void OnJoinedLobby()
    {
        print("OnJoinedLobby");
        base.OnJoinedLobby();

        // 3. 로비입장 응답 - 성공(방 입장 요청)/ 접속 실패
        PhotonNetwork.JoinRandomRoom();


    }

    //랜덤룸 실패
    public override void OnJoinRandomFailed(short returnCode, string message)
    {
        base.OnJoinRandomFailed(returnCode, message);

        // 4. 방 입장 응답- 실패(방 생성 요청)
        PhotonNetwork.CreateRoom("MyRoom", new RoomOptions()
        {
            MaxPlayers = 10,
            IsOpen = true,
            IsVisible = true
        });
        print("CreateRoom");


    }

    public override void OnCreateRoomFailed(short returnCode, string message)
    {
        print("OnCreateRoomFailed");
        base.OnCreateRoomFailed(returnCode, message);
    }

    //랜덤룸 성공
    public override void OnJoinedRoom()
    {
        print("OnJoinedLobby");
        base.OnJoinedRoom();

        //방 입장 성공!! Goal
        PhotonNetwork.Instantiate("Player",Vector3.zero,Quaternion.identity);
        

    }
}

 

6. Player 만들기

 

7. 빌드해서 플레이어 두개 생기는지 확인해보기

댓글