2011-01-05 45 views
5

我最近學會了實體編程的基本概念(最粗略的定義),並想了解更多。我得到的概念幾乎只是一個大規模的抽象。這是正確的嗎?實體編程教程?

+0

TekPub ......... – 2011-01-05 23:36:55

+0

隨意編輯回來,但我刪除了C++,因爲問題沒有提及它(並且有5個標籤限制),並添加了遊戲開發,因爲你在你的評論中提到了託尼霍克 – 2011-01-16 08:41:44

+0

這是可以接受的,謝謝你的考慮。至於託尼霍克方面,我更接近我新使用的實體。這實際上是我讀過的一篇文章,其中一位領導開發人員讓我如此好奇。 – AedonEtLIRA 2011-01-17 16:00:29

回答

2

Entity只是場景圖形/「你的世界」上對象的基本抽象。而已。

每個遊戲引擎以不同的方式定義和使用實體。一些遊戲引擎可能會將世界座標或公共屬性附加到實體,其他遊戲引擎則可能不會由於每場比賽都有所不同,所以關於它可以說不多。

如果您還沒有閱讀過這些內容,那麼閱讀關於編程抽象的更多內容可能會有所幫助。多態性,抽象基類,Liskov替換原則(LSP)或Code Complete書可能是很好的事情。或者,深入挖掘並瞭解更多關於特定遊戲引擎的知識,並使用SDK爲其開發某些內容(例如,UDK看起來非常酷)可能是一個好主意。

+0

非常感謝,我一直在尋找,我不得不看看這些書。那真的就是這樣,只是一大堆抽象的「物理」物體?我的意思是指任何在世界上佔據空間的東西。它真的只是抽象類的一種奇特方式嗎?例如:class c擴展了實體。 c有你需要的所有東西,但是你用一個持有指向類c的id指針的實體來表示它? – AedonEtLIRA 2011-01-17 16:04:34

+1

@AedonEtLIRA:是的,只是一個抽象。有些遊戲也有非物理實體。與任何抽象一樣,基本抽象中的特徵越多,遊戲引擎的更多部分就能夠使用它。但是,功能太多,並且可能會阻止某些部分使用它。例如,如果添加世界座標,則不能有非物理實體(可能用於AI觸發器,全局狀態,事件腳本等)。但是也許非物理實體沒有意義,或者遊戲架構有更好的方式來處理它們。所有遊戲特定的東西。 – 2011-01-17 21:57:54

+1

@AedonEtLIRA:我可以看看我是否可以爲你找到一個教程,但它基本上只是一個大的列表(或用C++,也許是std :: vector ),你可以循環並調用虛擬方法,或者獲取/設置成員。例如,可能會有一個'Update'方法,它可以讓它執行物理或執行遊戲邏輯。對於引擎的不同部分,這些實體可能有一堆其他附加類,或者存在多個列表中。 – 2011-01-17 22:00:34

3

從我可以告訴,它似乎並不是一個非常知名的方法。我能找到的唯一信息似乎支持了我的想法 - 「實體」編程意味着有多個對象可以在數據結構(例如遊戲場景圖)中互換使用。另外,實體應該可以用數據來定義,這意味着一個實體可以從XML文件構建,或者同樣重要的,寫出到XML文件並從中重新加載。據我所知,Quake在當天使用術語「實體」來指代非靜態對象(即除構成地形的BSP樹以外的任何東西)。諸如燈,門等的東西