已經推出了好久了, 貌似也有一些人開始使用, 我是在看守望先鋒的程序設計相關文章的時候看到 ECS 的, 從它的設計邏輯上看, 核心就是 Composition over inheritance (or composite reuse principle) 組合重用, 也就是對特定的數據組合, 使用特定的處理過程來處理, 跟咱們通常的 OOP 有點差異, 它是以數據組合爲對象的.網絡
不少人都把它描述成高效運行的框架, 而我看守望先鋒它也是這樣定義的, 那麼這個框架到底高效在哪裏呢? 從個人主觀來看, 它只不過是換了一種程序設計思路, 就跟咱們寫 UI 邏輯的同窗以前把邏輯啊數據啊網絡啊都寫在 UI 腳本中而後忽然有一天他用了 MVC 的模式把數據和邏輯分開了同樣, 區別只在複用性和維護性上, 並不構成高效的保證.多線程
再看看它的處理數據的過程, 當數據都進行正確的分組以後, 能夠通過處理邏輯一次性地處理批量數據, 這個叫 Batch Processing 的過程就有點渲染管線的味道了, 姑且不說這個批處理能高效多少, 至少在各類須要 Update 計算的邏輯上能物理上限制人爲錯誤致使性能問題, 由於不少同窗直接添加 Update 函數而後寫更新邏輯......框架
來看看它如今提供的 ECS 的可能的擴展, 看出 ECS 大體有三種模式 : 函數
1. Pure ECS性能
2. Hybird ECS動畫
3. ECS on Job線程
真正能提供性能提高的應該就是 Job 系統了, 包含多線程, 內存 layout 之類的提高, 其實按照數量級來看, UI / 動畫 / 粒子特效 這些纔是量級較大而且跟實際開發沒有太大關聯的東西, 咱們真正開發中寫的上層邏輯好比戰鬥, 除掉動畫和特效也就只有人物位移之類的少許控制了, 即便用上 ECS + Job 也應該沒有很明顯的提高, 最近出了一個叫 UI framework for DOTS 的基於 ECS 的 UI 框架系統, 也有些 ECS 的動畫系統, 應該大方向仍是在修改這些上, 明天下載一些例子來看看.設計