네트워크 이론
네트워크 엔지니어 출신이니까.. 이론은 복습겸 정리 합니다.
TCP/IP vs OSI 7 Layer
TCP / IP ?
- 기억에 맞다면, 미 국방성에서 처음 시작한 인터넷 표준이 TCP/IP 였다.
- 인터넷 구조의 변화와 사용자가 늘어남에 따라 Protocol 이 많아지고 이에 따른 세부된 규칙을 만들게 된 것으로 알고 있다. (그것이 OSI 7 Layer)
- 데이터 전송 전과 후로 나뉜 모델이다.
- 데이터 전송 전 어떻게 보낼 것인지 제어는 어떻게 할 것인지, 어떤 포멧으로 전송 할 것인지 등에 대한 정의가 상위 레이어.
- 데이터의 전송 후 데이터가 목적지까지 잘 전달되는지에 대한 제어를 하는 것이 하위 레이어.
OSI 7 Layer ?
- 인터넷 Packet 이 End to End 로 전송될 때 필요한 여러 가지 행동?행위?에 대하여 Layer 별로 정의 한 것.
- 교육 및 비용적 측면으로 유용한 모델.
어떻게 다른가?
- 사실 크게 다른 것은 없음. 특히 개발자는 TCP/IP 모델의 상위 레이어만 신경써도 됨.
- OSI 7 Layer 는 TCP/IP 보다 세분화 되어 있기 때문에 비용적 측면이 좋음.
- 둘다 동일한 Protocol 을 사용하기 때문에, 모델만 다를 뿐, 통신에는 아무런 지장 없음.
인프라 형태

- Peer to Peer; 클라이언트들이 각자 데이터를 생성해 다른 클라이언트에게 뿌림.
- Listen Server; 클라이언트가 서버(Host)에 데이터 변조 권한 요청. 서버에서 이를 수용한 후 뿌림. 클라이언트와 빌드가 같음. 서버(Host)가 종료되면 세션 폭파.
- Dedicate Server; 클라이언트가 서버에 데이터 변조 권한 요청. 서버에서 이를 수용 한 후 뿌림. 클라이언트와 빌드가 다름. 서버는 항상 올라가 있음. (많은 비용 발생)
기본 환경 셋팅
- Unity Cloud 연동 필요
- Window -> Multiplayer -> Multiplayer Center
Multiplayer Center

- 만들 게임의 종류 및 세션당 참여 인원에 대한 설정을 받으면,

- 필요한 패키지에 대한 추천을 받을 수 있음.
- 아래 예시는 간단히, NGO 와 Listen Server 형태로 진행.
Multiplayer Play Mode

- 간단히 멀티 플레이를 테스트 할 수 있는 툴을 제공해 준다.
Network Manager & Unity Transport

- Network Manager; 간단히, 멀티 플레이어 환경에 대한 매니저.
- Unity Transport; 서버 혹은 클라이언트 실행에 대한 네트워크적 설정.
동기화
- 멀티 플레이 게임의 가장 큰 특징은 세션내 모든 클라이언트의 상태가 동일해야 한다는 것.
- 보통 동일한 상태를 시켜 주는 것을 동기화라고 하며, NGO 에서는 많은 기능을 통해 이에 대한 도움을 주고 있음.
NetworkObject & NetworkBehaviour
- 네트워크 게임에서 만드는 Object 는 "NetworkObject" 가 되어야 동기화가 가능.
- 싱글 환경에서는 객체를 제어하기 위해
Monobehaviour를 상속받은 Script 를 컴포넌트에 추가 하였음
- 멀티 환경에서는
Monobehaviour를 상속받는 NetworkBehaviour를 상속해야 네트워크 관련된 기능을 사용할 수 있음
NetworkBehaviour를 사용하는 객체는 필수로 Network Object라는 컴포넌트를 사용해야함.
class 상단에 Require 를 추가하면 스크립트 추가시 알아서 Network Object 가 추가되니 자주 사용하면 좋음!
- 객체의 위치 동기화를 도와주는 컴포넌트
Authority 를 통해 위치 데이터를 어디에서 업데이트를 할 것인지 판단해준다.