[Unity] Photon Fusion (4) - Network Property, State Authority

2024. 8. 28. 20:33Application & Note/Unity Engine

Network Property?

- Network Obejct에 NetworkTransform Component를 추가 했을 경우 Object의 Tranform이 동기화 되듯이, 스크립트의 변수와 같은 다른 상태 또한 동기화 할 수 있는 방법이 있다. 위에 [Networked]라는 Property를 붙여주는 방식이다.

- 이때 중요하게 다뤄지는 것이 StateAuthority인데 (Client가 StateAuthority가 없는 Object의 프로퍼티 변경시 나중에 묵살되버릴 수 있음), 이것이 무엇인고 하니...

 

 

StateAuthority?

- StateAuthority는 네트워크 객체의 상태를 제어하는 권한을 의미한다. 이 권한을 가진 Entity만이 특정 Object의 상태를 업데이트 하고 유지할 수 있으며, 다른 클라이언트들과 동기화 되게 한다.

- 대게 Hosting하는 쪽에서 모든 중요한 객체에 대한 StateAuthority를 가지는 편이다.

- Photon Fusion에서는 RPC를 StateAuthority를 가진 엔티티에게 날려서 특정 행동이나 상태 변경을 실행 할 수 있다.

 

어쨋든 이렇게 해서 Networked된 Property에 접근, 속성을 업데이트 시킬 수 있다. 그리고 변화가 발생 하면...

- 위에서 보이는 바와 같이, OnChangedRender()를 이용해서 특정 Networked Property가 업데이트 될 떄 마다 함수를 소환시켜서 Local Propery를 Update해주는 것이 가능하다. 이는 매우 유용하게 쓰이지 아니하겠는가?

- 그러나 함정은 다른 클라이언트에서는 Object의 StateAuthority도 다를 것이므로 정작 다른 클라에서는 적용되지 않는 대참사가 발생하는데, 이를 위한 솔루션은 바로 다음 편에서 다룰 RPC라는 친구이다.