Action disabled: source

네트워크 보기들

네트워크 보기들은 네트워크에 데이터를 공유하는데 사용되는 수단들입니다. 두 종류의 네트워크 통신을 가능하게 합니다: 상태 동기화(State Synchronization)Remote Procedure Calls입니다.

같은 게임을 수행하는 많은 클라이언트가 있다면, 각각의 클라이언트는 오브젝트들의 집합을 가지는데, 그들이 합쳐져서 게임을 만듭니다. 둘 또는 많은 클라이언트들을 동일하게 보이기 하기 위해서는, 이들 오브젝트들이 데이터를 공유해 동기화 되어야 합니다. 이를 State Synchronization라고 부릅니다. 게임에 모든 오브젝트의 상태를 동기화 하는 것은, 엄청난 양의 데이터를 필요로 하며, 게임을 계속 실행 유지 하는데 네트워크에서 너무나 많은 데이터가 보내어집니다. 이를 다루기 위해서, 네트워크 보기들은 어떠한 데이터들이 공유 될지, 그러므로 어떤 오브젝트들이 동기화 될지를 명시합니다. 각각의 네트워크 보기는 오브젝트의 특정부분을 보고, 다른 클라이언트들의 같은 오브젝트와 동기화 되었는지를 확인합니다. 더 많은 상태 정보에 관한 정보는 State Synchronization page에서 참조 하실 수 있습니다.

오브젝트의 위치를 보낼 때나 다른 사람이 고른 아이템을 재 생산할 때 다른 네트워크 시나리오들이 있습니다. 이들은 한번, 또는 빈번하지 않은 오퍼레이션들이므로, 관련된 오브젝트들의 상태를 동기화하는 것은 이치에 맞지 않습니다. 이 경우는 Remote Procedure Call를 사용하여 클라이언트들이나 서버에게 해당 오퍼레이션을 수행하게 합니다. RPC에 관한 더 많은 정보는 RPC Details page에서 참조 하실 수 있습니다.

기술적 세부 사항들

네트워크 보기들은NetworkViewID에 의해 네트워크에서 찾을 수 있습니다. NetworkViewID는 기본적으로 모든 네트워크상의 머신들이 동의하는 오브젝트의 유일한 식별자입니다. NetworkViewID는 128비트 숫자로 구현되고, 네트워크로 전송될 때 가능한16비트로 자동으로 압축됩니다.

클라이언트 측에 도달하는 각 패킷은 특정한 네트워크 보기에 적용이 필요합니다. NetworkViewID는 그것이 어떤 네트워크 보기에 속하는지 유일하게 식별하는데 사용됩니다. NetworkViewID를 사용하여 유니티는 상응하는 네트워크 보기를 찾을 수 있고, 데이터를 풀며(unpack), 수신 패킷을 네트워크 보기의 관측된 오브젝트에 마지막으로 적용 시킵니다.

에디터의 네트워크보기 사용의 더 많은 사항은 Network View Component Reference page에서 찾으실 수 있습니다.

네트워크 오브젝트들을 생성하기 위해서 Network.Instantiate()를 사용하면, 네트워크 보기에의 할당과 사용자에 게의 적절한 할당에 신경 쓸 필요가 없습니다. 모두 자동으로 처리됩니다.

하지만, Network.AllocateViewID를 사용해서 각 네트워크 보기의 NetworkViewID를 수동으로 제어할 수 있습니다. 스크립팅 참조문서는 어떻게 오브젝트가 RPC 함수를 사용한 모든 클라이언트에 수동으로 인스턴스화 되고 NetworkViewID가 수동으로 AllocateViewID로 설정되는지에 대한 예를 보여 줍니다.

역링크