1. 程式人生 > >UE4 client連線server

UE4 client連線server

本文將根據下圖逐條對應原始碼(注:此圖從網路獲取,感謝該作者):


0. 在進行第1步之前,client先執行到



在這裡例項化UPendingNetGame,並呼叫InitNetDriver(),從而進入到圖中的第1步。


1. client方面 UPendingNetGame::InitNetDriver()呼叫UPendingNetGame::SendInitialJoin()



2. server方面 UWorld::NotifyControlMessage會收到ControlMessage並相應處理


若一切順利,則呼叫UWorld::SendChallengeControlMessage(UNetConnection* Connection)

:



3. client方面 UPendingNetGame::NotifyControlMessage會收到ControlMessage並相應處理



4. server方面 先執行GameMode->PreLogin檢查


再呼叫UWorld::WelcomePlayer(UNetConnection* Connection):



5. client方面 


同時UEngine::TickWorldTravel(FWorldContext& Context, float DeltaSeconds)檢測到客戶端已連線成功,就會嘗試LoadMap:


地圖載入完成後進而呼叫UPendingNetGame::SendJoin():


至此 UPendingNetGame使命完成,因為客戶端已經生成新的UWrold


6. server方面 先生成APlayerController,進而在GameMode->PostLogin裡生成APawn,同步給客戶端: