遊戲開發經驗分享丨有關即時演算過場動畫的管線設計和項目管理

引子

筆者在北美遊戲業快十八年了,主要的經歷有三塊兒:

  • AAA遊戲過場動畫領域的經驗,參與過Red Faction(《紅色派系》)系列、Saints Row(《黑街聖徒》)系列的完整研發,這些項目多為開放世界遊戲,負責構建Real time in-game cinematic pipeline和製作具體的過場動畫。最新項目是《Saints Row 5》,可惜受疫情影響估計要2022年才能在次世代平台發售了,不能多說。
  • 跟我哥有一個專注於美術服務的公司,以乙方身份跟幾乎所有歐美大廠都合作過,過去十幾年經手的項目從AAA遊戲到爆款手遊,光是Marvel的《復聯》項目就有5、6款,主要負責合作流程、項目管理和藝術指導。
  • 近幾年在主導自研遊戲的Zing Games Inc.,作品登過App Store全球第一,也收獲了若干業內獎項。最新作品《Zombie Rollerz: Pinball Heroes》去年12月在Apple Arcade獨家首發,今年會上PC和主機平台。
  • 從indie小品到歐美大廠的AAA開放世界遊戲,從內部團隊的實際研發工作到外部顧問,從外包管理到美術指導,從甲方到乙方。不光是參與的項目數量不少,而且在這些項目中所處的身份也不同,這種多樣性的經歷,讓我可以從不同的角度來分析遊戲開發中的種種。

    新年初始,幾個國內做遊戲研發的朋友,不約而同地問我關於遊戲內過場動畫的問題。從跟他們的聊天中,我明顯體會到國內遊戲研發公司從產品質量和研發流程上正飛速地向海外AAA公司靠攏。

    而在這個飛速的過程中,速度過快也成為一個問題,甚至可能是一個雷。因為人才數量、文化差異的問題,如何借鑒海外成熟AAA公司的經驗和流程,可能會是國內製作人和研發管理層需要思考的問題。不過這個問題太大了,我也聊不了,這里主要是想聊聊跟遊戲內過場動畫相關的事情,也算幫朋友們整理下思路。

    這篇文章會討論即時演算過場動畫(Real time in-game cutscene)的管線設計(Pipeline)和項目管理(Production)。為什麼要聊管線設計和項目管理呢?原因有三。

    首先,In-game cutscene(本文內名詞會用英文,加中文翻譯,有些我也不太確認國內研發的常用詞匯,也請業內讀者朋友指正)的重點是In-game。是用遊戲引擎來實時播放的過場動畫,而不是Pre-rendered cutscene(預渲染過場動畫)。加上實時和引擎這兩個要素之後,這一塊算是AAA遊戲開發中管理最復雜的內容之一,不光涉及開發組內各個部門的協同,也會涉及到外部團隊,對項目管理者自身能力和經驗的要求會比較高。

    第二,很少人聊。正因為其復雜難聊,關於AAA遊戲的In-game cutscene的各種講座和資料為了吸引觀眾,都停留在有趣易讀好看的層面,比如展示Storyboard(故事板或者分鏡),講講Pre-visualization(預視化)和Animatic(動態分鏡),秀秀有意思的Performance Capture(表演捕捉),或者具體講解某一個技術方案,而不會真的企圖為外人梳理晦澀的Pipeline和Production上的坑。全局流程和管理層面的資料就更少了,AAA大廠很少真的分享。

    第三,避免掉坑里的實用性。過去若干年,國內遊戲研發的質量和流程在不斷接近海外。比如海外美術外包工作的經驗提升了遊戲模型貼圖的技術;引入商業引擎所提高了管線流程管理;大家對Tech Artist(技術美術)也愈發渴求。但是,因為In-game cutscene是一個又復雜又狂燒錢的領域,在之前國內遊戲研發的環境下並非必須,國內廠商鮮有嘗試,所以也很難有機會試錯和積累經驗。

    友情提示,本文的閱讀指數:

  • 趣味性:1 / 5
  • 易讀性:3 / 5
  • 實用性:5 / 5 (適用人群ONLY)
  • 稀缺性:5 / 5
  • IN-GAME CINEMATIC PIPELINE
    遊戲引擎過場動畫的管線設計

    Real time in-game cutscene,也可以稱Real time in-engine cutscene,是指使用遊戲引擎來製作在遊戲過程中實時播放的過場動畫。

    你可能會問,為什麼不用Pre-rendered(預渲染)的方式來製作過場動畫呢?這樣在遊戲里直接播片,效果趕超好萊塢,團隊也就不用考慮什麼技術、管線這些頭疼的事情啦。每個項目的想法當然都不同,但大體有幾個關鍵原因:

  • 玩家可自定義角色
  • 希望實際遊戲畫面和過場動畫的質量盡量保持一致
  • 復用遊戲內已有內容,盡可能節約成本
  • 在玩家自定義角色普遍流行的當下,就算不捏臉,大多數遊戲也提供了很多可穿戴的服飾和裝備,所以Real time in-game cutscene越來越多的成為唯一的選擇。當然,還有另外一個很明智的選擇,就是不做過場動畫……

    先看一下In-game cinematic pipeline的workflow圖,我故意做了個縮略圖,不需要看清每個節點是什麼,只需要感受一下即可。

    遊戲開發經驗分享丨有關即時演算過場動畫的管線設計和項目管理

    毫無頭緒?那就從頭說起吧。

    作為Cinematic模塊的管理者,我們要回答幾個關鍵問題:

  • 我做什麼
  • 我需要什麼
  • 我產出什麼
  • 我做什麼

    我要做In-game cutscene,對的。那麼In-game cutscene由哪些必須的內容(Asset,也常被稱為資產)組成呢?

  • 演員
  • 道具
  • 場景
  • 鏡頭
  • 燈光
  • UI
  • 特效(VFX)
  • 音效
  • 配樂
  • 每個商業引擎或者自研引擎都應該支持這些獨立元素,而你的部門要做的事情,是把這些內容組合在一起,形成一個真正的Cutscene。

    而組合這些內容,往往都需要普通遊戲研發所不需要的一些編輯器來支持,可以把這個統稱為Cinematic Editor(過場動畫編輯器),這是Cinematic Pipeline的中心樞紐。

    遊戲開發經驗分享丨有關即時演算過場動畫的管線設計和項目管理

    我需要什麼

    首先你需要Script(劇本)。聽上去這簡直是廢話,但是殊不知多少項目在劇本上耽誤了寶貴時間導致後期趕工等一系列連鎖效應。

    如果把劇本比做一份圖紙,那Cinematic pipeline就像是一個按照圖紙來組裝的工廠。既然是組裝,你就需要各種零件。

    其中,大多數零件來自研發團隊其他部門所生產的內容(Asset),比如角色部門所負責的人物模型,場景部門負責的室內室外場景,道具部門負責的車輛和槍械等。這里就體現了In-game cutscene的一大優勢:盡可能地復用遊戲已有內容。

    另外,也有很多內容或多或少需要外部公司的支持,比如演員的表演、動作捕捉、配音、配樂等等。

    遊戲開發經驗分享丨有關即時演算過場動畫的管線設計和項目管理

    我產出什麼

    有了圖紙,有了零件,工廠的組裝車間也准備的差不多了,那產出什麼呢?你可能會想,不就是導出過場動畫,在遊戲中播放麼?沒那麼輕松,在不同的階段,工廠的組裝車間還需要產出不同的半成品:

  • Storyboard(故事板,也稱為分鏡)
  • Pre-Viz(預示化),或者直白一點稱之為Animatic(動態分鏡)
  • Mocap preparation asset(為動捕提供的各種文件)
  • 最終過場動畫
  • 遊戲開發經驗分享丨有關即時演算過場動畫的管線設計和項目管理

    好了,我們現在對workflow有點整體概念了。

    遊戲開發經驗分享丨有關即時演算過場動畫的管線設計和項目管理

    看起來還是比較清晰的,但我們還要再添加一個新的元素:人員。

    人員構成

    每個項目的研發預算和團隊大小都不同,有很多工種的人員往往是兼任的。在這里會按照一個主機AAA開放世界遊戲的配置來闡述。

    CINEMATIC DIRECTOR

    Cinematic Director(也會被稱為Cinematic Lead, Cinematic Coordinator)不光要有影視相關的專業知識,更需要具有項目管理能力來承擔類似Producer的職責,經驗尤其重要。

    CINEMATIC ARTIST

    雖然項目大小不同,但Cinematic Artist起碼也要2到4個才能滿足一個AAA開放世界的基本體量需求。Cinematic Artist的核心能力是電影相關的專業知識,這涉及到很多綜合能力,例如講故事、鏡頭語言、剪接、表演、動畫、燈光、後期等等。

    在跟國內朋友聊天的時候我發現有一個挺大的認知誤區,就是很多在國內做相關工作的人員實際上是 Animator(動畫師)來頂替的,兩者其實還是很不一樣的。國內Cinematic Artist人才的缺乏跟電影領域的教育普及也有關。

    TECH ARTIST

    除了掛Cinematic名號的人員,還有一個工種的人員必須有,如果缺失,整條pipeline就根本轉不起來,那就是現在哪里都缺的Tech Artist,而且還是對動畫和影視有一定了解的Tech Artist。

    Tech Artist是美術人員和程序人員之間的橋梁,很大部分的工作是將程序實現的各種功能變成可以被美術人員使用的工具。在Cinematic pipeline中Tech Artist的工作有兩個部分:

  • 遊戲引擎中Cinematic Editor的搭建
  • 將管線中所使用的各種專用軟體(Maya、MotionBuilder、3dsMax等等) 接入到整體工作流程中
  • SUPPORT ROLES

    還有一些人員,在很多項目中是共享的。當然如果項目預算足夠,並且的確需要,也會專門在Cinematic team里面配置下面的工種。

  • Cinematic Animator(影視動畫師)
  • Lighting Artist(燈光師)
  • Effect Artist(特效師)
  • Prop Artist(道具美術師)
  • 根據上述,我們再更新下In-game cinematic pipeline的workflow圖。這時候你會不會有站在高台俯瞰一座工廠流水線的體驗,感覺稍微有點井井有條了呢?

    遊戲開發經驗分享丨有關即時演算過場動畫的管線設計和項目管理

    現在工廠可以開工了?那你就錯了,因為我們還有一個至關重要的要素沒有加入,那就是時間。加入時間要素後,In-game cinematic pipeline和對應的Production schedule(生產計劃)會讓Producer千頭萬緒頭疼不已,如果沒有對應的經驗,在時間和預算上掉大坑幾乎是肯定的。

    IN-GAME CINEMATIC PRODUCTION
    遊戲引擎過場動畫的項目管理

    那麼接下來,我們就加入時間這個重要因素,來聊一下Cinematic pipeline在項目不同階段中的差異。

    從In-game cutscene製作過程的角度來看,可以簡單分為如下階段:

  • 劇本
  • 故事板
  • 動態分鏡
  • 動作捕捉
  • 導入遊戲
  • 劇本

    首先哦,其實劇本不屬於Cinematic pipeline的范疇。

    AAA的遊戲劇本一般都需要在Creative Director引領下由多個編劇人員合作完成,形式上跟好萊塢劇本很相似。很多AAA團隊也會請影視編劇過來一起完善劇本。如果沒有劇本,Cinematic相關的所有工作都無法進行。這個原理很簡單。不過一旦放到實際的開發環境下,就沒那麼簡單了。

    舉個我自己經歷過的例子,《Red Faction Armageddon》。整個項目的研發周期大概在3年多,進入Production之後不到1年,遊戲劇本在母公司介入的壓力下推翻重寫,硬是加入了整個系列都沒有過的異形設定,導致研發將之前所做的所有工作內容都拋棄掉,造成巨大浪費,然後不得不將大量的過場動畫外包為Pre-rendered形式了。

    所以哦,各位Cinematic Director和Producer,劇本就算控制不了,也要苦諫老闆,要不然最後吃不了兜著走……開個玩笑哦。

    故事板

    在編劇們努力寫劇本的時候,Cinematic team往往會聚在一起做風格調研,換句話來說,就是狂看電影,然後思考和總結。最後,大家會形成一份過場動畫電影風格指引文檔,對過場動畫中的鏡頭、節奏、技巧、表演等做一個方向性的規范。

    在劇本完成之後,准確的說是被綠燈通過之後,Cinematic team會收到完整的劇本和人物設定等,接下來比較常見的工作流程就是繪制故事板了。

    正常情況下的這個階段,大多數的遊戲內容都沒有完成,甚至還未開始,最多隻是有些基礎設定,比如人物原畫、場景氛圍圖等等。所以Cinematic team有機會根據劇本向其他部門預定一些額外內容,比如特別的車輛和槍械、特殊的場景布局等等。

    遊戲開發經驗分享丨有關即時演算過場動畫的管線設計和項目管理

    故事板過時了?

    故事板(Storyboard)是一個影視製作中常見的方法,它能相對快速的將文字劇本視覺化,讓研發人員直觀了解整個故事,明確key shot(關鍵鏡頭),同時在繪制的過程中幫助Cinematic Artist梳理整個場景的拍攝思路。這些都是它的優點。

    不過故事板有一個致命的缺陷,就是缺少跟時間相關的信息,比如至關重要的Pacing/Timing(節奏)。因此在現代化的遊戲製作流程中,故事板的貢獻其實越來越低。尤其是近十幾年,Pre-Viz(預示化)的盛行,使得越來越多的團隊選擇跳過故事板這個階段,直接進入Animatic(動態分鏡)的製作。

    動態分鏡

    動態分鏡(Animatic),是加入了時間因素動起來的故事板,包含了整個鏡頭序列關鍵的節奏。

    比較早期的動態分鏡實際上就是按時間順序的故事板,就跟幻燈片一樣。如果團隊願意花時間,可以直接自己演自己拍然後做一個粗剪,也可以用樂高或者粘土,用Stop Motion(定格動畫)的方式來製作。

    隨著3D軟體和Pre-Viz的流行,在影視製作中有很多專業工具很方便的製作3D的動態分鏡。不過在遊戲製作中,考慮到成本和Animatic素材後續的使用,往往會使用Maya、MotionBuilder、3ds Max這類在整個遊戲美術流程中通用的軟體來實現。

    遊戲開發經驗分享丨有關即時演算過場動畫的管線設計和項目管理

    PLACEHOLDER

    由於在動態分鏡階段,遊戲內的大量內容基本都沒做好甚至完全沒開工,這時候就需要大量的Placeholder(暫時占位內容)。Cinematic Team往往會從其他部門借來他們的過程文件,例如綁定的角色和車輛,甚至有時候也要自己做一些簡單的道具,比如槍械。

    在所有Placeholder中,場景布局(Environment Layout)非常重要。在這個環節,團隊需要跟關卡設計師(Level Designer)密切協調,確認Cutscene發生場景的Layout。關卡設計師往往會提供一個灰盒子(Greybox/Blockout),明確標示地面高低、門的位置等等,甚至會劃出一個專用區域給Cutscene然後鎖住,以免事後再做改動。尤其是在幾百人的團隊,如果這一點做得不好,可能等動捕數據回來之後,你會發現主角站立的位置多了個雕塑,甚至整個場景都沒了。

    臨時配音

    一般內部會找喜歡表演的Cinematic Artist或者動畫師來做臨時配音,因為他們在學校上過舞台表演課,會懂很多。

    具體工作

    除了收集各種Placeholder和臨時配音,Cinematic team在這個階段的主要工作就是根據之前定義的過場動畫電影風格指引文檔,來確認鏡頭、節奏、表演等,有的時候還要手動做一些簡單的動畫,如果條件允許,還可以進行動捕——不過只是為了製作Placeholder,不能作為最終的效果。

    雖然在流程圖里面列出的所需人員只有Cinematic Director和Cinematic Artist,但如果有條件,最好能讓Tech Artist進駐,開始搭建從3D軟體到遊戲引擎的管線。這樣一方面可以開始測試流程,另一方面在3D軟體中所製作的內容,在後期也可以被復用,而不是完全扔掉。

    動作捕捉

    動作捕捉(Motion Capture),在現在這個技術環境下更多是指表演捕捉(Performance Capture)。在很多The making of的電影或者遊戲開發揭秘視頻里,大家應該都見過滿臉貼著小點,穿著緊身衣的演員在做各種夸張動作。從管線的角度,Cutscene的動作捕捉需要幾個關鍵步驟。

  • Mocap Studio測試
  • 動捕資料准備
  • 動捕現場
  • 數據清理
  • 本文不是講怎麼做動作捕捉的,所以只會著重和In-game cinematic pipeline相關的內容。

    動捕資料准備

    准備動捕資料的目的,是確保演員准確的按照Animatic的安排來表演。除了提供給演員的劇本和動態分鏡,還需要准備:

  • 詳細的鏡頭表
  • 詳細的場景布局(Layout grid)以及所有關鍵點的位置
  • 提前准備好道具,或者記錄好實際尺寸以備現場搭建
  • 如果有,最好還有角色模型和場景的3D文件提供給Mocap Studio
  • 所有這一切的目的,就是要在動捕場地,精準的將3D Animatic里的場景布局重構出來。

    另外,這里面還涉及到演員和配音的一些問題。比如是通過中介機構來找好萊塢演員,還是找普通的動捕演員;是需要同期配音,還是去錄音棚……這些在每次去動捕之前,都需要協調好。

    遊戲開發經驗分享丨有關即時演算過場動畫的管線設計和項目管理

    動捕現場

    一般AAA體量的遊戲,動捕都需要分批多次完成。比如一次拍攝5天,然後分3-4次完成所有過場動畫的動捕。

    在動捕現場,Cinematic Team要承擔類似導演的角色,時間分配大概是這樣的:90%的時間坐在休息區喝咖啡,看手機,玩各種仿真槍械道具,等場景設置和設備調制完畢;5%的時間坐在顯示器前面看回放;5%的時間給演員說戲。有點夸張,不過大體也是如此。

    如果Cinematic Artist願意,也可以現場拿著攝像機來拍攝,來追求一種實拍的真實性。現在大多數專業動捕公司都可以做到將演員的動畫實時映射到一個3D場景內的遊戲人物上,對於Cinematic Artist來說,就好像是拿著攝影機在一個虛擬世界內拍攝。比如新戰神一鏡到底的拍攝,就是用這類在動捕現場手持拍攝的方式來實現的。

    因為新冠疫情,現在很多AAA公司都在家辦公,連動捕都可以不去現場了。在家里同時顯示現場4個角度的視頻,然後實時在3D場景內回放,通過Zoom來跟演員說戲。也許以後這會成為常態,還能節省成本。

    數據清理

    動捕公司每次動捕完畢後,會做基礎的清理工作,然後將數據發給研發團隊。研發團隊則需要花時間整理動畫數據,導入3D軟體,然後再花大量的時間調整。

    這部分除了鏡頭數據,人物數據往往是由動畫師在Cinematic Artist的指導下執行的,因為工作量巨大,只憑3-4個Cinematic Artist完全無法承擔。

    如果運氣好,這時候會有一些完成的遊戲內容可以替換原來的Placeholder。在這個階段,動態分鏡會變成包含人物和鏡頭的完整動畫,這時候所有的表演和節奏都已經確定了。

    遊戲開發經驗分享丨有關即時演算過場動畫的管線設計和項目管理

    導入遊戲階段

    之前的工作基本都是在3D軟體中進行的,而這一階段則跟遊戲引擎聯系密切,全程都需要Tech Artist的強力支持。

    如何設置合理的工具和流程,保持每個環節的靈活性,提高整個導入過程的效率,Tech Artist是這個階段是關鍵要素。

    遊戲開發經驗分享丨有關即時演算過場動畫的管線設計和項目管理

    PLACEHOLDER替換

    這個階段遊戲往往已經開發過半,一部分Placeholder內容的美術應該已經做完,尤其是關鍵的主角和劇情NPC,而場景美術也開始接手關卡設計師完成的關卡。因此Cinematic Artist和動畫師會在Tech Artist的協助下,將大量的Placeholder替換成最新美術內容。

    在這個階段,Tech Artist往往會做出很多便利的工具,力爭讓美術人員只是做少量的選取,然後點一個導入按鍵,就讓工具自動的替換/導入遊戲內容,有些工具甚至可以根據伺服器上的內容版本自動更新。考慮到AAA遊戲的體量,這種工具幾乎是必須的。

    這個階段最理想的狀態,是在3D軟體中看到整個過場動畫的全貌。但在實際項目中,所有的內容都會不停的更新,然後維護,直到項目結束。

    最後的佐料

    大多數情況下其他部門都是提供內容給Cinematic Team的,不過有幾個部門需要在過場動畫完成之後才加入最後的佐料,讓整道菜色香味俱全。

  • 燈光
  • 特效(Visual Effects)
  • UI效果
  • 配樂和音效
  • 配音
  • 其中,有些內容是在3D軟體中加入,有一些則是在後面提到的過場動畫編輯器中加入。

    從3D軟體導入遊戲

    這個階段,Tech Artist需要施展他的魔法,給Cinematic Team一個簡單的「Export「按鍵。

    理想情況下,只要在3D軟體中設置好所有內容,工具應該就可以將對應的內容分別輸出成為遊戲引擎可用的文件(場景相關文件、人物動畫、鏡頭動畫、特效動畫、燈光等等),而且這些文件之間需要相互匹配。

    而在實際的研發中,新情況會不斷出現,導入遊戲的工具和流程會動態更新,引擎內的過場動畫編輯器也在同時更新。所以這需要Cinematic Director開展極強的協調能力,配合遊戲引擎統籌整個導入過程。

    過場動畫編輯器

    在理想情況下,當所有內容導入遊戲之後,一切都應該完美匹配,可以直接播放。但由於遊戲開發沒有理想情況的,所以我們還是需要一個編輯器,來負責:

  • 確認從3D軟體導入的文件正確可用
  • 在遊戲內設置各種參數
  • 多角度預覽
  • 這個步驟極其關鍵。因為就算3D軟體中的素材再好,如果導入遊戲後無法正常同步播放所有內容,那就一切白搭。比如口型與配音可能在3D軟體中都很完美,但是到了遊戲中可能會因為幀數不穩定而不同步,這些都需要Tech Artist配合程序提供各種解決方案。

    過場編輯器也需要讓Cinematic Artist可以調整各種遊戲內參數,比如天氣狀況、路人AI等等。這里面可講的太多了,我會在後面的實戰分析中舉一些有趣的例子。而在In-game cutscene播放過程中提供暫停和多角度預覽功能,也是必不可少的。

    到這里,我們總算是聊完了加入時間要素的In-game cinematic pipeline流程。現在你仔細看下面這張圖,應該就很清晰了:

    遊戲開發經驗分享丨有關即時演算過場動畫的管線設計和項目管理

    管理者的責任

    但我需要再明確一個殘酷的事實,以上這些繁瑣的內容,只是單個過場動畫的製作流程。那麼一個AAA體量的開放世界遊戲會有多少過場動畫?我們可以簡單計算一下。

  • 整個遊戲的開場和結尾
  • 三條關鍵主線,每條主線12個任務,每個任務一個開場(Intro)一個結尾(Outro)
  • 30個支線任務,每個任務一個開場一個結尾
  • 一共134場過場動畫,就算每個過場都很短,平均45秒吧,一共100分鍾,這也基本是一個標準好萊塢電影(1個半小時)的長度了。

    復雜的管線,協同多個部門,管理長達100分鍾的過場動畫製作,而且還是需要極強Tech Artist支持的In-game cutscene……這一切對管理者真是很大的考驗。

    成本評估

    這點對於國內研發來講可能真的很難,因為需要對應經驗的積累。

    在項目初期,Cinematic Director或者Producer需要根據項目在過場動畫上的預期,將每個階段的工作進行拆分。拆分的越細致,就越容易評估每部分所需的時間和成本。

    對於沒有實際製作經驗的部分,則需要通過快速測試來粗略評估自己的團隊做這件小任務所需要的時間。同時,對於需要外部團隊(比如Mocap Studio)參與的部分,也需要盡早選定和安排。

    最後,在評估之上再加上50%的富餘量,才比較穩妥。按照筆者經驗,再此評估之上,實際遊戲開發過程中再往下砍掉20-30%的內容,會更現實。

    項目管理

    這部分跟其他模塊的項目管理一樣,只是一個在理解pipeline做完評估之後的實現過程。

    不過特別要說一點:選擇一個自由度很高的項目管理軟體非常重要。因為在項目管理中,各種Dependency(依賴關系)太多了,總是需要從其他部門更新其他內容的進展。

    說起來容易,做起來還是挺難的。《Just Cause 4》團隊在GDC 2019關於In-game cutscene的技術講座上說過這樣一句話:

    很難想像吧。一個成熟團隊在做同一個遊戲做了4代之後,遇到cinematic的需求升級之後,還會在項目管理上犯這麼大的錯誤,而帶來成本浪費和降低質量的問題。

    我前兩天在Reddit上還看到有人問「What’s your workflow for in-game 3D cutscenes?」,第一個回答也很有參考意義哦:

    開個玩笑。在這篇文章最後,我會分享一些實際項目中遇到的問題和解決方法,這部分會比較有趣。

    本來應該先講講有意思的內容給大家提提興趣,但是不講清楚pipeline,後面的內容再有趣也對研發沒有幫助的,感謝能熬著看到這里的讀者。

    實戰分析:在開放世界遊戲中做IN-GAME CUTSCENE

    開放世界遊戲 + 實時過場動畫 = ???

    大家都知道,AAA開放世界遊戲屬於最難開發的品類:投資大、周期長、技術難度高、參與人員多,遊戲自由度極高……而自由度高,也就意味不可控,因此In-game cutscene也存在很多風險。

    舉個例子,大家很肯定在網上看過《俠盜獵車手》的搞笑BUG視頻,明明是個嚴肅的過場動畫,結果從螢幕外面跑過來幾個警察沖主角狂揮拳。這邊拳頭完全穿透了主角的身體,那邊主角卻依然一臉嚴肅的說著台詞。

    那開放世界遊戲的哪些不確定因素,會對In-game cutscene造成影響呢?

  • 玩家自定義角色
  • 手持道具
  • 環境變化
  • 行人和車輛
  • 變化的天氣
  • 流逝的時間
  • 不同City/Terrain Chunk(區域地圖數據)的讀取
  • 多人遊戲
  • 筆者所經歷的開放世界遊戲項目中,有一部《黑街聖徒2》,「不幸」包含了所有這些不確定的因素。接下來我就做一些分享。

    結論:開放世界遊戲 + 實時過場動畫 = &#$^%~*&!!!

    玩家自定義角色

    現在自定義角色已經成了大多數遊戲的標配,就算角色自身不能變化,至少也可以更換服裝和飾品。

    於是當玩家可以自定義性別、胖瘦、高矮的時候,過場動畫也一下子多出了3個維度。

    性別

    當玩家可以在遊戲中扮演不同性別角色的時候,所有動畫都需要至少男女各一套;在動捕的時候,也需要男女2位演員分別進行動捕。

    在過場動畫中,很多情況下玩家角色會跟其他NPC互動。為了減少整體工作量,在動捕的時候,扮演玩家角色的男女演員可以分成一主一次。主演員會跟NPC的演員互動,比如拉手、搏鬥等;而次演員則會在旁邊幾步距離的位置,用自己的表演同步主演員的動作,就好像是一個克隆體一樣。這個對動捕演員的要求還挺高的。不過就算同步得再好,也需要在後期修改動畫的時候做很多調整,才能讓次演員的表演跟劇情角色的互動真的貼切。

    遊戲開發經驗分享丨有關即時演算過場動畫的管線設計和項目管理

    胖瘦

    玩家角色的胖瘦對過場動畫的影響主要是在攝像機的取景上,過胖的角色可能在某些鏡頭遮擋住關鍵內容。所以在3D軟體和Cinematic Editor里面,需要Tech Artist提供一個胖瘦檢查功能,以快速切換最胖和最瘦的角色外觀,幫助Cinematic Artist來調整攝像機的取景。

    另外需要注意的還有軀幹部位跟其他任何內容的接觸。比如兩個人擁抱的時候,胖的角色會跟NPC身體穿插,而瘦的玩家角色則會被抱空。類似這種問題一般都要通過鏡頭來避免,比如用中景表現兩個人相互擁抱的手臂張開動作,給玩家一個兩個人要擁抱的暗示,然後切換到肩膀以上的近景,避免拍攝到容易出問題的軀幹部分。

    高矮

    能夠自定義高矮的遊戲並不多,因為太麻煩了。因為坐下、拾取物品、進出駕駛艙等動作很難適配不同高度的角色。

    很多能自定義高矮的遊戲都會採用一個臨時縮放的偷懶竅門,比如2米高的角色在坐進車里的時候,會被自動縮到1米8以避免各種穿幫,然後再用鏡頭來掩蓋這個縮放的過程。

    而在過場動畫中,如果玩家角色的高矮差距過大,最簡單的處理方式就是在過場動畫中使用標準身高的角色。如果有特別明顯的對比,比如跟NPC並排站立的情況,則會在Cinematic Editor里面,單獨設置在那個鏡頭里人物是否保持原有高度。

    在項目早期,如果明確知道遊戲能夠設置人物高矮,最簡單有效的辦法還是避免這種中遠景對比的情況,並在遊戲初期的過場動畫電影風格指引文檔 里明確說明。

    衣服和裝飾

    主要是指附著在玩家角色身上的各種內容,包括手里拿的、身上穿的、頭上戴的、腳下踩的等等。

    手持道具

    主要是各種武器。一般過場動畫里玩家角色所使用的武器都是遊戲初期預設的基礎武器,比如基礎手槍、步槍,從而避免跟玩家實際擁有的武器產生大的偏差。

    脫脫穿穿的高跟鞋

    在所有服飾中,高跟鞋是女性角色必須有但是很麻煩的東西,因為它能改變人物高度。所以在有些產品里,角色就算穿了高跟鞋也不會增高。

    舉個例子,玩家角色從桌子上撿起一把槍,需要桌子高度、桌子上平放的槍、人物高度(也就是手的位置)都在動畫中匹配。如果動畫是按照穿平底鞋的角色來做的,當玩家角色穿上高跟鞋,那人物高度(也就是手的高度)會比桌子上的槍高出一個高跟鞋的高度。

    在這種情況下,需要在Cinematic Editor里面對每個鏡頭提供一個高跟鞋開關,然後根據每個鏡頭來設置。比如在製作上面這個撿槍鏡頭的時候,就要把高跟鞋開關關上。而下一個鏡頭如果是人物拿著槍在地板上走動的遠景,則要再把高跟鞋開關給打開。

    這時候你肯定要問,如果一個遠景鏡頭可以看到玩家的腳,然後玩家又從地面把槍撿起來,那該怎麼處理?答案很簡單:別做這樣的鏡頭呀,必須用鏡頭切換來避免這種情況。

    在In-game cutscene里,鏡頭的選擇除了跟電影語言相關,很大程度上也會受到各種技術因素的制約。從這點上看,Cinematic Artist對遊戲引擎和技術限制必須有一定的了解。

    環境控制

    大多數開放世界遊戲中的過場動畫都是在遊戲場景內播放的,所以在過場動畫播放的過程中,環境需要被有效控制。

    車輛和路人

    在室外場景中,角色免不了跟遊戲內的車輛和路人產生衝突。所以需要在過場動畫的場景范圍內,設置一個不可被干擾的區域。在過場動畫開始的時候,所有在這個區域內的的車輛和路人都需要被清除掉,而且在過場動畫播放中,遊戲內由AI控制的車輛和路人也不可以走進這個區域。

    這還不算完。在《俠盜獵車手》這類遊戲中,如果在過場動畫播放之前你激怒了警察或者幫派,警察和幫派成員就會來不停圍剿你。就算你設置了不可被干擾區域,他們也會在圍在整個方形區域外面一直沖你射擊。所以,還要將玩家角色設置為無法被定義為攻擊目標。

    這樣的細節設定其實還挺多,它們的原理都很基礎,但你還是會在很多AAA遊戲中看到這類問題。是因為開發人員想不到麼?肯定不是。原因是經驗和時間成本。很多團隊在項目後期的QA階段才會發現這種問題,而這時大家都在拚命修更重要的bug,沒有時間修這類優先級相對低一些的bug。但如果Cinematic Pipeline的負責人很有經驗,在項目初期就可以提前避免這種情況。

    天氣

    跟上面的車輛和路人控制類似,如果一個場景在下瓢潑大雨,但在過場動畫中兩個角色在瓢潑大雨下跟沒事人一樣的聊天,這就很違和了。但如果在播放過場動畫的時候讓雨立刻停止,一切又會顯得很突兀。

    這時我們一般有兩種處理方法,要麼在過場動畫開始的時候,用第一個鏡頭顯示環境而不是人物,讓天氣有自然變化的時間;要麼簡單粗暴的加入一個黑屏過渡。

    相比進入過場動畫,從過場動畫回到遊戲就簡單很多。現在很多遊戲都喜歡將最後一個鏡頭,隨著上下Letterbox(寬屏與電影寬屏的影像轉成標準尺寸時上下會出現黑邊,這被稱為「信箱模式」)移出螢幕,緩緩移動到遊戲攝像機的位置,讓玩家自然的回到遊戲本身。

    可破壞場景

    我曾經做過一個《Red Faction》系列的開放世界遊戲,這個系列的賣點就是基於物理運算的、不可預期的場景破壞,這就給過場動畫帶來更多的麻煩。

    第一種情況是關鍵建築是否還存在的問題。比如在過場動畫里,玩家和角色站在一座塔上,但這座塔早就在之前的遊戲中被撞倒砸爛了,你該怎麼辦?穩妥的做法,是提早跟遊戲設計師和關卡設計師溝通,明確風險。其中最好的辦法,是通過遊戲流程來避免這種極端情況出現,比如通過各種限制不讓玩家提前探索到這個區域。

    更常見的情況是,不可預期的場景破壞碎片,會在過場動畫中遮擋攝像機、跟人物動畫穿插等等。這需要在過場動畫開始的時候,將場景里一個區域內的所有碎片都清理掉,然後替換成過場動畫提前設置好的碎片,利用這些碎片外形和貼圖的相似性來欺騙玩家,讓玩家以為過場動畫的確是發生在自己剛剛毀壞的場景里。

    這里有一個技巧就是盡量使用中近景鏡頭,把視覺重點放在角色上面,避免展示過多的環境,不然玩家還是很容易產生疑問:「哦,剛才那堵牆不是還剩一半麼?現在怎麼都倒了?」

    燈光系統

    不管現在遊戲畫面進化到多麼好,燈光師都是在戴著鐐銬跳舞,因為在遊戲中可用的燈光總是不夠用。

    因此,Cinematic Editor需要提供一系列功能,讓燈光師將有限數量的燈光發揮出最大的作用。下面這4個部分都能讓燈光系統更加靈活,不過工作量也會隨之暴增:

  • 針對物體的包含(Include)和不包含(Exclude)功能
  • 按鏡頭來設置燈光
  • Time of day
  • 玩家自定義角色的膚色
  • 針對物體的包含(INCLUDE)和不包含(EXCLUDE)功能,即提供一系列的選項,讓燈光師可以對每一盞燈所影響的物體做選擇。

    以燈光為中心:

  • 是否影響某類物品,比如人物、車輛、場景、特效等等。
  • 是否影響某個物品,比如隻影響人物A,但是不影響人物B。
  • 是否對某類物品產生投影
  • 是否對某個物品產生投影
  • 而這種選擇也可以是反相設置的,以物品為中心:
  • 是否能被某盞燈影響
  • 是否對某盞燈會產生投影
  • 是否會接受投影
  • 只有Cinematic Editor具備了這些功能,燈光師才能在有限的燈光和渲染機制下,將畫面推向更好。

    按鏡頭來設置燈光

    燈光的數量、范圍、精緻程度、重疊程度都會直接影響幀數。考慮到鏡頭設置不同,每個鏡頭所包含的3D內容也有很大不同,因此Cinematic Editor必須支持以鏡頭為單位來設置燈光。

    之前我經歷過一個項目,為了保證幀數,每個鏡頭同時存在的燈光數量不能超過12。所以如何在每個鏡頭內活用這12盞燈就顯得非常重要。如果是人物近景,可以將多數燈光用在人物和道具上;而如果是遠景,則需要將多數燈光在場景照明上。這個時候就要考驗燈光師對技術限制和藝術追求的平衡了。

    筆者做過一個中景鏡頭,玩家角色扔一串鑰匙給NPC,鑰匙串體積太小,在中景很難看清楚,於是專門給鑰匙串打了一盞燈,增加了足夠的亮度和反光,讓鑰匙串在空中飛的過程更明顯的更容易被看到。貼圖和Shader上的不足也可以用燈光來彌補。

    按鏡頭來打光,可以極大提高In-game cutscene的視覺效果,但它的工作量也跟鏡頭數量有關。

    TIME OF DAY

    這是指很多開放世界遊戲會分成清晨、中午、傍晚、深夜等不同的時段,它的畫面也會受到時間的影響。

    為了讓過場動畫符合當下的Time of day,室外過場動畫的燈光起碼要分4組,對應剛才說過的清晨、中午、傍晚和深夜。而Cinematic Editor則會分別提供設置或者繼承的功能,方便燈光師操作。

    這個事情不是很復雜,但是為了達到跟遊戲內統一的感受,工作量直接乘了4倍,很難評價是否值得。有些遊戲則會直接做一個時間流逝的畫面,比如鏡頭沖天看天色變換,到了指定時間再才開始做過場動畫,這也算是一個不錯的「偷懶」辦法。

    不同人種的皮膚

    當玩家可以自定義人種和皮膚顏色的時候,將不同膚色的玩家放到同樣的光照環境下總是會有問題,不是淺色皮膚泛白得厲害,就是黑色皮膚過深看不到細節。因此,Cinematic Editor也應該有對應不同膚色的燈光設定功能。

    在自由度很高的開放世界遊戲里,如果想認真處理過場動畫中的燈光,往往要花費(針對物體的Include和Exclude x 鏡頭數量 x Time of day數量 x 人種膚色數量)這麼多倍的工作,才能在多種情況都具備一個基本的水準。

    開放世界的動態加載地圖

    開放世界的一個特色是無縫地圖,也就是在第一次loading進入遊戲後,很少會再次loading,讓玩家在整個世界中不間斷的遊玩。這是通過動態加載局部地圖來實現的。

    因此,如果在過場動畫中出現地點變化,就需要精心計劃地圖的動態加載。

    多場景切換

    舉個例子,一個過場動畫,在城市北端的火車站外有幾個鏡頭,然後切換到城市的南端的農場再來幾個鏡頭。在這種情況下,需要首先釋放在火車站場景看不到的但之前已經加載過的無用局部地圖;而且火車站的鏡頭要足夠長,這樣後台才能完成農場地圖的加載。不然當過場動畫切換到農場的時候,玩家會先看到懸空的人物在表演,隨後看到局部地圖一點一點的在畫面上冒出來。

    怎麼樣,這個畫面是不是很熟悉?很多AAA開放世界遊戲的過場動畫或多或少都會出現這種問題,這就是在安排過場動畫的時候沒考慮到動態地圖的加載時間。有的bug可以通過後期優化修復,有的可能就無法修復了。

    橫穿城市的輕軌列車

    再給大家舉一個極限例子,也是本人處理過的,最復雜的動態加載地圖的過場動畫。

    這個場景發生在一列橫穿3個局部地圖(City chunk)的輕軌列車內。這其實是一個室內場景,但它要在3個City Chunks間移動,而且通過車窗可以看到很遠的城市背景和海中的小島。

    在處理中,我需要預留第二個和第三個City Chunk的讀取時間,而且還不能讓鏡頭看到讀取的過程,不然玩家就會發現低清晰度(LODs)的建築被逐步替換成了高清晰度的建築。

    所以最後整個City Chunk的讀取過程,是嚴格的按照鏡頭來劃分的:從第幾個鏡頭開始釋放哪個City Chunk,又需要用幾個鏡頭的時間來讀取下下個City Chunk。中途遇到解決不了的地方,則要靠鏡頭來遮掩。

    另外在夜景之下,曲折的輕軌線路兩側還一直有路燈,所以我還需要沿著輕軌路線,對能覆蓋車廂本身的路燈開開關關……整個過場就好像是在解決一個puzzle遊戲。

    支線任務的過場動畫

    由於In-game cutscene是一個復雜而且需要大量人力和時間來製作的項目。因此在預算和人員有限的情況下,大家大部分的精力會放在主線任務的過場動畫上。而對於AAA開放世界遊戲中數量眾多的支線任務(Side Quest或者Activity),我們會採用一些自動化手段來節省成本和時間。

    支線任務過場動畫的目的主要是交代任務內容和解釋任務結果,大多數是由簡單的對話構成,以2、3個人物的演出為多。所以很多AAA遊戲會構建一個特別的編輯器,包含基礎模版和很多預設內容,來快速的產出支線任務的過場動畫。

    預設舞台

    支線任務過場動畫發生的地方都很簡單,只要在發生的地點找一塊開闊地,再放置基礎模版即可。基礎模版會包括我們之前提到的各種環境控制。

    預設表演

    放置好基礎模版之後,可以在預定的幾個位置上放置玩家角色和NPC,再根據劇情選擇合適的預設動畫。比如讓玩家角色走過來還是跑過來,NPC是坐著還是站著,是生氣還是高興的說話等。

    一般模版內會有很多類似的循環動畫,它們的表演肯定不如單獨動捕的自然,不過也還湊合。很多AAA大作也都是這樣來「偷懶」的。

    自動鏡頭切換

    設置好了基礎的人物位置和動畫,就需要設計攝像機了。一般基礎模版會包含幾十上百個預設機位,可以先自動生成一個鏡頭序列,然後再挑出不滿意的地方,從機位列表中選擇更好的機位。

    自動生成口型

    最後可以根據配音自動生成口型,不過臉部表情很難控制。所以這種用模版生成的支線任務過場動畫,一般都很少使用近景鏡頭,避免人物表情和口型被看的太清楚。

    有些AAA遊戲的支線任務過場動畫人物站樁,表情僵硬,就是因為使用這類方法來製作。但他們錯誤地使用了近景,一直讓攝像機對著說話角色的臉部,結果就放大了弱點。

    結語

    寫到這里,有一種「終於寫完了」的感覺。

    想將In-game cinematic的pipeline和多個項目的經驗濃縮到一篇文章,實則是個不可能的任務,因此很多內容也都沒有提及。只希望這篇略顯枯燥的專業文章,對國內研發同行有些幫助,能引發些思考,在項目上少趟一些坑,我就很是欣慰了。

    能看到此處的讀者,想必跟我是一個感覺:休息,休息一下吧。

    來源:機核