[UE Net] Connection Handshaking
Handshaking이란 Nework로 접속하는 두 컴퓨터가 잘 연결되었는지 확인하는 과정을 말한다. 언리얼 엔진의 네크워크 멀티플레이어 접속을 위한 Handshaking 과정을 학습하고 Client와 Server 간 Connection이 맺어지는 과정에 대해 알아보자.
목차
[UE Net] Connection Handshaking
Client와 Server 간 Connection이 맺어지는 과정에 대해 알아보자.
Connection Handshaking
Handshaking이란?
Nework로 접속하는 두 컴퓨터가 잘 연결되었는지 확인하는 과정.
UE Network Multiplayer 접속을 위한 Handshaking 과정
게임의 준비
Connection을 허용하면 게임을 시작할 수 있도록 Client와 Server는 준비 과정을 거침.
- Client: 맵의 로딩
- Server: Client를 대표하는 PlayerController 생성
Connection Handshaking의 확인
관련 소스코드 | 역할 |
DataChannel.h | Server와 Client가 통신하는데 사용하는 패킷들이 정의가 되어 있다. |
UWorld::NotifyControlMessage ( Server ) | 패킷을 처리하는 함수. Server의 경우, UWorld::NotifyControlMessage 사용 |
UPendingNetGame::NotifyControlMessage ( Client ) | 패킷을 처리하는 함수. Client의 경우, UPendingNetGame::NotifyControlMessage 사용 |
패킷의 처리 콜스택 예시
- 패킷과 번치라는 개념을 통해 정보가 전달된다.
알아두면 좋은 UE Network System 구성
관련 소스코드
- NetDriver.h
용도에 따라 패킷을 처리하는 다양한 NetDriver 클래스를 제공함.
- GameNetDriver: 게임 데이터를처리하는데 사용하는 Network Driver
- DemoNetDriver: 게임 리플레이 데이터를처리하는데 사용하는 Network Driver
- BeaconNetDriver: 게임 외 데이터를 처리하는데 사용하는 Network Driver
언리얼 엔진은 게임 데이터를 처리하는 게임넷드라이버로 IpNetDriver를 사용함.
초기 접속에 관련된 데이터 패킷을 ControlChannel을 통해 분석됨.
언리얼 엔진에서 번치(Bunch)를 처리하는데 사용하는 주요 채널
- ControlChannel: Client-Server 간의 Connection을 다룰 때 사용하는 채널
- ActorChannel: Actor Replication 작업을 다룰 때 사용하는 채널
- VoiceChannel: 음성 데이터를 전달할 때 사용
코드로 살펴보는 실행과정
PendingNetGame.cpp
- void UPendingNetGame::SendIntialJoin()
- NMT_Hello
DataChannel.h
- 번치(Bunch) 정보들
World.cpp
- NMT_Hello
PendingNetGame.cpp
- NMT_Challenge
- NMT_Login
- 로그인 시
GameMode.cpp
- PreLogin
PendingNetGame.cpp
- NMT_Welcome
- NMT_Netspeed 패킷을 보냄
World.cpp
- NMT_Netspeed
- Connection의 현재 NetworkSpeed 값이 변경됨.
Client에서 맵이 로딩이 된다.
이 맵이 로딩이 되어서 모드가 완료되면
PendingNetGame.cpp
- SendJoin() 함수가 호출됨.
World.cpp
- NMT_Join
- SpawnPlayActor
LevelActor.cpp
- GameMode를 가져와서 Login() 함수를 통해서 PlayerController를 반환.
- GameMode의 PostLogin() 함수를 호출
'⭐ Unreal Engine > UE 개념정리 - Network' 카테고리의 다른 글
[UE Net] 액터 리플리케이션 빈도와 연관성 Actor Replication Frequency & Relevancy + 언리얼 인사이트 Unreal Insight (0) | 2024.02.10 |
---|---|
[UE Net] 액터 리플리케이션 Actor Replication (1) | 2024.02.10 |
[UE Net] 액터의 역할과 커넥션 핸드셰이킹 Actor Role & Connection Handshaking (0) | 2024.02.09 |
[UE Net] 커넥션과 오너십 Connection & Ownership (0) | 2024.02.09 |
[UE Net] 게임 모드와 로그인 Game Mode & Log In (0) | 2024.02.09 |
댓글
이 글 공유하기
다른 글
-
[UE Net] 액터 리플리케이션 빈도와 연관성 Actor Replication Frequency & Relevancy + 언리얼 인사이트 Unreal Insight
[UE Net] 액터 리플리케이션 빈도와 연관성 Actor Replication Frequency & Relevancy + 언리얼 인사이트 Unreal Insight
2024.02.10 -
[UE Net] 액터 리플리케이션 Actor Replication
[UE Net] 액터 리플리케이션 Actor Replication
2024.02.10 -
[UE Net] 액터의 역할과 커넥션 핸드셰이킹 Actor Role & Connection Handshaking
[UE Net] 액터의 역할과 커넥션 핸드셰이킹 Actor Role & Connection Handshaking
2024.02.09 -
[UE Net] 커넥션과 오너십 Connection & Ownership
[UE Net] 커넥션과 오너십 Connection & Ownership
2024.02.09