設(shè)置
  • 日夜間
    隨系統(tǒng)
    淺色
    深色
  • 主題色

為了流暢玩游戲,英特爾在背后做了那么多

2021/9/15 14:09:03 來源:IT之家 作者:阿迷 責(zé)編:阿迷

最近筆者肝了 500 多個小時在玩兒《戴森球計劃》,雖然這款游戲依舊在搶先體驗(yàn)階段,但在完成度上實(shí)際還是非常高的,擋不住它真的好玩兒,這樣的“期貨”游戲吊足了玩家的胃口,即便是“期貨”如今也收獲了一大批的玩家。

通過《戴森球計劃》這款現(xiàn)象級的游戲我們看到,開發(fā)期的游戲往往面臨著諸多的困難和挑戰(zhàn),工作室人手不足、游戲中 bug 太多、貼圖鬼畜、一核有難多核圍觀…… 這些問題《戴森球計劃》在初期開發(fā)的時候都有遇到,游戲雖然好玩,但不少玩家也在吐槽“一幀不卡,兩幀流暢,三幀電競”,當(dāng)然,游戲優(yōu)化問題不是一朝一夕能立馬解決的,這需要大量的時間和精力進(jìn)行錯誤定位、算法優(yōu)化、代碼重構(gòu)等操作以此降低游戲整體對資源的損耗,最大化的利用系統(tǒng)資源。

好在《戴森球計劃》團(tuán)隊花了大把的時間已經(jīng)完成了對游戲的初步優(yōu)化,包括多線程支持、代碼重構(gòu)、各種 bug 修復(fù)、新功能的增加,這些優(yōu)化極大的提高了游戲的可玩性。

此前《戴森球計劃》的開發(fā)方柚子貓工作室也解答過這款游戲不單單是多核游戲也是一款 GPU 游戲,隨著處理器和顯卡分工越來越明晰,這類擁有大量的高度自由化素材游戲?qū)?CPU 和 GPU 要求越來越高。

比如在《戴森球計劃》游戲后期有數(shù)萬架運(yùn)輸機(jī)在不同星系之間來回穿梭,數(shù)萬個設(shè)施同時運(yùn)作,還有幾萬乃至幾十萬的太陽帆在恒星周圍環(huán)繞,幾百萬的產(chǎn)物同時生產(chǎn),這些必須全面通過 CPU+GPU 協(xié)同處理進(jìn)一步提升游戲的體驗(yàn)?!洞魃蛴媱潯饭俜揭脖硎?,凡是可以并行計算的那部分計算工作,全部交給了 GPU,剩下的那部分計算量,只要 GPU 能在 16ms 之內(nèi)按時渲染出來,CPU 就絕不會掉鏈子。

相比于一些大的工作室,小的開發(fā)團(tuán)隊不像大型游戲公司有著豐富的工程師團(tuán)隊和專業(yè)的技術(shù)設(shè)備,他們在進(jìn)行游戲開發(fā)的時候更加注重效率,利用現(xiàn)有的工具進(jìn)行高效敏捷開發(fā)也成為了開發(fā)過程中常見的一種方法。

圖片來源于網(wǎng)絡(luò)

畢竟自己花一大把時間去設(shè)計一個游戲引擎,或者寫一個自認(rèn)為高效的算法,并不比直接去調(diào)用現(xiàn)成的開發(fā)引擎和算法更加節(jié)省時間。

說起大團(tuán)隊也有些比較例外的,比如 R 星開發(fā)的《GTA 5》聯(lián)機(jī)版此前就有一個存在了 7 年的史詩級“屎山”代碼,一條需要運(yùn)行 19.8 億次的 if 語句嚴(yán)重影響游戲的加載速度。大團(tuán)隊如果人員迭代非??斓脑?,很多祖?zhèn)鞯拇a可能連注釋都沒有,新來的人不敢進(jìn)行維護(hù)優(yōu)化,老員工不愿意接手,這樣的陳年“屎山”越堆越大,導(dǎo)致整個程序運(yùn)行效率越來越低,畢竟碼農(nóng)眼里,既然它能運(yùn)行起來,就不要管它怎么運(yùn)行的了。

圖片來源于網(wǎng)絡(luò)

