研發(fā)效能 | DevOps如何改變游戲公司工作方式?

如果你是游戲開發(fā)者,那么在過去幾年里,你可能會覺得有人給了你一把雙刃劍。
整個行業(yè)不斷蓬勃發(fā)展,但玩家的預(yù)期值也越來越高。玩家們總是希望游戲體驗?zāi)軌蚋?、更真實、更具?chuàng)造性。此外,他們還希望能夠定期推出新的游戲和更新。
基于這種文化背景建立起來的行業(yè),總是需要不斷處理各種難題,這就是游戲開發(fā)人員的災(zāi)難源頭,或者說,至少是他們產(chǎn)生職業(yè)倦怠的主要原因。
部分游戲公司已經(jīng)積極采取了許多措施,希望能夠消除職業(yè)倦怠。以拳頭游戲公司為例,這家公司會在一段繁忙的工作周期之后,為所有員工放一個星期的假,讓他們休息、放松。
一周的假期雖然不錯,但這只是開始。
如果既希望按預(yù)算如期交付更優(yōu)質(zhì)的產(chǎn)品,同時又計劃消除職業(yè)倦怠,做好員工關(guān)懷工作,那么游戲行業(yè)必須制定長遠(yuǎn)的解決方案。
這就是DevOps受青睞的原因。
游戲開發(fā)過程中,DevOps是否是解決開發(fā)人員職業(yè)倦怠的良藥?
雖然有時游戲開發(fā)過于復(fù)雜,無法引入DevOps,但從很多方面來看,它都是游戲開發(fā)系統(tǒng)和流程的完美選擇。
DevOps幫助你專注于處理重要的事務(wù)。在游戲開發(fā)過程中,DevOps的一切宗旨就是減少浪費,盡可能提高自動化水平,同時吸取過去的經(jīng)驗教訓(xùn)積極調(diào)整工作進程。剔除所有不必要的事物,使你的團隊可以專注于構(gòu)建更優(yōu)質(zhì)的游戲。
圍繞迭代開發(fā)構(gòu)建。DevOps的核心是持續(xù)交付和持續(xù)學(xué)習(xí)。你不斷地構(gòu)建軟件,發(fā)布軟件,收集反饋意見。然后又重新開始——只有到了這個時候,你才能根據(jù)各種錯誤、客戶反饋或投訴以及上次開發(fā)過程中影響開發(fā)流程的各種問題,調(diào)整你所采用的方法。對游戲開發(fā)來說,整個流程非常完美。每發(fā)布一個補丁,投放一個新的功能,或推出新的升級,游戲就會變得更快、更有效率。就像是職業(yè)生涯中的New Game Plus(新游戲增強版)。
易于監(jiān)測工作業(yè)績。沒人喜歡倉促地推出產(chǎn)品。游戲公司需要尋找更好的方法,識別職業(yè)倦怠跡象,同時在開發(fā)初期確定游戲中潛在的問題。有了DevOps,你可以在開發(fā)過程中記錄和監(jiān)測盡可能多的信息,特別是CPU負(fù)載RAM分配、網(wǎng)絡(luò)流量統(tǒng)計和內(nèi)存使用率等信息。這樣可以減少各種意外,同時還能根據(jù)游戲公司和DevOps的指標(biāo)體系,實時地了解業(yè)績表現(xiàn)。
彈性伸縮空間大。玩家最無法接受的游戲缺點就是延遲。如果云空間使用率可以自動調(diào)整,那么當(dāng)大量用戶同時訪問服務(wù)器時,你也能夠輕松應(yīng)對,避免因配置了過多云儲存空間,導(dǎo)致在空閑時間內(nèi)產(chǎn)生大量浪費。
零停機時間。無需多言。當(dāng)你部署了多個環(huán)境,并在不影響玩家的前提下更新游戲時,你可以讓玩家們自行決定何時安裝更新并重啟游戲。另外,即便更新周期很緊,你也可以減輕團隊的壓力;不需要停機,你可以在更新或補丁準(zhǔn)備就緒后再發(fā)布。
更安全的工作方式。正是出于這樣的原因,寶可夢公司在發(fā)布《精靈寶可夢Go》游戲時,開始更加依賴DevOps。這家公司手握數(shù)百萬兒童的數(shù)據(jù),必須在保證數(shù)據(jù)安全的同時,擴展或縮減其基礎(chǔ)架構(gòu)。如果沒有強大、可靠的DevOps開發(fā)技術(shù)以及支持DevOps的云基礎(chǔ)架構(gòu),《精靈寶可夢Go》絕對沒法在保障客戶數(shù)據(jù)安全的前提下,增長得如此之快。
持續(xù)集成 (CI) 讓大型團隊和項目之間的溝通更順暢。當(dāng)你一次性集成多個小塊代碼時,在代碼塊存入代碼庫時就立即測試新代碼、篩選出潛在問題,工作會變得容易得多。團隊中的任何成員都可以進入CI流程的任何階段來檢查進度情況,而不必定期梳理檢查大量數(shù)據(jù)。
游戲開發(fā)過程中DevOps的五大強勁趨勢
那么,在游戲開發(fā)過程中,你需要從哪里開始使用DevOps呢?一般在這種情況下,隨大流不會出錯,而且許多DevOps趨勢已經(jīng)被業(yè)內(nèi)游戲公司所采用。
云游戲開發(fā)
玩家希望游戲速度越來越快,細(xì)節(jié)越來越明確,沉浸式體驗越來越好,但是每次更新過后,游戲都會越來越昂貴,玩家們必須配置更好的硬件,他們要承擔(dān)的成本壓力也越來越大。要滿足玩家們的需求,游戲就必須支持普通的游戲機,不然就會錯失大量潛在客戶。
將游戲處理從玩家的硬件端轉(zhuǎn)移到服務(wù)器端,可以打破這樣的僵局,為游戲留出增長空間。事實上,一些游戲公司已經(jīng)開始使用云計算,將游戲開發(fā)和游戲玩法抬升到一個新的高度。
以育碧游戲為例,作為《刺客信條》系列游戲的開發(fā)者,這家公司一直以其深度、復(fù)雜的虛擬世界而聞名,但是現(xiàn)在,這家公司已經(jīng)開始使用云計算,邁向更遠(yuǎn)的道路。最新的《刺客信條》系列游戲不僅僅為玩家?guī)沓两降臍v史體驗,還利用云計算的力量,促進人工智能驅(qū)動的游戲環(huán)境不斷演變和發(fā)展。
持續(xù)交付和迭代顯然就是DevOps的核心,而DevOps方法可以讓云部署變得更容易。通過測量、持續(xù)學(xué)習(xí)和自動化等DevOps實踐,你可以避免許多問題,例如網(wǎng)絡(luò)問題和低延遲等,確保游戲開發(fā)者順利完成云部署。
無服務(wù)器架構(gòu)
無服務(wù)器計算本質(zhì)上就是將搭建架構(gòu)的責(zé)任從物理服務(wù)器轉(zhuǎn)移到AWS Amplify或Azure等第三方架構(gòu)供應(yīng)商身上。
一旦你深入了解無服務(wù)器架構(gòu),你就會明白為什么DevOps在游戲開發(fā)中如此受歡迎。
首先,DevOps支持超級彈性伸縮。無需專門指派開發(fā)人員監(jiān)測基礎(chǔ)架構(gòu)使用情況并進行手動調(diào)整,你的后端供應(yīng)商可以根據(jù)需要自動擴展或縮減基礎(chǔ)架構(gòu)。也就是說,開發(fā)人員可以專注于編寫和部署代碼、微調(diào)流程、確保按計劃實現(xiàn)目標(biāo),不必?fù)?dān)心底層的所有架構(gòu)。
但是,最關(guān)鍵的是,無服務(wù)器架構(gòu)真正地加速了游戲開發(fā)的整個過程。當(dāng)你不必?fù)?dān)心后端基礎(chǔ)架構(gòu)時,你可以在需要時添加和修改代碼,以發(fā)布新特性,修復(fù)錯誤。
在游戲開發(fā)這種極其講究時效期的行業(yè)里,無服務(wù)器架構(gòu)就成了無價之寶。如果有什么東西能夠保證讓開發(fā)人員放松下來,消除職業(yè)倦怠,那它肯定就是無服務(wù)器架構(gòu)。
流行的DevOps工具
問題是:DevOps不是軟件,也不是單一的活動。它是一套完整的工作方式,是你的團隊所采用的全部流程和理念的組合。
當(dāng)你擁有合適的工具后,你就能輕松地遵循DevOps的流程和理念。
所以,許多DevOps工具現(xiàn)在已經(jīng)成為主要的游戲開發(fā)工具。
如果你希望在較短的周期內(nèi)發(fā)布產(chǎn)品,并且能夠同時處理各種項目的發(fā)布、補丁和更新,那么你就需要使用工具,在生產(chǎn)周期內(nèi)盡可能提高效率。
對于游戲開發(fā)過程中的DevOps,工具有:
Perforce Helix Core,用于實現(xiàn)干凈、簡單的版本控制,讓變更監(jiān)測、測試運行和錯誤修復(fù)變得更容易?,F(xiàn)在,Perforce已經(jīng)成為微軟新Azure游戲開發(fā)虛擬機中一個“基本工具”(基本工具還包括Incredibuild以及其他許多解決方案),未來或許會成為游戲開發(fā)協(xié)作的必選工具。讓我們拭目以待。
Incredibuild,用于加速構(gòu)建緩存和優(yōu)化計算資源,加快開發(fā)周期,增加迭代頻率。
Jenkins或企業(yè)版Jenkins——CloudBees,用于實現(xiàn)自動化持續(xù)集成,適用于各種編程語言。
容器
容器本身就能改變游戲開發(fā)。
利用容器代碼、運行時間、系統(tǒng)庫、系統(tǒng)工具和設(shè)置壓縮軟件包,你可以在幾乎所有操作系統(tǒng)中,更輕松地以虛擬的方式運行軟件。這意味著,不同開發(fā)人員之間可以實現(xiàn)更輕松的協(xié)作,最重要的是,以更快的速度進行跨控制臺開發(fā),且產(chǎn)生的錯誤更少。
像Docker這樣的優(yōu)質(zhì)容器注冊表,可以在基于Linux和Windows的應(yīng)用程序上運行,從而輕松構(gòu)建支持各種環(huán)境的軟件。集成JFrog容器注冊表和Helm chart存儲庫,可以進行Kubernetes部署。甚至,集成artifactory容器注冊器,還能給予開發(fā)人員更多的訪問和權(quán)限控制。
將容器化與DevOps實踐相結(jié)合,你還能開啟一個全新的持續(xù)開發(fā)模式。你可以:
在需要時啟動和禁用容器。啟動容器,用來測試游戲中的元素,然后回收容器。所有操作均在一致且可復(fù)制的環(huán)境中完成。
按照“構(gòu)建一次,部署多個”的策略,以更快的速度完成部署,盡可能減少故障。制品庫中存儲的‘映像’有助于輕松地快速創(chuàng)建大量相同的容器。這些容器可以快速部署到不同的環(huán)境中,在各種最優(yōu)質(zhì)、最可靠的制品中,你可以輕松地利用更多優(yōu)勢。
測試自動化
構(gòu)建游戲,就是把各行各業(yè)的大量專業(yè)人才聚集在一起,讓他們創(chuàng)造出一個連貫流暢的作品。就像是把米開朗基羅、帕瓦羅蒂、莎士比亞和畢加索召集在一起,請他們創(chuàng)造一件藝術(shù)杰作。不過,數(shù)以百萬計的人員會不斷通過窗口詢問他們是否完成任務(wù)。
如果你是游戲開發(fā)者,你肯定知道全盤測試和頻繁測試的重要意義。所以您需要在游戲開發(fā)過程中使用DevOps,DevOps應(yīng)該是工作過程中的一個重要組成部分。
但說起來容易,做起來難。理想情況下,你只需要在可能的控制臺和環(huán)境下,結(jié)合各種可能的消費者行為,定期測試各部分代碼。但是,手動運行所有測試,幾乎是不可能的,特別是大規(guī)模測試。
單元測試——利用專門的程序測試其他程序的性能,通過自動化處理測試過程中伴隨的部分簡單、重復(fù)性任務(wù),比如創(chuàng)建角色、啟動游戲或執(zhí)行少數(shù)基本命令時,可以減輕員工的負(fù)擔(dān)。
自動化測試面對更復(fù)雜的測試任務(wù)沒有手動測試這么好,但是許多游戲公司發(fā)現(xiàn),即便只是剔除一些重復(fù)性的小任務(wù),就可以大大緩解開發(fā)人員的職業(yè)倦怠。
DevOps是否真的改變了游戲?
DevOps并沒有完全掌控整個游戲開發(fā)行業(yè),至少現(xiàn)在還沒有。
這個行業(yè)充滿復(fù)雜的流程,各種優(yōu)先事項相互沖突,員工承受著巨大的交付壓力,導(dǎo)致一些游戲公司不得不苦苦掙扎,尋找徹底轉(zhuǎn)變其工作方式的機會。
很明顯地,當(dāng)游戲公司找到機會投入新工具并采用DevOps流程后,就會產(chǎn)生巨大的影響。
最重要的是,這種影響不僅僅是確立更高的底線,或者創(chuàng)建更好用的執(zhí)行套件。受DevOps影響最大的群體,往往是游戲公司最關(guān)心的兩個群體:開發(fā)人員和客戶。

作者:Joseph Sibony,Incredibuild高級內(nèi)容經(jīng)理。他一輩子都在跟技術(shù)打交道,不論是硬件、軟件,還是二者之間的結(jié)合。他從事數(shù)據(jù)科學(xué)和網(wǎng)絡(luò)安全方面的工作,撰寫了大量關(guān)于技術(shù)與社會相結(jié)合的文章。
文章來源:https://www.incredibuild.cn/blog/youxikaifaguochengzhongdevopsruhegaibianyouxigongsidegongzuofangshi