天天看點

ET5.0 簡單了解

與伺服器連結方式:KCP,TCP,WebSocket

注意:

ET架構5.0及以下它的設計初衷是每個程序隻運作一個場景,也就是說對于MMO來說,可能存在上百個Map伺服器。

這對于MMO來說是不能接受的,未來我們需要自己實作同一個程序内多個Map的功能。

用戶端包含元件

 配置導出 Excel轉換為json
web資源伺服器
Proto消息生成
連結伺服器配置
一鍵打包
AB包名稱設定

需要修改Assets/Editor/BuildEditor/BuildEditor.cs下的SetPackingTagAndAssetBundle

添加static并在函數上添加MenuItem特性

AstarPath A*尋路
recast recast尋路
ilruntime熱更新 具體資料看https://github.com/Ourpalm/ILRuntime
元件資訊顯示 友善在inspector視窗觀察變量的變化
ReferenceCollector 用于對象綁定,代碼中通過key獲得對應對象
MongoDB 用于對象序列化和反序列化
Protobuf 用戶端與伺服器的消息序列化
ETVoid、ETTask 協程支援 async和await
EventSystem 事件系統,通過它發送事件,同時承擔了所有元件的系統處理,如AwakeSystem,StartSystem等
Log 日志系統
ConfigComponent

配置元件,通過讀取config.unity3d包裡面的配置加載

配置同時用于用戶端和伺服器

TimerComponent 時間等待元件
NetOuterComponent 外網元件,用于建立Session,NetworkComponent連結伺服器
ResourcesComponent

    對AB包的加載和釋放,以及包内資源的擷取

    AssetsBundleLoaderAsync AB包異步加載

    AssetsLoaderAsync 包内資源讀取

UIComponent UGUI元件
MessageDispatcherComponent 消息分發元件
UnityWebRequestAsync 簡陋的http請求
NumericWatcherComponent 分發數值監聽
CoroutineLock

協程鎖,對協程鎖定,例如玩家多次點選了登入按鈕

不應該進行多次登入請求,應鎖定該事件等待處理完成

伺服器包含元件

ConfigComponent

CoroutineLockComponent

PlayerComponent

儲存玩家資訊
ActorMessageSenderComponent 發送普通actor消息,與Gate通訊。這裡可以獲得ActorId,而ActorId是找到對應Map的關鍵資訊:IdGenerater.AppId。
ActorLocationSenderComponent 發送location actor消息

MailboxDispatcherComponent

ActorMessageDispatcherComponent

這兩個元件是處理actor消息使用的
NetInnerComponent 内網消息元件,與Gate伺服器通訊。注意,Map并不與玩家直接通訊,全都由Gate轉發。
NetOuterComponent 外網消息元件
LocationComponent

儲存了所有玩家的位址(Key是玩家的Id,Value是玩家的InstanceId)

如果玩家在切換Map的時候,要把這裡鎖住。

LocationProxyComponent 通路location server的元件

DBComponent

DBProxyComponent

資料庫元件
ConsoleComponent 控制台元件
AppManagerComponent 每隔5秒檢測所有的伺服器是否健在,如果不健在,則重新開機該伺服器
RealmGateAddressComponent 在收到用戶端發來的C2R_LoginHandler消息以後,随機挑選一個Gate(未來可以根據負載挑選),讓其加入。
GateSessionKeyComponent 儲存所有Gate裡的玩家的Session的Key
ActorLocationSenderComponent 向Map内的指定玩家發送消息,如果發送失敗,則向Location伺服器索要新的位址
AMHandler 與用戶端通訊不需要傳回的請求
AMRpcHandler 與用戶端通訊需要傳回的請求
AMActorHandler 内網伺服器間不需要傳回的請求
AMActorRpcHandler 内網伺服器間需要傳回的請求
AMActorLocationHandler  外網伺服器間不需要傳回的請求
AMActorLocationRpcHandler 外網伺服器間需要傳回的請求
熱更新 通過替換DLL熱更
支援repl 在console中輸入repl回車即可進入repl模式

繼續閱讀