本文來自網易雲社區。程序員
7月31日,2018雲創大會遊戲論壇在杭州國際博覽中心103B圓滿舉行。本場遊戲論壇聚焦探討了可能對遊戲行業發展有重大推進的新技術、新實踐,如AR、區塊鏈、安全、大數據等。安全
谷得遊戲技術總監陳鎮洪表示,通用化組件能快速提高遊戲開發效率性能優化
谷得遊戲技術總監陳鎮洪作了《谷得遊戲如何打造自主研發流水線》的主題演講,表示遊戲廠商們應當創建平臺部,實現遊戲研發的通用化,助力流水線型的遊戲開發工做。網絡
過去的開發模式項目組之間是互相獨立的,所以經常會面臨重複製造輪子、重複踩坑、沒有質量保證等問題,而技術中心的成立則能夠有效打破這種僵局。陳鎮洪表示,技術中心即平臺部,它是各個項目組之間的運轉中心,能夠將各個項目中通用的模塊進行概括、優化、總結、提煉,進而提供給有一樣需求的其餘項目。以這個雛形不斷循環,不只可以優化整個研發流程,並且可以快速佔領市場先機,把握產品競爭優點。框架
陳鎮洪闡述道,這個平臺部應該具有四大特色。編輯器
第一個特色,組件化開發。產品的研發過程能夠拆解爲一個個被量化的模塊,好比底層框架、核心玩法、功能系統,而任何遊戲幾乎均可以拆解爲這三個模塊。ide
第二個特色,工具自動化。遊戲研發都會經歷純手動開發到流程化、再到自動化的階段,但重要的是要在研發過程當中發現痛點,並造成工具,好比雲構建、動做編輯器、地圖編輯器等等。其中,雲構建很好地解決了手遊打包的問題,簡化了溝通流程和人員工做量。工具
第三個特色,上線標準。上線標準的核心是將上線準備工做拆解組裝,以協助項目組順利完成,主要包括性能優化、機型適配、渠道接入等,這個過程是保障遊戲上線的必要工做。組件化
第四個特徵,質量把控。爲了保證遊戲安全,咱們須要在某些研發階段作幾回全面的檢查,知道它究竟有沒有這樣的問題,而後去解決這些事情。性能
陳鎮洪最後提到,在遊戲研發如此激烈的狀況下,如何像流水線同樣快速有保障地開發一款遊戲,是提高公司競爭力以及我的競爭力很是重要的事情。而想要打造研發流水線,有兩條路徑能夠選擇:第一條線是項目研發,分爲項目立項、研發中以及上線前三個階段;第二條線則是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的時候,第一次測試的時候審查總體的性能和框架,整個遊戲正式上線前還會進行更全面的檢測,不一樣階段的檢測內容也不同。
因此如今在遊戲研發如此激烈的狀況下,如何像流水線同樣快速地開發一款遊戲、有保障地開發一款遊戲,是提高你公司競爭力以及我的競爭力很是重要的事情。
謝謝你們。