不過,玩家扒出這個驚天“屎山”后,對 R 星嚴(yán)重的不滿,《GTA 5》聯(lián)機(jī)版這個祖?zhèn)鳌笆荷健贝a終于在玩家的強(qiáng)烈吐槽下被優(yōu)化了,這其中也進(jìn)行了大量的工作去重構(gòu)代碼。當(dāng)然,R 星這樣的“甩手掌柜”在游戲的開發(fā)過程中還是少的,更多的開發(fā)者都在盡力發(fā)揮軟硬件調(diào)度的效率保證游戲的高效流暢運(yùn)行,在游戲優(yōu)化過程中我們也看到類似《英雄聯(lián)盟》這樣的網(wǎng)游不管是在什么硬件條件下都能進(jìn)行流暢的游玩,這些歸根結(jié)底還是通過工具快速定位問題,并進(jìn)行專門的優(yōu)化和調(diào)試以此適應(yīng)不同硬件場景。

圖片來源于網(wǎng)絡(luò)

其實(shí)在游戲優(yōu)化這件事情上,軟件和硬件都需要共同努力才可以達(dá)到最好的運(yùn)行效果,對于開發(fā)者而言,完全吃透硬件而進(jìn)行優(yōu)化是一件非常難的事情,特別是小團(tuán)隊的游戲開發(fā)商,他們更多的是依托現(xiàn)有的游戲引擎進(jìn)行開發(fā)。

《戴森球計劃》就是一個例子,它基于 Unity 引擎進(jìn)行開發(fā),而很多優(yōu)化引擎方和大型游戲開發(fā)商已經(jīng)和硬件提供方進(jìn)行了深度的合作進(jìn)行聯(lián)合調(diào)優(yōu)。最典型的例子就是英特爾,英特爾目前在處理器的性能表現(xiàn)上已經(jīng)有著非常不錯的表現(xiàn),在此之前,英特爾就早早的成立游戲合作技術(shù)部門,希望游戲整個生態(tài)可以做的更好。

英特爾游戲合作技術(shù)經(jīng)理盧卷彬在今年 ChinaJoy 期間向我們介紹了現(xiàn)階段在游戲優(yōu)化領(lǐng)域英特爾做的一些工作。對于游戲生態(tài)來講,硬件是基礎(chǔ),軟件優(yōu)化則是非常重要的,通過這幾年硬件市場的觀察來看,存儲系統(tǒng)是處理器計算能力的一個瓶頸,這里主要是 L1、L2、L3 緩存以及系統(tǒng)內(nèi)存,CPU 架構(gòu)上提升這些模塊都可以帶來不錯的性能提升,就以 11 代酷睿高性能移動處理器來說,英特爾提升了 L2 和 L3 緩存的大小,以此帶來了更大的數(shù)據(jù)吞吐能力。

前面我們提到,很多小的游戲開發(fā)公司都不會重復(fù)發(fā)明新的工具或者引擎,針對游戲開發(fā)者,“工欲善其事,必先利其器”這一點(diǎn)非常重要,工具是提升開發(fā)效率的關(guān)鍵也是幫助開發(fā)者進(jìn)行錯誤定位、軟件優(yōu)化的重要組成部分。在游戲發(fā)發(fā)過程中,游戲性能是非常復(fù)雜的,特別是一些元素特別多、每個元素都有自己對應(yīng)的動作、每個元素之間都有碰撞,這要求游戲開發(fā)者進(jìn)行高度的性能優(yōu)化,才能保證在絕大部分的硬件設(shè)備上都能流暢的進(jìn)行游戲。

