요즘 게임들은 멀티플레이가 정말 많다. 그도 그럴것이 멀티플레이가 있는 게임이 싱글플레이만 있는 게임보다 더 많이 팔리기 때문이다. 곧 최종프로젝트에 앞서서 출시를 하게 된다면 멀티플레이제작도 고려해야하므로 멀티플레이에 대해 알아보겠다.
포톤 (Photon)은 Exit Games에서 개발한 멀티플레이어 게임 개발을 위한 네트워크 엔진
Unity와 같은 게임 엔진과 함께 사용되어 멀티플레이어 기능을 게임에 추가할 수 있게 한다.
PhotonNetwork.ConnectUsingSettings(); 이 메서드를 호출하면, 앱이 포톤 클라우드에 연결된다는 PhotonNetwork.IsConnected로 확인할 수 있다.1.2. CreateRoom 및 JoinRoom 메서드
PhotonNetwork.CreateRoom("RoomName");
PhotonNetwork.JoinRoom("RoomName");
PhotonNetwork.JoinOrCreateRoom("RoomName"); // 없으면 만들고 있으면 들어감
CreateRoom 메서드는 새로운 방을 만들고, JoinRoom 메서드는 이미 존재하는 방에 참가한다.
1.3. Instantiate 메서드
PhotonNetwork.Instantiate("PrefabName", position, rotation);
포톤 네트워크를 통해 새로운 게임 오브젝트를 생성한다.
이 메서드는 Unity의 Instantiate 메서드와 유사하나, 네트워크를 통해 동기화한다.
MonoBehaviourPunCallbacks 클래스는 포톤의 주요 이벤트에 대한 콜백 메서드를 제공한다.
2.1. OnConnectedToMaster 메서드
public override void OnConnectedToMaster() { ... }
게임이 포톤 마스터 서버에 성공적으로 연결되면 호출된다.
2.2. OnJoinedRoom 메서드
public override void OnJoinedRoom() { ... }
로컬 플레이어가 방에 입장하면 호출된다.
2.3. OnPlayerEnteredRoom 메서드
public override void OnPlayerEnteredRoom(Player newPlayer) { ... }
다른 플레이어가 방에 입장하면 호출된다.
PhotonView
PhotonView는 포톤 네트워크에서 네트워크 상태를 동기화하는 데 사용된다. 이 컴포넌트를 통해 PhotonNetwork.Instantiate를 사용해 생성된 객체가 네트워크를 통해 동기화된다. PhotonView는 주로 Transform 컴포넌트나 사용자 정의 스크립트와 같이 동기화하고자 하는 컴포넌트를 참조한다.
PhotonTransformView
PhotonTransformView는 위치, 회전, 및 크기를 동기화하는 데 사용되는 컴포넌트이다. PhotonView에 추가하여 사용하며, 이 컴포넌트를 통해 게임 오브젝트의 움직임이 네트워크를 통해 동기화된다.
PhotonAnimatorView
PhotonAnimatorView는 Animator 컴포넌트를 동기화하는 데 사용된다. 이 컴포넌트는 PhotonView와 함께 사용되며, 애니메이션 상태와 변수를 동기화하는 데 사용된다.
PhotonRigidbodyView
PhotonRigidbodyView는 Rigidbody 또는 Rigidbody2D 컴포넌트를 동기화하는 데 사용된다. 이 컴포넌트는 움직임과 회전을 동기화하여 물리적 효과를 네트워크를 통해 동기화할 수 있다.
게임 플레이에 있어서 언제나 인기가 많은 멀티플레이에 사용하는 에셋과 그 메서드, 기능들을 살펴보았다. 다다음주면 최종프로젝트가 시작되고 그 프로젝트에서 완성한 결과물은 출시를 염두하고 만드는 것이기 때문에 멀티플레이가 적용되면 아마 플러스요소가 될 것이다.
그리고 여태까지 고민했던 일이 하나 있었는데 슬슬 결심이 선 것 같다.