컴퓨터 네트워킹이란 무엇인가?
기기가 물리적으로 연결되면, 안전하게 통신하기 위해 '계약'을 체결해야 한다. 계약을 체결하지 않으면 데이터가 다른 사람에게 잘못 전송돼 중요한 정보가 유출될 위험이 있기 때문이다.
계약이 체결되면 각 기기는 발신자와 수신자를 식벼하는 '디지털 봉투(degital envelope)를 사용해 다른 기기로 데이터를 전송할 수 있다. 이렇게 하면 지정된 수신자만 데이터를 받을 수 있다.
네트워크를 이용한 데이터 전송은 상당히 복잡한데, 특히 대용량 파일의 처리는 더 복잡하다. 따라서 발신자는 데이터를 작은 조각으로 '분할'하고, 분할된 데이터가 목적지에 도착하면 수신자는 재패키징해 사용할 준비를 한다.
하지만 마지막으로 정보 손실이라는 숙제가 남는다. 기술의 발전에도 불구하고 불완전한 세상에서 데이터가 손실될 가능성은 여전히 남아 있다. 따라서 데이터 전송 중에 오류나 손실이 발생할 수 있으므로 데이터의 보안과 손실 방지를 위한 조치가 매우 중요하다.
네트워크 프로토콜 소개
2개 이상의 컴퓨터 간 통신을 관리하려면, 신뢰성을 보장하기 위한 보안 조치뿐만 아니라 데이터 송수신 방법을 결정할 몇 가지 규칙도 필요하다. 이러한 규칙을 프로토콜(protocol)이라고 한다.
패킷 교환
패킷 교환(packet switching) 이란 데이터를 작은 조각(또는 패킷)의 형태로 네트워크에 전송하는 방법을 말한다. 이 과정에는 데이터를 작은 세그먼트로 나누고 패킷의 내용, 출발지 및 목적지의 정보를 추가하는 것까지 포함된다.
이러한 추가 정보를 헤더(header)라고 하며 일반적으로 각 패킷의 앞에 배치된다. 또한 패킷의 끝에 푸터(footer)라는 추가 정보가 포함될 때도 있다.
그다음, 이러한 패킷들은 네트워크로 전송되고 목적지에 재조립된다. 이 과정에서 중간 노드가 패킷을 처리한다. 이 중간 노드는 들어오는 데이터를 저장해 다음 노드에 보내는데, 이때 최종 수신자와 더 가까운 노드로 전달한다.
데이터가 네트워크를 통해 패키징되고 전달되는 방식을 규정하는 프로토콜의 집합을 인터넷 프로토콜 스위트(Internet Protocol suite) 또는 TCP/IP 스위트(TCP/IP suite)라고 한다.
TCP/IP 스위트
TCP/IP 스위트는 다음과 같은 서로 다른 논리적 수준 또는 계층이 쌓여 구성된다.
- 응용 계층(Application Layer)
- 전송 계층(Transport Layer)
- 인터넷 계층(Internet Layer)
- 데이터 링크 계층(Data Link Layer)
TCP/IP 스위트의 계층과 물리 계층을 보여주며, 가장 일반적으로 사용되는 프로토콜 중 일부를 표시했다.
네트워크 문제 이해
물리적 매체를 통해 수많은 데이터가 이동하다 보면 심각한 문제가 발생할 위험이 높다. 따라서 이러한 잠재적인 문제를 파악하고 최선의 방법으로 예방하거나 영향을 최소화하는 것이 중요하다.
- 보안: 적절한 보안 프로토콜이 없다면, 누군가가 악의적으로 민감한 정보에 접근할 수 있다.
- 패킷 손실: 한 기기에서 다른 기기로 전송된 데이터 패킷이 손실되거나 손상됐을 때 발생하며, 모든 네트워크에 심각한 장애를 일으킬 수 있는 중요한 문제다.
- 지연 시간: 컴푸터 네트워킹에서 지연 시간은 데이터 패킷이 지정된 한 지점에서 목적지까지 이동하는데 걸리는 시간
네트워크 모드와 서버 유형
- 클라이언트(Client): 이 모드에서는 컴푸터가 네트워크 멀리플레이어 세션에서 서버에 연결하는 클라이언트 역할을 한다.
- 독립형(Standalone): 이 모드는 네트워크에 연결되지 않은 게임에만 사용되며, 원격 클라이언트의 연결을 허용하지 않는다.
- 전용 서버(Dedicated Server): 이 모드에서는 컴푸터가 네트워크 멀티플레이어 세션을 호스팅하는 서버로 진행되며 원격 클라이언트의 연결을 허용한다. 전용 서버로서 모든 것이 지속적이고 안전한 관리를 위해 최적화돼 있으므로 그래픽, 오디오 또는 입력돠 같은 플레이어 중심 기능은 무시된다.
- 리슨 서버(Listen Server): 이모드에서는 컴퓨터가 원격 클라이언트뿐만 아니라 로컬 플레이어도 허용하는 서버로 실행된다. 즉, 일부 성능을 포기하는 대신, 컴퓨터가 서버와 클라이언트 역할을 모두 하게 된다. 이 모드는 클라이언트와 전용 서버 모드를 조합한 것으로 생각할 수 있으며, 네트워크를 호스팅하는 동시에 클라이언트로서 게임에 참여할 수 있다.
복제 시스템
언리얼 엔진에서 서버와 클라이언트 간의 게임 상태 정보를 동기화하는 과정을 복제(replication)라고 한다. 복제 시스템은 고수준의 추상화와 저수준의 사용자 정의가 가능하므로, 동시에 여러 사용자를 대상으로 하는 언리얼 엔진 프로젝트를 만들 때 발생할 수 있는 모든 시나리오를 더 쉽게 관리할 수 있다.
엑터에 복제가 활성화돼 있으면, 다른 컴푸터에서 실행 중인 게임의 모든 인스턴스가 동기화된다. 반면에 복제가 비활성화돼 있으면, 액터가 스폰된 컴퓨터에서만 기능을 업데이트 한다.
멀티플레이어 게임 개발 중에 일반적으로 복제할 가능성이 가장 높은 요소는 생성/파괴, 이동, 변수 컴포넌트다.
그러나 스켈레탈 메시, 스태택 메시, 머티리얼, 파티클 시스템, 사운드 이미터와 같이 클라이언트에서 별도로 실행되는 요소들은 절대로 복제하면 안된다. 일반적으로 이러한 요소들은 순전히 시각적 요소이기 때문에 서버에서 알 필요가 없다.
네트워크 역할
권한이 없는 원격 기기에 위치한 동일한 액터의 사본은 원격 프록시(remote proxy)로 정의도며, 권한이 있는 기기에서 복제된 모든 정보를 수신한다.
언리얼 엔진에서 권한은 일반적으로 서버에 있으며, 정보는 일반적으로 서버에서 클라이언트로 전달된다. 이 모델은 서버 권한(server-authoritative)모델로 알려져 있다.
폰과 플레이어 컨트롤러
언리얼 엔진에서 플레이어 컨트롤러(PlayerController)는 폰(Pawn)또는 캐릭터(Character)를 소유할 수 있다. 이는 멀티플레이어 게임에서도 마찬가지이며, 각 연결된 플레이어마다 플레이어 컨트롤러가 생성된다.
연관성과 우선순위
멀티플레이어 게임에서 엑터의 복제 여부를 판단할 때는 연관성(relevance)을 고려해야 한다. 연관성이 없다고 판단된 액터는 복제 중에 제외된다.
대역폭이 제한되면, 데이터를 복제할 때 가장 중요한 액터가 먼저 선택된다. 각 액터에는 복제 순서를 결덩하는 데 사용하는 우선순위(priority)값이 할당돼 있다.
원격 프로시저 호출
멀티플레이어 세션 중에 함수는 원격 프로시저 호출(RPC, Remote Procedure Call)을 사용해 복제될 수 있다. RPC는 네트워크에 연결된 모든 컴퓨터에서 후출될 수 있지만, 구현은 네트워크 세션의 일부인 특정 컴퓨터에서 이뤄진다.
'Unreal > 언리얼 엔진 5로 개발하는 멀티플레이어 게임(Book)' 카테고리의 다른 글
[Unreal] 프로젝트에 빠르게 추가합니다(Quickly add to the project) (0) | 2025.03.18 |
---|---|
[Unreal] Replication, Replicates (0) | 2025.03.18 |
[Unreal] 3D Object Collision 설정 (0) | 2025.03.18 |
[Unreal] Bake Transform (0) | 2025.03.18 |
[Unreal] 퀵셀 메가스캔 (0) | 2025.03.18 |