實(shí)際上,這些復(fù)雜的場景首先會有專門的游戲引擎公司進(jìn)行開發(fā),前幾年虛幻引擎宣布引入 Chaos 物理破壞引擎,通過 Chaos 引擎,游戲中的各種元素都可以破壞,破壞出來的粒子和石塊之間也可以互相碰撞,有了這些專業(yè)的游戲引擎,小的游戲工作室也可以快速的利用這些現(xiàn)有的開發(fā)工具進(jìn)行游戲制作。如今虛幻、Unity、Cry Engine 等游戲開發(fā)引擎已經(jīng)覆蓋了 PC 和移動端的游戲制作,這些游戲開發(fā)引擎非常復(fù)雜,每個當(dāng)中都有上百萬條代碼,涵蓋的模塊也非常多,包括資源管理、內(nèi)存管理、角色行為、AI、圖形渲染、聲音、網(wǎng)絡(luò)、物理、UI、特效、動畫等等,極大的方便游戲開發(fā)者進(jìn)行開發(fā)。即便是一些大的游戲開發(fā)公司,他們也會利用現(xiàn)有的游戲引擎進(jìn)行二次開發(fā),大的游戲開發(fā)商以及游戲開發(fā)引擎需要從底層進(jìn)行優(yōu)化,因?yàn)樗麄冎苯用鎸Φ氖怯布?,小的游戲開發(fā)商雖然在游戲引擎基礎(chǔ)上進(jìn)行開發(fā),但代碼的簡潔性和效率等問題同樣也要進(jìn)行優(yōu)化,只要開發(fā)就一定會涉及到優(yōu)化問題。

這里,英特爾在幫助游戲開發(fā)者和游戲引擎開發(fā)商提供了 Intel Vtune Profiler、Intel Graphics Performance Analyzers 等工具實(shí)現(xiàn)快速的問題定位。

Intel Vtune Profiler 是一款業(yè)內(nèi)名氣比較大的分析工具,無論是服務(wù)器還是客戶端,它可以幫助開發(fā)者分析每個 DLL、每個函數(shù)、每條代碼、每個線程,甚至每條匯編語言都可以清楚的進(jìn)行分析。從高層到底層,都可以通過 Vtune Profiler 進(jìn)行全面、直觀的分析。

通過 Vtune Profiler 我們可以了解到游戲的執(zhí)行在哪里出現(xiàn)了問題,每個線程在不同的時間節(jié)點(diǎn)活動是什么樣的,線程之間是否有同步或者競爭關(guān)系,對于開發(fā)者來講,他們通過 Vtune Profiler 就可以對游戲有一個整體的了解,知道哪個模塊是瓶頸、哪個代碼有問題,知道在哪里修改會得到最好的優(yōu)化,開發(fā)者和引擎廠商有的放矢,這樣才能更高效的進(jìn)行產(chǎn)品提升。

我們看到 Vtune Profiler 為游戲開發(fā)者和引擎廠商提供了翔實(shí)的性能分析信息,以上這些都是基于處理器和存儲體系,針對 GPU 調(diào)優(yōu),英特爾還推出了 Graphics Performance Analyzers 工具,預(yù)計明年英特爾的 DG2 顯卡上市后,估計也會增加對自家獨(dú)顯的支持。

這一工具通過高度可視化的 UI 幫助開發(fā)者從高層到底層定位每一幀,查看每一幀實(shí)時渲染的參數(shù),通過分析每一幀的參數(shù)信息,以此定向的進(jìn)行優(yōu)化。當(dāng)然,以上工具只是幫助開發(fā)者快速定位問題,還有一些游戲開發(fā)的初期,英特爾的技術(shù)工程師團(tuán)隊也會加入其中,另外在新的硬件平臺發(fā)布的時候,英特爾也會為一些游戲開發(fā)者提供測試版的機(jī)器以便他們可以快速支持新設(shè)備。

通過工具的快速定位問題,接下來就是進(jìn)行落實(shí)到具體優(yōu)化上。這里通常有四種辦法進(jìn)行優(yōu)化。第一種方法就是修正明顯的問題代碼,由于游戲開發(fā)涉及的代碼量比較龐大,并且也非常復(fù)雜,特別是一個團(tuán)隊既有程序開發(fā)又有美工,這時候二者可能不會互相考慮,因此修正問題代碼就可以很好的解決這些問題。

其次就是并行優(yōu)化,目前不少的處理器都是多核多線程的設(shè)計,但“一核有難,多核圍觀”這樣的情況非常常見,明明可以多個車道一起跑,但由于優(yōu)化的問題導(dǎo)致線程都是在擠一個車道。

就拿《戴森球計劃》來說,這款游戲在初期對多線程的優(yōu)化支持并不好,很多邏輯計算全都擠在一兩個線程中,在優(yōu)化后,游戲中的部分資源由 CPU 處理轉(zhuǎn)到 GPU 處理,CPU 所處理的內(nèi)容也都通過多線程方式進(jìn)行高效處理,保證硬件時刻都在高效的處理數(shù)據(jù),這就是并行計算的好處。當(dāng)然,《戴森球計劃》使用的 Unity 引擎對多線程支持本身就很好,Unity 引擎支持 ECS 和 Job System,可以快速的利用分配多個線程以此提高執(zhí)行的效率。另外,指令集并行也是重要的優(yōu)化手段,這里主要還是英特爾和引擎開發(fā)商之間的配合,以虛幻引擎為例,在虛幻 4 和虛幻 5 中,虛幻引擎通過修改算法代碼使得諸如 Chaos 這樣的物理破壞引擎可以實(shí)現(xiàn)指令集并行,開發(fā)者通過調(diào)用這些工具進(jìn)行簡單的設(shè)置就可以在高效性能的基礎(chǔ)上實(shí)現(xiàn)更加豐富的游戲畫面展現(xiàn)。

第三點(diǎn)優(yōu)化方法就是算法優(yōu)化,算法這個問題要具體情況具體分析,不同的游戲所遇到的瓶頸時不同的,利用更好的數(shù)據(jù)算法或是數(shù)據(jù)結(jié)構(gòu)進(jìn)行針對性的調(diào)整這些需要游戲開發(fā)者進(jìn)與英特爾這類硬件廠商深入去探討。最后一點(diǎn)優(yōu)化方法則是從底層架構(gòu)進(jìn)行優(yōu)化,這一點(diǎn)是英特爾這類硬件廠商和開發(fā)者共同來完成,游戲開發(fā)者前面的工作如果都做好了但仍然覺得性能不夠好,他們有能力和余力可以進(jìn)行底層架構(gòu)的優(yōu)化,英特爾的工程師也會提供相關(guān)建議給他們,讓他們自己評估這對 CPU 代碼架構(gòu)改變會有多大,是否影響維護(hù)針對這些問題由開發(fā)者做取舍。

在過去兩三年中,英特爾和一些我們熟知的游戲都進(jìn)行了深入的技術(shù)合作,比如《自走棋》、《逆水寒》、《仙俠情緣 3》、《新倩女幽魂》、《天涯明月刀》、《PUBG》等,通過游戲的優(yōu)化,這些游戲能夠更大范圍的覆蓋各種類型的硬件設(shè)備,以此降低玩家的硬件成本,帶來更好的游戲體驗(yàn)。就拿《英雄聯(lián)盟》這類主流網(wǎng)游來講,現(xiàn)在無論是獨(dú)顯還是核顯都可以進(jìn)行實(shí)時暢玩,降低了游戲的硬件門檻,這其中優(yōu)化帶來的性能提升非常的關(guān)鍵。英特爾也表示,也將通過與開發(fā)者和游戲引擎開發(fā)商進(jìn)一步深入合作,不論是先有的硬件產(chǎn)品還是未來即將發(fā)布的新架構(gòu)處理器產(chǎn)品,英特爾都將持續(xù)支持。

在出色的游戲引擎和諸如英特爾這樣的硬件提供商的扶持下,現(xiàn)在我們國產(chǎn)游戲開發(fā)者開發(fā)新游戲的門檻越來越低,我們樂見類似《戴森球計劃》這樣優(yōu)秀的國產(chǎn)獨(dú)立游戲能越來越度多的在游戲市場上有著更多的話語權(quán),隨著更好的工具的出現(xiàn),國產(chǎn)獨(dú)立游戲也有著更加高效的開發(fā)環(huán)境,讓更好的游戲概念加速落地以呈現(xiàn)在玩家面前。

廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。

相關(guān)文章

關(guān)鍵詞:英特爾,游戲開發(fā),代碼優(yōu)化

軟媒旗下網(wǎng)站: IT之家 最會買 - 返利返現(xiàn)優(yōu)惠券 iPhone之家 Win7之家 Win10之家 Win11之家

軟媒旗下軟件: 軟媒手機(jī)APP應(yīng)用 魔方 最會買 要知