GDC 2017 技術選薦合輯
上一次參加 GDC 是在七年前。有趣的是,2010 那年,John Carmack 獲得了終生成就獎 (Lifetime Achievement Award);而 2017 年的 GDC 上,獲得這個獎項的是 Tim Sweeney。這是兩位真正的行業傳奇。他們的代碼,令我滿心欽佩且受教良多。
----------
這一篇快速記錄中,我粗粗地整理了一下自己聽過的演講,並把那些覺得很有收穫的標註了一下。還有不少演講是因為分身乏術錯過的,這裡也一併記了,這樣晚些時候可以到 GDC Vault 里去聽回放。
- 維護和更新地址:(github.com) dev-awesomenesses/awesome-gdc17
----------
還有一個半小時的訪談,是陳傑老師和我一起最後一天晚上做的。頭一次上鏡頭,感覺自己不忍直視 (捂臉逃~~
對內容感興趣又不想花時間看視頻的同學,可以掃視下面的零散文字——這其實是我在錄節目前記錄的一些簡短腳本 (就在我手上端著的 Surface 里)。
----------
GDC17 總體感覺:嚴謹
傳統 hack -> 規模越來越大,複雜度 hold 不住 -> 機器性能的提高使得不少 hack 不再有意義 -> 通過嚴謹的設計來簡化問題
主要分享三堂課內容:
- 英雄聯盟的製作
- 守望先鋒的邏輯狀態和同步
- 寒霜引擎的圖形渲染架構改造
1. (LOL) 遊戲製作 Production
a. 英雄的製作 (DNA)
新做的內容需要先把握好 DNA,這樣你的新內容就有根,就有靈魂
- Design 就是你的核心設計,簡單的說就是玩什麼,對英雄而言就是技能和對應的技巧和玩法
- Narrative 敘事,來歷,前因後果,三個問題:你是誰,你從哪裡來,你到哪裡去
- Art 藝術形象,不完全是原畫 (考慮實現性),是一種感覺 (feeling),畫面感
(此處小結為本文新增) 總得來說, D 對應了交互體驗,N 對應了世界觀,A 對應了視覺和感性,合起來的 DNA 是確保新內容的感染力的核心,
b. 預製作周期
一個英雄的製作周期是 9 個月,在開始做實際成品之前的所有階段(統稱為預製作階段)的時間加起來,足足5個月。
也就是說磨刀5個月,砍柴4個月。
要是在國內,9個月的 deadline 五個月了還沒出東西,呃,是還沒開始出東西,就算老闆不說啥,自己也會不好意思,對吧?
為什麼這麼做呢?紮實,結實,夯實。
這樣出來的東西是能夠協調地跟遊戲里的其他部分融合的。不然呢?可破壞的場景跟技能表現衝突了~ 下雨的特效跟英雄的光環衝突了~ 做英雄花了3個月,然後各種堵窟窿花了10個月。
對於成熟的設計團隊,只有你給他時間和空間去沉澱,才能紮實,結實,夯實,做出好東西。
DNA 和 Pre-Production,就是這個分享給我的最大的兩點啟發。
2. (Overwatch) 網路同步的現代的架構設計
教科書般的設計,是上面提到的嚴謹的體現。
為什麼這麼講呢?跟現在的系統化方案比起來,以前覺得還可以的一些方案頓時顯得很土很山寨。
拿錄像重放系統舉例子,對比現代的網路模塊和遊戲邏輯結合的調試系統
單步單幀邏輯重放,可視化的完整狀態調試。
旁邊識貨的同學,眼都直了。
3. (Frostbite) 圖形渲染架構改造
兩套東西:FrameGraph, 顯式顯存管理
以前手寫的渲染流程,縫縫補補加開關;後來 Gamebryo 實現了一套樸素的 RenderFrame 機制 (有邏輯零碎化的問題);現在通過 FrameGraph 完全達到結構化渲染流程的效果。
FrameGraph 用臨時生成 lambda 表達式的方法,保留了以前的線性邏輯,(好思路)
跟這個相比,幾年前的那套初級機制簡直不值一提(在實現功能的基礎上追求簡單優雅和有效),同樣是嚴謹性的體現。顯式顯存管理,分塊,按照生命期的長短去盡量重複利用塊來降低峰值的佔用
對於渲染系統,我們可以在新的圖形 API (DX12 / Vulkan) 上很自然地引申出前端和後端概念
- 前端 (並行化)從材質系統到 drawcall 的產生和提交 (傳統的應用程序部分)
- 後端 (從降低碎片化,改善顯存利用率開始,逐步接管)(傳統的顯卡驅動部分)
這是 Frostbite 對應的新渲染架構給我方向上的啟發。
- 永久鏈接: GDC 2017 技術選薦合輯
- 本文遵循 Creative Commons BY-NC-ND 4.0 許可協議
[完]
Gu Lu[2017-03-11]推薦閱讀:
※遊戲是什麼?這個問題真的很重要嗎?
※【Unity】工具類系列教程——配置化和規範流程
※Unity3D熱更新LuaFramework入門實戰(4)——Lua組件
※有C++的基礎,卻不知道該往哪方向發展?
※如何看待貼吧里的十五六歲就用引擎寫遊戲的開發者?