特效系統優化

2021-09-30 06:28:04 字數 1760 閱讀 7734

這幾天在做特效系統的優化,稍有些心得,分享一下。

首先要討論的是優化層次,然後再說說優化策略。

遊戲這個東西是程式美術策劃共同努力工作的結果,所以優化再更巨集觀的角度來看不只是程式的問題。在具體工作中經常會出現,美術作了乙個特別牛鼻的特效,效果及其絢麗,但是他卻消耗了大量的資源,導致遊戲效能低下。這是很常見的問題,因為美術他不管程式怎麼處理,他只追求效果,而且美術的特點是很感性,對於一些具體技術細節不是那麼靠就,比如說粒子發射量,很多情況下用不著那麼多的粒子就可以達到了效果,美術卻不注意。從這點上來說即便程式什麼都不優化,只要美術製作的時候稍加注意即可。而且在有些情況下適當損失效果而換來的是效能的極大提公升這也是值得的。再說一下策劃,對優化的貢獻。很多情況下只要策劃變換一下思路,同樣可以製作出好玩但是實現容易的遊戲,我就不信某些策劃說非要這樣才好玩的話,殊不知就這麼乙個拍腦袋溝皮想法要花去多少人工,很多情況下程式或者美術一些不能解決的問題或者短期不能解決的問題都可以讓策劃在設計上避免掉,同時也不會損失什麼遊戲性,畢竟實現遊戲性的設計千千萬,幹嗎非要非找最難以實現的那一種。這是各個部門協調配合的優化,這種優化其實是最有效的。程式費勁巴拉的搞乙個月,也許比不過美術稍微調整一下引數,更比不上策劃適當修改一下設計來的好。

接下來就說點實際的優化了,程式上的。粒子系統這塊大致的優化可以從以下幾個方面著手考慮。

1. 看不到的特效是否需要更新。

2. 粒子效果是否需要根據執行時的幀率自動調節。

答案是肯定的,肯定需要在幀率不足的時候引擎也好客戶端也好,自動設定特效顯示級別來彌補效能損失。具體可以這樣實現,對特效系統各個元素增加顯示級別引數,高顯示級別可以顯示地顯示級別,但反之不可以。美術在製作的時候要清楚地設定特效中的元素那些是高顯示級別的那些是低顯示級別。特效模組內有這麼乙個控制素有特效顯示級別的引數進行全域性控制,可以在引擎內部或者客戶端監控幀率或者特效模組的耗時,當過高的時候降低引擎特效顯示級別,反之則調高。

這樣做的好處是所有效果都是美術在編輯器中設定並確認過的。

還有一種不得已的優化辦法,就是自動調低粒子發射量,特效系統的粒子是影響效能的基數,調整這個東西可以最直接的影響效率,但是這確實不得已的辦法。原因很簡單,美術在編機器裡面設定使用100個粒子的效果看起來不錯,而引擎自動把他調低後的效果也許就不再是美術想要的了,而這一切美術有沒有在編輯器裡面確認。不過這個島是可以變相應用於特校級別上。

3. 粒子更新是不是要放在多執行緒。

如果這個特效僅僅是顯示,可以確保設計上的簡潔同時不帶來更多的問題,把特效更新放在多執行緒裡是可以的,要做好特校的啟動和**就行了。但如果特校是和某些邏輯相關的,在設計上也許會很複雜,這就要具體情況具體分析了,我對這種情況的處理是很慎重的,以保證設計簡潔為優先考慮。

4. 如何避免大量粒子重疊時導致的畫素填充效能低下的問題。

特校裡面幾乎所有的麵片都是要scene blend和alpha blend的,當有大量的麵片出現,此時畫素填充率就成為了主要效能瓶頸。這裡提兩個優化思路。第乙個是使用alpha reject引數,這樣可以較早的拒絕掉部分畫素,第二就是使用render target,把特校渲染到乙個1/4 viewport面積下的紋理上在貼回來,這種辦法還有些具體的細節需要仔細考慮。總之就是盡一切可能減少要處理的畫素數。

5. gpu粒子

有不少文章提gpu粒子,總的來說這個是用於大部分特校需求,值得嘗試。需要在設計上考慮的問題是複雜的特校不只是粒子,或者billbord這樣固定形態的東西,如果還可以發射模型,光源或者其它什麼,怎麼在設計上更加合理簡潔,這是需要注意的。

6. 其他通用方法

簡單來說就是通常的優化辦法,什麼盡量一次渲染,盡量少的更改管線狀態等等,這些應該講是必須做到的,總的來說也不是很難做到。

特效系統優化

特效系統優化 這幾天在做特效系統的優化,稍有些心得,分享一下。首先要討論的是優化層次,然後再說說優化策略。遊戲這個東西是程式美術策劃共同努力工作的結果,所以優化再更巨集觀的角度來看不只是程式的問題。在具體工作中經常會出現,美術作了乙個特別牛鼻的特 效,效果及其絢麗,但是他卻消耗了大量的資源,導致遊戲...

LRU優化特效載入及快取

lru是least recently used的縮寫,即最近最少使用,常用於頁面置換演算法,是為虛擬頁式儲存管理服務的。簡單說就是快取最近最常使用的服務或物件。先來個很爛的草圖 但能說明問題 這個是整體的特效載入優化的流程圖。主要就是對池子的操作,快取起最近最常使用的特效。using system ...

特效優化2 效果與效能的博弈

在上一期 特效優化 發現絢麗背後的質樸 中,我們主要針對uwa本地資源檢測中和特效相關的知識點做了講解。這些看似細小的知識點,很容易在大家的開發和學習過程中被疏忽,而長期的問題積累最終都會反映到專案的效能表現上。為此,我們將這些規則列出,並且以乙個個知識點的形式向大家逐一解讀。本條規則面向的核心其實...