好,似乎有很多的這篇文章,您鏈接到圖表之間的相關問題。這些問題的答案是「取決於」。我猜你希望獲得關於CBSE主題的一些指導,而不是單行解答所有問題。與其嘗試回顧基於類似查詢的討論,我會在此發佈一些鏈接,以便讓您更深入地思考這些問題。
首先是ES wiki。這個wiki仍處於起步階段,但它對實體系統進行了很多討論。
接下來,在gamedev stack exchange上進行了一些非常富有成效的討論(也許這個問題也應該移到那裏)。首先看看this question,這是一個很好的起點,因爲它解釋了爲什麼ES設計中沒有明確的趨勢(當答案寫成時)以及我看到它今天仍然如此。然後,Byte56給出了一個absolutely amazing answer,它非常好地解釋了系統組件方法的基礎知識,即使您認爲您已經掌握了它,也值得閱讀。接下來,有一系列由Yannbane提問的有用問題。這些問題更詳細地解決了一些細節問題。這裏有allthreequestions。此外,還有一些關於如何整合input和GameStates的問題。
最後,你應該檢查出已經有很多的注意,如Artemis用Java編寫的一些開源實體系統(似乎是服務器的問題,現在該鏈接,但this article是一個很好的介紹,並有是c#和c++存儲庫可用,所以你可以挖掘到一些代碼)。 AS3中還有ash。
現在,我覺得我必須直接回答你的問題之一:
而且如果賺了CollisionComponent或瑪格組件中,瑪格及MoveComponent必須多溝通,對不對?
從您鏈接到您的圖似乎使用基於系統的方法(類似於artemis)。從我的閱讀中,我認爲這是社區普遍認同的一個領域:在系統方法中,這個想法是集中組件邏輯,以便(除了在Yannabe's second question的回答中提到的幾個簡單方法)組件僅僅是一個數據容器。因此,如果您的組件存儲在實體中,那麼您的系統需要篩選所有實體。需要多個組件的系統應詢問每個實體所需的所有組件以完成其工作。如果它不是找到所有這些組件,系統應該繼續前進。所以根據你迄今爲止的決定,答案是否定的,組件不應該與彼此溝通。
無論如何,祝你好運。