###最近遇到了幾個複雜系統的設計,包括:程序員
粒子系統性能優化
技能系統異步
劇情繫統編輯器
AI系統性能
UI系統優化
場景系統命令行
###發現這些複雜系統最終都採用了樹狀結構配置:設計
例如經典的 ogre 火炬之光的粒子系統;協程
rpg遊戲的 技能系統,火炬之光,暗黑破壞神;遊戲
劇情繫統,魔獸爭霸3編輯器中的劇情;
AI行爲樹, 例如 Halo 光暈;
UI樹狀結構;
場景樹,四叉樹,八叉樹,kdtree;
###樹狀結構系統的好處是:
業務邏輯互相之間解耦合;
系統容易擴展和修改;
系統模塊之間互相訪問的方式也是很是規範化;
這樣設計的系統,很是優雅,歡迎你們和我多多交流關於 樹狀結構在遊戲設計中的應用。
###而協程是 很是優雅的用於將異步業務邏輯線性化的機制, 經過結合協程和樹狀結構能夠設計很是優雅的系統。
例如AI行爲樹:
行爲樹有重要的Action 節點用於執行必定的命令行爲,而Action是須要必定時間來執行的,傳統的作法是經過Tick 機制,即每幀率更新,可是 存在嚴重問題是每幀更新會致使 上下文丟失,每次執行都必須從新根據狀態來跳轉代碼;
而協程序好處,即免去寫狀態機的麻煩,由編譯器生成狀態機,而程序員只須要設計,業務流程,以及執行等待便可。
雖然忙等待可能會有性能損失,可是帶來的開發巨大便捷是很是有優點的, 同時即使須要熱點性能優化,只須要手動將 協程改寫爲 狀態機便可。