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
의 향후 버전에 계획되어 있음)을 열어 놓았습니다.
Assembly 정의 지원
Assembly 정의
는 서로 다른 관리된 어셈블리로 유니티 프로젝트 내부에서 스크립트를 구성하는 흥미로운 방법으로, 컴파일 성능과 라이브러리와 코드 간에 더 나은 의존성 관리를 할 수 있습니다. 이 주제는 여기에서 더 많이 파악하실 수 있습니다.
Photon Bolt는 메인 SDK용 Assembly 정의
구성을 포함하고 있으며 사용자 정의 어셈블리도 지원합니다(.asmdef
파일을 통해). Bolt를 사용하는 동안 개발/컴파일 시간을 개선하고자 하는 지원을 포함했습니다. 프로젝트에 새로운 어셈블리를 정의 후 Bolt 컴파일러(Bolt/Compile Assembly
메뉴)를 수행하도록 하십시오. 예를 들어, GlobalEventListener
처럼 라이브러리가 모든 Bolt 관련된 클래스를 로드하기 위해 검색하고 등록할 필요가 있으니까요.