Company
교육 철학

Network System (네트워크 시스템)

Network System (네트워크 시스템)

개요

게임 프레임워크의 네트워크 시스템은 게임 내 네트워크 통신을 처리하기 위한 포괄적인 솔루션을 제공합니다.
이를 통해 여러 네트워크 채널을 생성하고 관리하며, 다양한 서버에 연결하고, 커스터마이징 가능한 패킷 핸들러를 이용해 데이터를 송수신할 수 있습니다.
이 문서에서는 네트워크 시스템의 아키텍처, 구성 요소, 사용 패턴을 다룹니다.
참고: HTTP를 통한 리소스 다운로드는 [다운로드 시스템(Download System)]을 참조하세요.

네트워크 시스템 아키텍처 (Network System Architecture)

네트워크 시스템은 게임 프레임워크 전반에서 사용되는 컴포넌트-헬퍼 패턴을 따릅니다.
NetworkComponent는 Unity 레벨에서 동작하는 컴포넌트이며, 프레임워크 핵심 모듈인 INetworkManager와 통합됩니다.

핵심 구성 요소 (Core Components)

NetworkComponent

NetworkComponent는 네트워크 기능에 접근할 수 있는 주요 Unity 컴포넌트입니다.
이 컴포넌트는 INetworkManager를 초기화하고, 네트워크 이벤트를 EventComponent로 전달합니다.
주요 역할:
네트워크 채널 생성 및 관리
네트워크 이벤트를 EventComponent에 전달
Unity 친화적인 네트워크 인터페이스 제공

네트워크 채널 (Network Channels)

네트워크 채널은 네트워크 연결 및 통신을 처리하는 핵심 엔티티입니다.
각 채널은 특정 서버와의 연결을 나타내며, 자체적인 패킷 핸들러프로토콜을 설정할 수 있습니다.

채널 관리 (Channel Management)

네트워크 시스템은 여러 네트워크 채널을 생성할 수 있으며, 각각 독립적으로 설정할 수 있습니다.
이를 통해 동시에 서로 다른 서버(예: 게임 서버, 채팅 서버, 인증 서버 등)에 연결할 수 있습니다.
메서드
설명
CreateNetworkChannel
지정된 이름, 서비스 타입, 헬퍼로 새로운 네트워크 채널 생성
DestroyNetworkChannel
지정된 이름의 네트워크 채널 제거
HasNetworkChannel
특정 이름의 네트워크 채널 존재 여부 확인
GetNetworkChannel
특정 이름의 네트워크 채널 가져오기
GetAllNetworkChannels
모든 네트워크 채널 가져오기

서비스 타입 (Service Types)

네트워크 채널을 생성할 때는 서비스 타입을 지정해야 하며, 이는 사용되는 네트워크 프로토콜을 결정합니다.
서비스 타입
설명
ServiceType.Tcp
신뢰성 있고 순서가 보장되는 TCP 전송 사용
ServiceType.TcpWithSyncReceive
동기적 수신을 포함한 TCP 전송 사용

네트워크 이벤트 (Network Events)

네트워크 시스템은 네트워크 관련 이벤트 발생 시 이를 EventComponent로 전달하여 게임 이벤트 시스템과 통합합니다.
이벤트
설명
NetworkConnected
연결이 성립될 때 발생
NetworkClosed
연결이 종료될 때 발생
NetworkMissHeartBeat
하트비트 누락 시 발생
NetworkError
네트워크 오류 발생 시 발생
NetworkCustomError
커스텀 네트워크 오류 발생 시 발생

네트워크 채널 헬퍼 (Network Channel Helper)

네트워크 시스템은 헬퍼 패턴을 사용하여 패킷 처리 방식을 커스터마이징할 수 있습니다.
네트워크 채널 생성 시 INetworkChannelHelper 구현체를 제공해야 합니다.
INetworkChannelHelper의 주요 역할:
패킷 핸들러 등록
패킷 직렬화 및 역직렬화
프로토콜별 세부 처리

디버깅 및 모니터링 (Debugging and Monitoring)

NetworkComponentInspector

네트워크 시스템은 런타임 중 네트워크 채널을 모니터링할 수 있는 커스텀 인스펙터를 제공합니다.
표시 정보:
네트워크 채널 개수
각 채널의 연결 상태
서비스 타입 및 주소 패밀리
로컬 및 원격 주소
패킷 통계 (송신/수신)
하트비트 정보

사용 예제 (Usage Example)

일반적인 네트워크 시스템 사용 절차는 다음과 같습니다:
1.
INetworkChannelHelper를 구현한 네트워크 채널 헬퍼 생성
2.
GameEntry에서 NetworkComponent 가져오기
3.
헬퍼를 사용하여 네트워크 채널 생성
4.
서버에 연결
5.
이벤트 등록
6.
패킷 송수신 처리

하트비트 메커니즘 (Heartbeat Mechanism)

네트워크 시스템에는 연결 끊김을 감지하기 위한 내장 하트비트 메커니즘이 있습니다.
시스템은 설정된 간격으로 자동으로 하트비트 패킷을 보내며, 응답이 없으면 NetworkMissHeartBeat 이벤트를 발생시킵니다.
INetworkChannel이 제공하는 하트비트 관련 속성:
HeartBeatInterval : 하트비트 패킷 전송 간격
HeartBeatElapseSeconds : 마지막 하트비트 전송 이후 경과 시간
MissHeartBeatCount : 연속으로 누락된 하트비트 개수

결론 (Conclusion)

네트워크 시스템은 게임 내 네트워크 통신을 처리하기 위한 유연하고 강력한 솔루션을 제공합니다.
여러 네트워크 채널 지원
커스터마이징 가능한 패킷 처리
다양한 네트워크 요구사항 및 프로토콜 대응
또한 이벤트 시스템과의 통합을 통해, 네트워크 이벤트도 게임 내 다른 이벤트들과 일관된 방식으로 처리할 수 있습니다.