看板 GameDesign 關於我們 聯絡資訊
現在有兩個方向讓我駐足不已... 目前有物理引擎跟AI引擎 應該是 某生物體內有大腦跟脊椎推動他思考跟動作 還是 某生物是可動而且可思考的生物 一般引擎的實作會是哪一種呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.196.138
KanoLoa:哪種便宜好做用哪種 11/07 13:11
lovesnake:我現在想思考的是哪種模型的藕荷度最小跟可擴充性最大 11/07 13:22
lovesnake:現在還是學生,只想做到最好。 11/07 13:22
cowbaying:這兩種有何差別? 11/07 13:28
cowbaying:AI要動一定要有參數 你的參數哪來的? 11/07 13:29
cjcat2266:完全端看實際遊戲而定吧,沒有唯一解 11/07 13:56
cjcat2266:或者就選一種設計,先試著做出一款遊戲 11/07 13:58
cjcat2266:這是證明設計實不實用的最有效途徑 11/07 13:59
LayerZ:完全不懂XD 這兩種有任何關聯性嗎 11/07 13:59
cjcat2266:兩種差別應該就是 一般game AI v.s. NaturalMotion吧 11/07 14:00
cjcat2266:後者超級難做好的,所以才有NaturalMotion這種專門公司 11/07 14:01
cjcat2266:GTA4的酒醉步履蹣跚AI和人飛出車子的肢體AI就是使用 11/07 14:02
cjcat2266:NaturalMotion做的physics-based AI middleware 11/07 14:02
OTZ... 其實我沒想這麼多,我只是在想是要用Combination的方式還是Inherit的方式把引擎 丟進我的物件裡面而已 OTZ class dog : virtual public wise, virtual public locomotion {}; or class dog { AI_Engine *someAI; Physics_Engine *someMotion; }; 一般做引擎會用哪種方式? 目前傾向於後者。不過要寫很多Adaptor有點麻煩。 ※ 編輯: lovesnake 來自: 140.121.196.138 (11/07 16:34)
Ebergies:絕對不要用第一種 11/07 16:40
Ebergies:嗯... 好吧其實要看你想做啥 (廢話 """) 11/07 16:41
azureblaze:分清楚「是一個」和「有一個」 11/07 16:45
lovesnake:如果本文寫的,是一個跟有一個都是可行的。 11/07 16:47
lovesnake:前者藕荷大,可擴充性低。 11/07 16:47
lovesnake:不過想知道現在市面上的引擎都是用哪種 11/07 16:47
cowbaying:其實我會比較想用第一種方法 用繼承的方式 11/07 17:49
cowbaying:不過還是得看AI的架構怎麼寫才能去判斷要用哪種方法 11/07 17:50
LayerZ:不要用第一種+1 11/07 19:01
azureblaze:前者是OOP黎明期的誤用產物 現在原則上都用composition 11/07 19:14
azureblaze:一些新的語言甚至根本不支援多重繼承 11/07 19:14
cowbaying:了解 11/07 19:18
siriusu:不好意思問一下 那interface呢? 11/07 19:22
cowbaying:介面算是能達到多重繼承的效果 11/07 19:25
cowbaying:如果以效率來說我會使用繼承 畢竟繼承也不是一無是處 11/07 19:26
cowbaying:簡單來說如果不是自寫的東西就別用繼承了 11/07 19:27
LayerZ:應該說,繼承的概念是,同類型物品的延伸定義 11/07 19:52
LayerZ:個體->生物->有智商的生物這樣延續出來,但是全部都是個體 11/07 19:53
LayerZ:狗跟狗的思考行為是不同概念的東西 11/07 19:54
LayerZ:當然,在生物->有智商的生物時,可以加入AI,就是第二種 11/07 19:55
LayerZ:這是我個人對繼承的理解啦 11/07 19:56
cowbaying:現在問題在於AI跟物理引擎有無相同的方法、物件和變數 11/07 20:01
cowbaying:還有相關文件建議的實作方式 11/07 20:02
vamper:作法上很多種.只要基於SOLID設計就行了 11/07 22:14
linotwo:一般來說不會把放在 instance of dog 裡的叫做 engine 11/08 05:51
linotwo:而是把運算整個遊戲裡資料的系統叫做 engine 11/08 05:53
linotwo:好比遊戲裡有 N 個 AI,那麼 engine 要做的是就是根據 11/08 05:55
linotwo:事件或資料,逐一讓每個 AI 行動。 11/08 05:57
Killercat:現在的主流都是少用繼承多用包含 11/08 08:49
lovesnake:謝謝各位的回答~ 11/12 10:13