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

누가 누구?

Bolt에서는 네트워킹에서 익숙하지 않다면 좀 더 공부를 해야할 전문용어를 사용할 것 입니다.
우선, 서버, 클라이언트, 연결, 소유자, 컨트롤러프록시 에 대해서 살펴보도록 하겠습니다.

네트워크

서버

서버는 게임을 호스팅하고 있는 연결입니다.

만약 서버가 신뢰성있는 서버 이면, 서버는 (대부분의) BoltEntity들의 소유자이기도 할 것 입니다.

클라이언트

일반적으로 클라이언트는 서버로 간주되지 않는 게임에 접속하는 모든 것을 말합니다.
간단히 서버의 모든 원격 연결은 클라이언트입니다.

연결

Bolt에서의 연결 은 네트워크상의 또 다른 클라이언트/서버 의 연결로 간주됩니다.
이 의미는 연결클라이언트 또는 서버 로 언급할 수 있습니다.

서버 가 자신의 연결을 체크하는 경우, 데이터의 송신/전송이 필요한 원격 링크가 없으므로 null일 것입니다.

엔티티

소유자

엔티티의 생성자가 소유자 입니다.

엔티티의 소유자라고 간주하면 (기본적으로) 엔티티에 대한 모든 권한을 가집니다.

신뢰성있는 서버 의 경우에는 (대부분의) BoltEntity들은 서버 가 소유를 할 것 입니다.

Bolt의 인스턴스화된 객체는 (BoltNetwork.Instantiate()를 통해) 생성된 BoltEntity의 소유자로 생각합니다.
따라서 소유권은 필요한 연결상에서 인스턴스화에 의해 소유권을 설정할 수 있습니다.

로컬 머신이 엔티티의 소유자 인지를 체크하고 싶으면 entity.isOwner를 사용합니다.

컨트롤러

엔티티는 서버 또는 원격플레이어에게 모두 제어됩니다.

서버와 클라이언트 모두 BoltEntity의 제어권을 얻을 수 있습니다. 제어는 객체 소유자에게만 주어집니다. 기본적으로 엔티티들에게는 할당된 컨트롤러가 없습니다.

소유자는 제어권 가져오기entity.TakeControl() 을 통해 할 수 있습니다.
또 다른 클라이언트는 제어권 지정entity.AssignControl(connection) 을 통해 할 수 있습니다.

대부분의 시나리오에서 서버는 소유자이므로 서버가 제어권을 받고 다른 클라이언트는 제어권이 지정 된다고 읽는 경우가 많이 있으니 참고하세요.

로컬 머신이 엔티티의 제어권을 가지고 있는지 를 체크하기 위해서, entity.hasControl 를 사용합니다.
특정 연결이 엔티티를 제어하고 있는지 를 확인하려면 entity.IsController(connection)를 사용합니다.

프록시

엔티티는 기본적으로 로컬에서 제어되지 않는 더미 로, 엔티티는 복제된 꼭두각시일 뿐 입니다.

BoltEntity는 소유자 또는 컨트롤러가 아니면 연결/게임 내에서 프록시로 간주됩니다.

논리적인 것처럼 보일 수도 있지만 클라이언트의 프록시 BoltEntity가 다른 연결(소유자/컨트롤러인 대신)상에 있지 않다는 것을 명심하는 것이 중요합니다.

엔티티가 프록시인지를 체크하기위해서 (!entity.hasControl && !entity.isOwner) 를 사용합니다.

Back to top