GameDesign 板


LINE

※ 引述《NDark (溺於黑暗)》之銘言: 十年前我寫了關於 Event 事件系統的文章. 十年過去其實我經歷過很多專案,發現了越來越多的反例(Anti-Pattern, 使用了事件系統專案的開發者卻無法駕馭,發現了問題無法除錯解決的情況). 簡單來講,事件系統的目的是把混沌整理為有序. 但在某些情形下也有機會產生更多的陷阱. 專案使用了事件系統, 但沒有配套系統(或是團隊文化)的事件系統仍然會受到執行順序的困擾. (這邊講的配套系統是負責顯示記錄的系統, 能夠即時或事後檢查遊戲過程中發生了甚麼事. 團隊文化指得是團隊中是否有遇到問題能夠細心檢查的成員及工作環境) 在系統及設計還未進入穩定態的(新案) 或是在舊案裝上新系統(尤其是演出,如跑馬燈,彈出介面)特別容易發生這個問題. 以Unity來說.這個問題就是因為各腳本執行是有順序的(即便沒有設定腳本的執行順序) .Update() 都是一個一個腳本依序執行. 那麼同一個畫格送進事件系統也就有了順序.那麼陷阱就來自於 1.有時候我們希望A的執行順序要高於B.而有時候又希望B的順序高於A. 2.事件的結果發動有時候需要時間(尤其是動畫/Coroutine),事件發動下去又繼續 會有順序的問題. 舉例來說: A腳本中總共寫了A1 A2兩個事件. B腳本中總共寫了B1 B2兩個事件. 在某個運作中A1 B1會同一個畫格發動. 另一個運作中A2 B2會同一個畫格發動.(假設A的執行順序快過B) 規格剛開始實作時A1->B1 的順序是對的, 但過了一陣子實作另一個系統時卻又希望 B2 -> A2 這樣的順序.這時候就會出現衝突. 沒有一個配套系統很難發現問題在哪裡. 第二最簡單的修理方式就是把B調整為比A快. 這樣就會反過來讓A1->B1(或更多的類似流程)這條壞掉. 次簡單的方式就是讓A2去等B2.這可以臨時解決問題. 但是要祈禱未來不要再對這個規格做修改. 這個問題的複雜度會隨著 事件數(事件類別的種類及包含產生的結果)x系統數 (通常是專案內被命名為Manager的類別) 而以乘法線性而更複雜.也就是越複雜的專案,這個連鎖效應就越大. 不會感覺到這個問題,最有可能的情形是: 專案已經穩定了,系統不變只是擴充遊戲內容的專案.(通常是續作); 或是專案就不夠大或久到會有這個問題. blog連結: https://ndark.wordpress.com/2021/06/25/%e4%ba%8b%e4%bb%b6%e7%b3%bb%e7%b5%b1%e7%9a%84anti-pattern/ -- "May the Balance be with U"(願平衡與你同在) 遊戲設計教學,討論,分享。歡迎來信。 黑水溝歷史文庫 https://ndark.wordpress.com/ --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.48.101 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/GameDesign/M.1624619586.A.119.html
1F:推 wulouise: 一個腳本只有一個事件會有什麼問題嗎? 06/26 14:07
2F:→ NDark: 不太懂樓上的問題. 意思是把所有事件都分腳本寫? 06/26 15:15
3F:→ NDark: 全分開就屬於不管理的方式. 06/26 15:16
4F:→ NDark: 不管理.就是是事件運作滿天飛. 一樣會有順序的問題. 06/26 15:16
5F:→ NDark: A腳本等B腳本 B腳本等C腳本 然後C腳本發現又要等A腳本. 06/26 15:17
6F:→ NDark: 就死結了. 06/26 15:17
7F:→ NDark: 事件系統的初衷就是 至少有一個統一入口. 06/26 15:17
8F:→ NDark: 然後後續怎麼運作.就要看事件管理系統怎麼設計. 06/26 15:18
9F:→ NDark: 譬如說當甚麼介面顯示的時候,甚麼事件不要觸發,延遲觸發. 06/26 15:18
10F:→ NDark: 因為是單一系統.所以才有辦法接報表(Log)系統. 06/26 15:19
11F:→ NDark: 分腳本的方式Log系統會更難寫. 06/26 15:19
12F:推 wulouise: 啊沒看清楚,我原本以為AB只有event, 其實是有包邏輯 06/26 16:07







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP