PUN Classic (v1), PUN 2, Bolt는 휴업 모드입니다. Unity2022에 대해서는 PUN 2에서 서포트하지만, 신기능의 추가는 없습니다. 현재 이용중인 고객님의 PUN 및 Bolt 프로젝트는 중단되지 않고, 퍼포먼스나 성능이 떨어지는 일도 없습니다. 앞으로의 새로운 프로젝트에는 Photon Fusion 또는 Quantum을 사용해 주십시오.

v1.2.9의 새로운 사항

주요 변경사항:

변경사항의 전체 목록은, 여기 로그를 참고하세요..

새로운 BoltMatchmaking 유틸리티 클래스

Photon Bolt의 매치메이킹 기능을 향상과 Bolt 세션의 관리를 처리 및 클라우드 서비스를 이용한 게임 룸 생성 및 참여를 위한 일관성 있는 API를 제공하기 위해 이 버전에는 모든 필요한 단계를 수행하는 책임 있는 새로운 클래스인 BoltMatchmaking를 추가했습니다.

이 유틸리티 클래스의 주요 API와 각 메소드의 간략한 설명은 다음과 같습니다:

  • BoltMatchmaking.CurrentSession: 이 피어가 연결할 현재 세션을 얻어옵니다. 사용자 지정 속성과 같이 세션에 대한 추가적인 정보를 얻어올 때 매우 유용합니다.
  • BoltMatchmaking.CreateSession(string sessionID, IProtocolToken token, string sceneToLoad): 현재 수행중인 플랫폼을 사용하여 세션을 생성합니다. 선택적으로 프로토콜 토큰 (또는 PhotonRoomProperties)과 룸 생성으로 로드되는 씬 식별자를 전달할 수 있습니다.
  • BoltMatchmaking.UpdateSession(IProtocolToken token): 현재 세션 구성정보를 갱신합니다. 로컬 피어는 이 메소드를 호출하기 위해서는 서버가 되어야 합니다.
  • BoltMatchmaking.JoinSession(string sessionID, IProtocolToken token): 이름으로 세션에 참여합니다. 세션을 생성하는 데 사용되는 것과 동일한 세션 식별자를 사용하여 세션에 즉시 가입할 수 있습니다.
  • BoltMatchmaking.JoinSession(UdpSession session, IProtocolToken token): 참조로 UdpSession 을 사용하여 세션에 참여합니다. SessionListUpdated 콜백을 사용하거나 BoltNetwork.SessionList 통해 UpdSession을 검색할 수 있습니다.
  • BoltMatchmaking.JoinRandomSession(IProtocolToken token): 무작위 방식으로 세션에 참여합니다. 이 호출은 피어가 가능한 빨리 룸을 채우도록 할당되는 기본 입력 모드를 사용하여 클라이언트가 사용 가능한 세션에 참여하도록 합니다.
  • BoltMatchmaking.JoinRandomSession(UdpSessionFilter sessionFilter, IProtocolToken token): 무작위 방식으로 세션에 참여합니다. 이 오버로드에서는 UdpSessionFilter 클래스를 사용하고 사용자 지정 파라미터를 전달하여 룸을 필터링할 수 있습니다.

이 클래스를 사용하는 방법에 대한 더 많은 정보는 여기에서 찾으실 수 있습니다.

확장된 Entity API

이 버전에서는, BoltEntity API를 Command System에 주로 집중하게한 추가 메소드를 통해 확장시켰습니다. 이러한 메소드들은 엔티티의 내부 Input Command Queue를 더 잘 제어할 수 있도록 해 줍니다.

  • BoltEntity.IsInputQueueFull: 각 엔티티는 큐에 들어갈수 있는 제한된 개수의 명령어(기본적으로 60개)를 가지고 있습니다. 이는 내부 큐가 가득차있는지에 대한 여부를 알려줍니다.
  • BoltEntity.ClearInputQueue(): 이 함수를 호출하면 특정 엔티티의 경우 내부 명령 큐가 지워지고 모든 명령이 삭제됩니다.
  • BoltEntity.QueueInput(Command cmd, bool force): QueueInput 함수에 명령이 입력 큐가 가득차있을 때 반드시 독립적으로 큐에 들어가야 하는 값을 알려주는 boolean 값을 가지는 새로운 아규먼트가 추가되었습니다.(이 경우에 가장 오래된 명령을 무시하는지에 대한 여부). 이 플래그는 기본값으로는 false 로 설정됩니다.

이러한 모든 메소드들은 네트워크 연결 속도가 느려서 엔티티 큐가 가득 차거나 게임 호스트에 다시 연결하는 동안 명령 목록을 재설정하려는 특수한 경우가 있는 고급 시나리오에서만 사용할 수 있습니다. 일반적인 상황에서는 이러한 기능을 사용할 필요가 없지만 매우 유용할 수 있습니다.

Bolt 폴더 계증구조

Photon 제품군의 다른 제품 컨벤션에 이어 Photon Bolt SDK는 Photon Voice SDK와 같은 다른 솔루션을 사용할 경우 더 나은 코드 구조가 될 수 있도록 <Unity Project>/Assets/Photon/PhotonBolt 폴더에 들어가 있습니다. 또한 이번 버전에서는 개선사항이 있을 때 보다 빠른 업데이트를 유도할 수 있는 Bolt와 Photon Cloud의 통합용 클라이언트의 기반으로써 Photon Realtime SDK의 내부 용도를 Unity 프로젝트 표면에 노출하여 사용자 정의 리얼타임 클라이언트(LoadBalancingClient) 구현을 위한 가능성(Bolt의 향후 버전에 계획되어 있음)을 열어 놓았습니다.

new photon bolt folder hierarchy
New Photon Bolt Folder Hierarchy.

Assembly 정의 지원

Assembly 정의는 서로 다른 관리된 어셈블리로 유니티 프로젝트 내부에서 스크립트를 구성하는 흥미로운 방법으로, 컴파일 성능과 라이브러리와 코드 간에 더 나은 의존성 관리를 할 수 있습니다. 이 주제는 여기에서 더 많이 파악하실 수 있습니다.

Photon Bolt는 메인 SDK용 Assembly 정의 구성을 포함하고 있으며 사용자 정의 어셈블리도 지원합니다(.asmdef 파일을 통해). Bolt를 사용하는 동안 개발/컴파일 시간을 개선하고자 하는 지원을 포함했습니다. 프로젝트에 새로운 어셈블리를 정의 후 Bolt 컴파일러(Bolt/Compile Assembly 메뉴)를 수행하도록 하십시오. 예를 들어, GlobalEventListener 처럼 라이브러리가 모든 Bolt 관련된 클래스를 로드하기 위해 검색하고 등록할 필요가 있으니까요.

photon bolt unity project using assembly definition to organize the code
Photon Bolt Unity project using "Assembly Definition" to organize the code.
Back to top