演講實錄!谷得技術總監陳鎮洪教你如何打造自主研發流水線
7月31日,2018雲創大會遊戲論壇在杭州國際博覽中心103B圓滿舉行。本場遊戲論壇聚焦探討了可能對遊戲行業發展有重大推動的新技術、新實踐,如AR、區塊鏈、安全、大數據等。
谷得遊戲技術總監陳鎮洪做了《谷得遊戲如何打造自主研發流水線》的主題演講,表示遊戲廠商們應當建立平台,實現遊戲研發的通用化,助力流水線型的遊戲開發工作。
過去的開發模式項目組之間是互相獨立的,因此常常會面臨重複製造輪子、重複踩坑、沒有質量保證等問題,而技術中心的成立則可以有效打破這種僵局。陳鎮洪表示,技術中心即平台,它是各個項目組之間的運轉中心,可以將各個項目中通用的模塊進行歸納、優化、總結、提煉,進而提供給有同樣需求的其他項目。以這個雛形不斷循環,不僅能夠優化整個研發流程,而且能夠快速佔領市場先機,把握產品競爭優勢。
陳鎮洪闡述道,這個平台應該具備四大特點。
第一個特點,組件化開發。產品的研發過程可以拆解為一個個被量化的模塊,比如底層框架、核心玩法、功能系統,而任何遊戲幾乎都可以拆解為這三個模塊。
- 底層框架,包括有遊戲管理器、UI框架、網路模塊、資源模塊、熱更新模塊、消息事件模塊等等,它們彼此之間互相獨立,共同組成了一個遊戲的骨架;
- 核心玩法,不同類型的遊戲核心玩法不一樣,可以藉助動作編輯器、子彈編輯器、AI編輯器、地圖事件編輯器等工具實現通用化,避免重複性工作;
- 功能系統,包括登陸支付、聊天、角色、裝備等,不同遊戲的功能系統也不一樣。
第二個特點,工具自動化。遊戲研發都會經歷純手動開發到流程化、再到自動化的階段,但重要的是要在研發過程中發現痛點,並形成工具,比如雲構建、動作編輯器、地圖編輯器等等。其中,雲構建很好地解決了手游打包的問題,簡化了溝通流程和人員工作量。
第三個特點,上線標準。上線標準的核心是將上線準備工作拆解組裝,以協助項目組順利完成,主要包括性能優化、機型適配、渠道接入等,這個過程是保障遊戲上線的必要工作。
第四個特徵,質量把控。為了保證遊戲安全,我們需要在某些研發階段做幾次全面的檢查,知道它究竟有沒有這樣的問題,然後去解決這些事情。
陳鎮洪最後提到,在遊戲研發如此激烈的情況下,如何像流水線一樣快速有保障地開發一款遊戲,是提升公司競爭力以及個人競爭力非常重要的事情。而想要打造研發流水線,有兩條路徑可以選擇:第一條線是項目研發,分為項目立項、研發中以及上線前三個階段;第二條線則是TDR評審,由評審委員會對項目的各個階段進行全面的檢查。
以下是陳鎮洪演講實錄:
各位來賓,各位同行,大家下午好!我是谷得遊戲的技術總監陳鎮洪。
今天我分享的是主題是《谷得遊戲如何打造自主研發流水線》。遊戲的研發現在越來越激烈,一款遊戲不可能從零開始開發,如果做一到兩年再上線市場機會就丟失了,像吃雞遊戲,出來第一款,馬上出來第二款、第三款。所以當你有一個idea的時候,如何保證快速的高質量研發出來,就是我今天分享的重點。
過去式的開發模式項目組之間是互相獨立的,所以項目組沒有互相傳承跟積累。舉個例子,項目A從零開始研發到上線,項目V立項的時候還是要經歷這樣的過程。所以導致了各種各樣的問題,包括重複製造輪子、重複踩坑、沒有質量保證等等。因為項目組之間天然是一種競爭的關係,而且他們也有進度各方面的壓力,所以希望他們主動去分享經驗是非常難的。
怎麼打破這種局面呢?我的做法是成立一個平台,類似技術中心的概念,它是各個項目組之間的運轉中心。舉個例子,項目A將一個比較通用的模塊提到平台,平台進行歸納、優化、總結、提煉,項目B這時候有需求了,就能夠把這個功能給到項目B,項目B減少了研發時間,同時平台不斷研發一些新的工作,將一些功能和工具給到項目A和項目B,也減少了他們的時間。以這個雛形不斷循環,整個流程就比較順暢。
接下來我將重點說明怎麼圍繞平台來做這些事情。
第一個特徵:組件化開發。一個產品的研發過程是可以被拆解為一個個被量化的模塊,未來的遊戲不會從零開始研發,而是從一個已經研發上線的產品、或者說從已有的基礎模塊上面進行組裝,成為一個新的遊戲。就好象你買電腦一樣,你的需求可以拆解成一個個硬體配置,然後把這些硬體買回來進行組裝,就可以用了。舉一個案例,《世界2》是一款argp產品,它的拆解從大的方向、大的概念來講,可以被拆解為三個部分:底層框架、核心玩法、功能系統。任何遊戲,或者大部分遊戲都可以拆解為這三個模塊。
首先是底層框架,底層框架包括有遊戲管理器、UI框架、網路模塊、資源模塊、熱更新模塊、消息事件模塊等等各種各樣的模塊,它們彼此之間是互相獨立的,然後把它們組成一個遊戲的骨架,類似於一個建築,它們就是地基,只有這些模塊穩定的同時,才能在上面建造出更多花樣。其次是核心玩法,不同類型的遊戲核心玩法不一樣,怎麼把這個核心玩法進行拆解呢?戰鬥副本有什麼可以拆解的?一方面它要同步,你可以選擇是真同步的技術或者是裝了同步的技術,另一方面還可以藉助編輯器:動作編輯器中,每個角色都需要有各種各樣的動作,以及各種各樣技能,你需要有一個強大的工具,可以讓策劃更加靈活去做這個事情;子彈編輯器中,決定你釋放出來的技能是一個暴光還是一個衝擊波;AI編輯器中,會包括怪物的行為、樹怎麼去編輯等等;地圖事件編輯器中,一些劇情或者戰鬥中的陷井通過這個來做,還有鏡頭、數據表等等......我們拆分出這些模塊之後,在下一次做這種類型遊戲的時候就可以完全通用化。而其中的某些模塊也可以單獨拿出來使用,比如做一個動作遊戲,就可以把其中的動作編輯器、AI編輯器拿出來用,而其他模塊不需要動,這樣就不會重複性工作。最後是功能系統,包括登陸支付、聊天、角色、裝備,不同遊戲的功能系統也不一樣。
《創造者》是目前公司正在研究的,也是我所負責的一款新產品,是開放世界+沙盒+大規模多人+二次元敘事的一款遊戲。從畫面上看它是由一個個方塊組成的遊戲,裡面所有的方塊和樹,甚至遠處的欄杆等等各種各樣的東西,在這個遊戲裡面都可以被破壞或者建造。所以如果你很不爽可以把整個山坡、整個樹全部砍掉,或者建一個非常漂亮的房子。
《創造者》的拆解我們是怎麼做的呢?它也可以被拆解為幾個模塊,包括底層框架、核心玩法、功能系統。我們做這個立項的時候,已經有了一定的底層框架和核心玩法的積累,所以整個遊戲立項的時候只要解決核心玩法定型的問題,整個遊戲的雛形就已經出來了。這個重點是研發工期臨時縮減了一半,所以這個前提是策劃不要頻繁改動需求的前提下。
剛才說過不同的遊戲類型其核心玩法是不一樣的,《創造者》核心除了戰鬥之外還有核心玩法,做每個核心玩法的時候會做技術攻關,把一個新的遊戲核心玩法包裝利用出來,形成一個組件化的形式。像我們這樣的遊戲難點是非常大的,因為所有的數據、地形是動態生成的,所以導致不能被烘焙,它必須是通過數據來生成的一個地形。所以要解決很多問題,這個過程中我們遇到很多難點,像數據量比較大、網格內存大:整個遊戲裡面我們建了一個城堡,城堡所使用方塊的數量、傢具等加起來大概40多萬個,所以肉眼就可以看到40多萬個物件,那是非常恐怖的事情;還有大量火把光,玩家可以自己放火把,想放多少火把都可以,沒有限制;還有尋路,因為整個地圖範圍比較大,尋路問題也是必須解決的問題。
這個遊戲的類型也是一片藍海,所以過程中有很多東西我們都是以先行者的姿態在解決。對此,我們做了一系列的技術攻關。一方面,因為網格內存比較大,所以網格方面我們對一些看不到的地方或者方塊與方塊之間連接的面,會相應的刪減,比如只保留你看到的表面的東西。另一方面,我們會進行定型核定,會以一個小區域進行合併,而不是一下子把整個區域進行合併,在空間力度的把控上更加重視,所以我們大概是以16X16X16個方塊作為一個網格。此外,在解決大量火把光問題的時候,我們還自定義了頂點光,實現了頂點顏色的渲染......通過這些實踐總結,我們就可以快速做出第二款遊戲。
第二個特徵,工具自動化。遊戲研發過程中,都會經歷從純手動開發的階段到流程化、再到自動化的階段。這個事情其實並不是很難,重點是怎麼在研發過程中去發現一些痛點,然後把它做成工具並開發出來,所以對於研發的理解是非常重要的。
我們做了一些什麼樣的工具呢?第一是雲構建,它解決了手游打包的麻煩事情。舉個例子,首先策劃會提出程序打包的需求,開發在程序打包的時候不僅要跑到版本機上面先配置好環境、構建完成之後還要經過漫長的等待、打好了還要進行各種參數配置、證書配置、描述文件配置等等,然後繼續打包、構建,才能上傳和安裝下載。整個流程非常煩瑣,所以我們做了一鍵打包,你只需要通過一個按紐,就可以直接得到一個版本。
如上圖所示,裡面顯示了每個構建版本所需要的時間,平均每個應用構建的時間不到10分鐘。通過這個基礎的東西我們還做了很多外圍的應用,比如像鬧鐘一樣可以定時每天晚上零點的時候打一個包,隔天早上上班的時候就可以看得到,知道今天程序員具體做了哪些工作等等。還有其他一些周邊工具,比如資源更新,資源更新是一個很複雜的功能,我們把它做成一個工具流,將複雜的系統轉化為簡單的操作,並把類似的思想運用到了遊戲各流程中去。對於策劃來講,只需要通過這個界面去部署,通過部署好的信息就可以上傳、更新和下載資源。此外還有一個SDK聚合,把重複的工作量轉化為只做一次,這裡面不僅指渠道,還包括很多自定義的組件,比如語音SDK或者蘋果的特性ARK等等,我們都把它做成了一個SDK聚合的東西。跟雲構建一樣,當我點擊雲構建的時候,我可以選擇需要的渠道或者是組件,讓它自動聚合上去。整個東西跟我們一開始做底層框架的時候是掛鉤在一起的。
除了一些周邊的工具之外,在遊戲研發中也需要做一些自動化的工具。
一是動作編輯器。我們在遊戲中的理念之一是儘可能地解放策劃思維,策劃通過工具和模板就可以把自己想實現的功能做出來,而不需要告訴程序你要怎麼做,這個溝通成本是非常大的,同時也限制了策劃的思想。動作編輯分為幾個模塊:其一是角色的定義,包括角色的所有動作、狀態和事件,比如具體的普攻信息、動作片斷、觸發特效等等,每個事件都有不同的編輯面板,分為各種各樣參數的配置;其二是中斷的定義,當玩家點擊了兩次技能A再點擊技能B,會出現另外一個攻擊技能,這時候通過中斷定義的配置,會切到另外的動作片斷。這兩者共同形成了整個動作編輯器。
二是地圖編輯器。地圖編輯是遊戲開發中非常重要的工具之一,我們專門有兩個美術做這樣的事情,得力於我們強大的編輯器,讓美術在編輯地圖的時候完完全全解放了很多機械性、重複性的工作。如下圖所示,右邊是各種編輯功能,比如話刷、其他區域選擇等等。左邊是其中的某一個功能,比如地形生成,編輯器中也會有一些地形生成的模板,可以通過配置模板自動生成一個村莊、草原、沙漠或者樹林,在這個基礎上面再進行修改。
各種編輯器的目的就是想要解放人員的工作量,無論是程序、策劃還是美術。而且我們不僅有這幾個編輯器,還有更多的編輯器。
第三個特徵,上線標準。一個遊戲上線的時候要做很多事情,比如性能優化、卡斷檢測、是否發熱、會不會內存閃退等等。而上線標準的核心就是將上線準備工作拆解組裝,以協助項目組順利完成,主要包括:性能優化,對項目深度優化,把問題找出來,並給出建議報告;機型適配,適配各種各樣的機型以解決兼容性問題;渠道接入,做各種各樣SDK的接入。這個過程是保障遊戲上線的必要工作,也類似於組件開發的思路一樣,把上線一些通用的工作抽離出來,由平台部做這樣的事情。因為這些通用化的工作由一個部門去做的時候,它可以不斷積累沉澱,所以在做第二個項目的時候,就可以有非常多的經驗去解決問題。
第四個特徵,質量把控。為了保證遊戲安全,我們需要在某些研發階段做幾次全面的檢查,知道它究竟有沒有這樣的問題,然後去解決這些事情。
最後總結一下今天講的內容。
如果想要打造研發流水線,有兩條路徑可以選擇。
第一條線是項目研發,分為三個階段:項目立項、研發中以及上線前。項目立項的時候,通過組件化減少工作量;而在研發當中可以藉助雲構建、打包等工具,在過程中不斷優化整個項目研發效率;在上線前,確保上線前的質量,比如性能優化、機型適配等等各種各樣通用化的工作。這些動作分別在三個不同的階段進行,會給這個項目做一個全面的支撐。第二條線則是TDR評審。TDR評審是由評審委員會組成的,評審委員應該包括平台部裡面的技術專家,以及其他項目的專家,在項目某個階段的時候進行全面的檢查。檢測應分為三次:項目立項之後做第一個Demo的時候,第一次測試的時候審查整體的性能和框架,整個遊戲正式上線前還會進行更全面的檢測,不同階段的檢測內容也不一樣。
所以現在在遊戲研發如此激烈的情況下,如何像流水線一樣快速地開發一款遊戲、有保障地開發一款遊戲,是提升你公司競爭力以及個人競爭力非常重要的事情。
謝謝大家。
點擊試用網易雲易盾安全服務。
推薦閱讀:
※#0 開通專欄了
※虛幻4 Siren的製作
※我們試著做了一期學員Unity作品展示的視頻
※io遊戲開發用到的技術和注意的事項