這篇文章將會講述設計與製作一款第三人稱控制器所需要的工具、要素之概述。
我目前的畢製專題是第三人稱動作射擊遊戲,在大學尾聲的畢業專題,將會統整與驗收四年所學並製作成作品。因為進入畢製,學習並撰寫成文章的時間驟降,在思考應該撰寫怎樣的文章時,我想到了第三人稱控制器的設計與製作。
依據我大學三年的經歷,網路上這方面的學習資源較少,針對新人遊戲設計師或大學畢業製作來說:拼湊的知識要麼太雜;要麼太細。若不想挖 Unity API 的文檔,就只能直接摸索編輯器,或在各個影片中找參考。
這還不包含設計,僅製作層面的技術內容就會侵蝕大多數的時間。第三人稱控制器的系列文章,主要目的是藉由「我」製作畢製專題的經歷,讓後人少走一些彎路;快速的帶領讀者走到允許設計的程度,無論是大一新生或大四抓速成教學的讀者;遊戲製作新人或想學習遊戲設計的朋友,都歡迎繼續閱讀這系列的文章。
第三人稱遊戲的特色,就是玩家能直接看到角色。第三人稱的視角觀看並操控這個角色,相較於第一人稱的遊戲,有更多關於主角的資訊與想像依據,能協助玩家理解遊戲的世界觀,也更能與遊戲中的角色共鳴。
遊戲的資訊含量,決定了一款遊戲的節奏;不同的鏡頭帶給玩家不同視覺語言,其中包含的資訊與體驗會截然不同。鏡頭設計是容易被忽視的設計,某些遊戲設計師會認為鏡頭能用就好,但其實鏡頭是初期設計最難也最重要的環節。
遊戲類型與操作手感塑造了遊戲特色,當遊戲設計師在設計遊戲的控制器時,都繞不開控制系統:一種是完全由設計師掌控的角色控制器(CharacterController);另一種是藉由物理系統間接控制的剛體(Rigid body)。
遊戲中角色的動畫分為兩種體系與一種工具,第一種體系是角色程式與角色動畫分開,是較為常見的動畫撰寫體系;另一種體系是由角色動畫帶動角色移動,我目前沒有看過相關競品,但我同學是使用這種體系的團隊。
在 Unity 中,還有一種工具能協助設計師測試動畫或製作概念動畫,這是一個名為時間軸(Time line)的電影序列製作工具。
《Unity | Time line 實戰-概念動畫與打擊感》
在遊戲控制器,介面是一種比較特別的元素,它更偏向於遊戲設計師如何藉由數據或視覺來引導玩家,偏向企劃與設計的領域。介面的覆蓋量會影響玩家的沉浸感,越需要玩家感同身受的時候,介面通常會很少,甚至暫時消失乾淨。
介面分為靜態與動態,靜態的介面使用 Canva 與其下眾多組件,是一種常見的介面手段;動態的介面使用 Camera 覆蓋在主介面上,添加特效能營造出速度線或螢幕邊框被凍結的效果。
畢竟是隔著一個世界觀測與操控,遊戲需要額外的手段傳遞資訊,特效是其中一個最讓人有印象的一個元素,畢竟帥。特效是控制器一個重要的體驗回饋,例如飛踢通常會添加衝擊波或風力的特效,讓空氣擾動與打擊感的資訊回饋給玩家。
無論任何遊戲,特效分為兩種工具:第一種是粒子特效(Particle System)、另一種是視覺特效(Visual Effect Graph);前者較為簡單,後者較為複雜。
遊戲的音效跟音樂都是使用聲音資源(Audio Source)。其中音效會需要調整聲音資源的模式,隨著距離遠近影響聲音大小。音效來源通常分為自行錄製、免費素材、付費素材等管道。
遊戲的音效跟音樂都是使用聲音資源(Audio Source)。音樂來源通常分為自行錄製、免費素材、付費素材等管道。無論是音樂還是音效都要注意著作財產的問題,是否能商用會決定未來上架的狀況。
控制器的雕琢,如果是動作遊戲還會有子彈時間這一塊,當我們攻擊敵人或衝擊敵人時,時間會減緩很多甚至暫停,營造出打擊的阻滯感。若無插件,通常是用程式去撰寫子彈時間,關鍵字是 Time.ScaleTime 與 Time.UnScaleTime。
《Unity C# | timeScale & unscaledTime》
撰寫這篇文章花了我很多時間,寫完發現很多東西其實跟第三人稱沒特別關係,都是眾多遊戲通用的內容,不過未來我就會依據這些項目逐步撰寫新的文章,細節就會跟第三人稱控制器有關係了。