遊戲設計模式——ECS架構
阿新 • • 發佈:2018-12-17
1.ECS概述
ECS全稱Entity-Component-System(實體-元件-系統),是基於組合優於繼承(將不變的部分使用繼承以方便複用, 將多變的部分用組合來方便拓展)的原則的一種模式,遊戲中的每一個單元(怪物、相機等)都是一個實體,每個實體又是由一個或多個元件構成的,每個元件僅包含該元件需要關注的資料(例如技能元件儲存技能傷害、範圍),而系統則用來處理這些實體的集合,其只存邏輯,不存狀態,類似於一個工具,例如技能系統會根據遍歷到的每一個擁有技能元件的實體,根據狀態執行技能。
2.ECS的結構圖
World:世界控制器,可能包含許多的Context和System
Context:環境、場景,例如戰鬥場景等
Entitas:包含在環境下的所有實體
Entity:實體
Component:元件
Groups:根據某種規則組合起來的實體群組
System:系統,用來放置組合服務
Service:服務,進行具體的邏輯
Utils:工具型
Matcher:匹配器,提供組成群組的具體規則
3.ECS的優勢
(1)容易新增新的複雜的實體型別
新增一個新的實體只需要明確實體上有哪些元件,將元件快速整合起來。
(2)容易定義新的實體資料
需要新的實體資料就可以通過定義一個新的元件來進行儲存
(3)更加的高效率
系統只關心對應的元件資料,而不用關心一個物件上的所有資料,例如技能系統只關心技能,移動系統只關心位移資料,在遍歷的時候,記憶體的命中率比較高,首先可以通過在建立的時候申請一個連續的記憶體空間,同時相對於一整個物件,它的記憶體跨度相對會小很多,打個比方,就是在一排套房裡面找一間又一間的廁所和在一排廁所裡面找下一件廁所。