UE4 client連線server
阿新 • • 發佈:2018-11-13
本文將根據下圖逐條對應原始碼(注:此圖從網路獲取,感謝該作者):
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,同步給客戶端: