如何理解遊戲開發中的實體元件系統?

時間 2021-06-03 01:22:54

1樓:Daniel Tan

可以借鑑 ECS 的做法。

以部件定義物體,而非以物體定義部件。以小鳥為例,小鳥之所以是小鳥,那是因為它有物理元件、渲染元件和鳥資訊元件。任何有這三類元件的物體都可稱為小鳥。

在這種思考框架下,儲存和處理共用資訊就是處理元件組合,而不是處理物體。

例如,與其把全部物體找出來再篩選有渲染元件的物體,你可以製造乙個系統處理全部的渲染部件,因為在這種思考框架下「物體」就不存在了。

這種想法還可以配合面向資料程式設計,把遊戲狀態都化為資料庫處理。

2樓:棌棌棌棌棌厷

一般來說會盡量避免兩個元件出現同乙個變數。

如題主所說的phsics元件和render元件同時包含x、y、direction,完全可以抽象出乙個Position元件

在Phsics系統和Render系統操作Position裡的資料。

至於ECS如何實現,可以借鑑GitHub - NatWeiss/EntityFu: A lightweight entity component system (ECS) written in C++.

3樓:abc abc

估計題主說的是使用component 實現的 Entity System 。

因為傳統的基於繼承的Entity 的實現方式有一些缺陷,這裡我記得 《遊戲引擎架構》中有講的很明白,也可以看一下這篇(需要翻牆):http://

joostdevblog.blogspot.com

/2014/07/why-composition-is-often-better-than.html

component也有各種實現方式,我沒有在商業專案中試過component based entity,所以也沒有太多的感受,只能貼點鏈結了:

怎麼理解遊戲開發中的「Data Driven Design」?

拾穗者 近幾年遊戲行業這麼火熱,技術上發展最快的是什麼,引擎。就手遊而言,國內一般2d用Cocos2dx,3D用Unity,當然還有自研引擎,Cocosdx是物件導向的思維,而Unity3d是元件思維,二者差別很大,表現在做遊戲的流程上,Cocos2d更新傳統的軟體開發,Unity3d更能突出設計。...

遊戲開發中,如何使用敏捷方法?

清美一刻 推薦一本書 遊戲專案管理與敏捷方法 第2版 精益敏捷的Scrum和看板,在經過適應性調整之後,在尊重專業的前提下,結合專業的優勢,可以有效幫助遊戲開發走出困境。 肥貓加菲 粗淺的個人理解。首炮打響與否,是看 beta 到全面 release 的時機和彼時的產品質量,無關乎敏捷。內部開發階段...

如何理解哲學中的本原,存在,實體,本體,這四個名詞?

黑熊大善 能力所限,只回答什麼是古希臘時期的 本原 arche 亞里斯多德把自然定義為 運動和變化的本原 arche 什麼是本原 arche 是貫穿於希臘哲學始終的問題。本原 arche 的本義是 太初 它作為最初存在的東西在運動變化過程中始終起作用,包括兩層內容 1.基質 Urstoff 事物的最...