본문 바로가기
[ CODING STUDY ]/》유니티 실습

유니티 photon서버

by MRG 2024. 1. 1.
728x90
반응형

 

 

https://www.photonengine.com/

 

Multiplayer Game Development Made Easy | Photon Engine

EssentialPhoton Details Discover a summary of our product range, notable features, the power of the Photon Cloud, and our cost-effective pricing plans. HAVE A LOOK

www.photonengine.com

 

▣ photon 홈페이지에서  로그인 후  Create a new app를 추가한 다음에 App ID를 복사합니다. 

 

 

▣ 유니티 에셋에 들어가서 Photon pun 2 에셋을 추가합니다. 

 

 

▣ 에셋을 임포트 한 다음에 Windows에 Photon Unity Networking에서 PUN Wizard에 들어갑니다. 

 

 

▣ Setup Project에 들어가서

 

 

 

▣ Appld or Emial창에 아까 복사한 App ID를 붙여 넣기하고 Setup을 눌러서 세팅을 완료합니다.

 

 

▣ 빈오브젝트를 생성하고 오브젝트를 RoomManager로 지정 긜고  RoomManager라는 이름으로 스크립트를 추가합니다.  

이건 photon 서버에 관한 스크립트를 관리해주는 오브젝트입니다. 

 

 

▣ RoomManager에 들어가서 먼저 photon을 사용하기 위한 using Photon.Pun을 선언합니다. 

 

▣ 그리고 MonoBehviour뒤에 PunCallbacks을 추가합니다. 

 

▣ public GameObject Player; public Transform spawnPoint 변수는 서버에서 사용할 플레이어와 플레이어위치를 관리하기 위한 변수입니다. 

 

 

▣  처음에 Start() 함수에서 PhotonNetwork.ConnectUsingSettings(); 함수를 호출하여 포톤서버 세팅을 시작하는 코드를 작성합니다. 
그리고 세팅 부분이 잘 되는지 확인하기위해 Debug.Log()를 넣습니다. 
서버함수에 흐름을 알기 위해 Debug.Log()를 꼭 함수마다 넣어주셔야 합니다.  

 

▣ OnConnectedToMaster() 함수는 Photon서버에 연결하는 작업입니다.

OnConnectedToMaster() 함수에서 PhotonNetwork.JoinLobby(); 함수를 호출해서 함수를 호출하면 서버에 방을 생성하는 코드를 연결하기 위해서 넣었습니다. 

 

▣ 이 부분까지를 정리하면 Start() 함수를 통해서 ConnetUsingSettings() 함수로 photon서버를 세팅하고 오류없이 진행되면 이어서 OnConnectedToMaster() 함수로 이어져 서버에 방을 생성방식이라고 흐름을 생각하시면 됩니다. 

 

 

▣ 그럼 마스터가 완료되면 PhotonNetwork.JoinOrCreateRoom() 함수로 서버에 방을 생성하고 이름과 서버에 관한 옵션을 설정을 합니다. 저희는 null로 이름만 지정했습니다.

 

 

▣ 컴파일 저장 후 플레이버튼을 클릭하면 Console창에 Photon서버에 연결이 되면 Debug.Log()함수가 순서대로 호출되는 걸 확인할 수 있습니다. 

만약 Debug.Log()함수가 호출되지 않거나 오류가 발생할 경우 어디서 문제가 있는지도 확인할 수 있게 되었습니다.

 

 

▣ 완료 후 서버에서 사용할 플레이어 오브젝트를 생성하고 Movement라는 스크립트를 통해 Player에 움직임과 마우스 움직임을 작성합니다.

▣ 또 컴포넌트에 Photon View, Photon Rigidbody View, Photon Transfrom View를 추가하여 photon서버에 Player, Rigidbody, Transfrom 값을 가져오게하는 컴포넌트를 추가합니다.

▣ SpawnPoint는 플레이어가 처음 등장하는 위치를 나타내는 오브젝트 입니다. 

▣ 이 두 오브젝트를 Resources 폴더를 생성하여 넣습니다.

 

▣ 그리고 다시 RoomManager로 들어가서 함수를 생성합니다.

OnJoinRoom()함수를 생성하여 플레이어가 참가하는 함수를 따로 생성하고

PhotonNetwork.Instantiate() 함수를 통해 플레이어를 서버에 인스턴스 하여 가져오는 코드를 추가합니다.

PhotonNetwork.Instantiate() 함수에는 플레이어이름, 위치, 회전값을 지정합니다. Quaternion.identity로 기본 회전방식을 지정했습니다.

컴파일 저장 후 프리팹으로 되어있는 오브젝트를 RoomManager 스크립트에 넣고

 

 

▣ 확인해 보면 서버가 생성되면 플레이어가 나오는 걸 확인할 수 있습니다.

728x90
반응형

댓글