프로그래밍 정리/Unity

[Unity - 유니티] NetworkView, RPC - Network 게임 제작시.

주누다 2014. 6. 8. 03:50
반응형

NetworkView


- Observed 된 컴포넌트의 정보를 실시간으로 송수신하여

온라인상의 다른 유저에게 해당 객체의 상태를 동기화시킴.


- Observed 속성을 스크립트 컴포넌트로 지정시

해당 스크립트의 OnSerializeNetworkView() 함수가 정의되어있어야하며

이 콜백 함수에서 데이터를 송수신하여 동기화.


- OnSerializeNetworkView 함수가 호출되는 주기는

Editor - Project Settings - Network 의 

Sendrate 속성으로 조절할 수 있음.

※ Sendrate - 초당 패킷 전송 횟수. 



Inspector 

==============================================================================================


State Synchronization

==========================================================================

Off 

=> 실시간 데이터 전송을 하지 않음. 


Reliable Delta Compressed

=> 데이터 유실 X.

=> 패킷의 전송 순서 보장.

=> 패킷 전송 실패시 재전송.

=> TCP/IP로 보면 되는듯..


Unreliable

=> 데이터 유실이 발생할 수 있음.

=> 빠른 전송속도 보장.

=> UDP로 보면 되는듯...


==========================================================================




Observed

==========================================================================

송수신할 컴포넌트 지정.

기본값은 NetworkView가 추가된 오브젝트의 Transform이 설정됨.

==========================================================================



View ID

==========================================================================

읽기 전용 속성. 실행시 자동으로 ID 부여.

==========================================================================


==============================================================================================







원격 프로시저 호출(RPCs - Remote Procedure Calls)



- 다른 디바이스의 함수를 호출하는 기능

.

- RPC 함수 호출시 네트워크를 통해 다른 유저의 스크립트에서 해당 함수 호출.


- RPC 함수 정의는 [RPC] 어트리뷰트를 함수 앞에 명기해야함.

ex)

[RPC]

void Chat(string chat)

{

...

}


- RPC를 호출할려면 해당 스크립트가 게임오브젝ㅌ의 NetworkView 컴포넌트가 

추가되어 있어야함.


- RPC 함수는 세개의 인수를 제공.

=> 첫번째 인수 - 호출할 함수명

=> 두번째 인수 - RPCMode 선택

==========================================================================

RPCMode.Server - Server Client에 RPC 호출

RPCMode.Others - 자신을 제외한 다른 모든 유저의 RPC 호출

RPCMode.Othersbuffered - RPCMode.Others와 동일. 버퍼에 저장 후 나중에 접속한 유저에게도 RPC 호출.

RPCMode.All - 자신을 포함한 다른 모든 유저의 RPC 호출

RPCMode.AllBuffered - RPCMode.All과 동일. 버퍼에 저장 후 나중에 접속한 모든 유저에게도 RPC 호출.

==========================================================================

=> 세번째 인수 - 파라미터

=> int, float, string, NetworkPlayer, NetworkViewID, Vector3, Quaternion 타입을 전달할 수 있음.



반응형