[2026.04.16-17] Network in Unity 시작

SmartBear·2026년 4월 17일
post-thumbnail

네트워크 이론

네트워크 엔지니어 출신이니까.. 이론은 복습겸 정리 합니다.

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 가 추가되니 자주 사용하면 좋음!

Network Transform

  • 객체의 위치 동기화를 도와주는 컴포넌트
  • Authority 를 통해 위치 데이터를 어디에서 업데이트를 할 것인지 판단해준다.
profile
Python Dev with Infra -> Game Programmer

0개의 댓글