客戶端(當前玩家)與服務器對應關係圖:數組
總體上看,UE3的GamePlay框架使用的是MVC架構服務器
① 橙色的Actor對象及橙色箭頭相連的成員變量只會被同步給Owner客戶端架構
Controller:控制器,包括PlayerController和AIController框架
InventoryManager:玩家武器管理器函數
Inventory:玩家武器鏈表spa
② 黃色的Actor對象及黃色箭頭相連的成員變量會被同步給全部的客戶端對象
Actor的WorldInfo變量:指向地圖的Main關卡實例blog
a. 關卡ULevel的Actor數組索引爲0的Actor對象爲當前關卡的WorldInfo實例索引
b. 遊戲世界UWorld中存放着Main關卡和其餘關卡(UWorld* GWorld爲一個root類型的UObject全局變量)遊戲
ULevel* PersistentLevel爲Main關卡
TArray<ULevel*> Levels爲Main關卡和其餘關卡的集合
c. 在UGameEngine::LoadMap函數中載入新地圖時,會釋放上一個地圖的Main關卡和其餘關卡,而後建立新地圖的Main關卡和其餘關卡
d. LevelStreaming只能用於釋放和加載其餘關卡Level,不能釋放Main關卡
e. 在遊戲過程當中Spawn出來的Actor,都會放在Main關卡中,並將其WorldInfo變量指向Main關卡實例
f. 其餘關卡Level中的Actor的WorldInfo變量也是指向Main關卡實例的
Pawn:玩家和載具
UTWeaponAttachment:武器3P
該對象並不沒有走同步機制,服務器經過同步class<UTWeaponAttachment>類型信息,讓各個客戶端獨佔建立UTWeaponAttachment
GameReplicationInfo(GRI):用於保存遊戲實例相關數據
a. 在GameInfo的PreBeginPlay函數中被Spawn出來,並將其設置給WorldInfo.GRI
PlayerReplicationInfo(PRI):用於保存各個玩家實例相關數據
TeamInfo:隊伍信息
③ 遊戲實例(GameInfo)只運行在服務器,配置着當前玩法模式Pawn、Controller、GRI、PRI、HUD等類型信息
客戶端(其餘玩家)與服務器對應關係圖: