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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

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

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