Unity首款遊戲《Gigaya》劃重點!創作團隊親述創作歷程
本文首發“ Unity官方平臺”公眾號
近期,我們正式向大家介紹了由 Unity 研發的首款遊戲《Gigaya》。該遊戲目前仍處於開發階段,在開發完成後,遊戲本體包括其資產和原始碼都將免費向所有 Unity 使用者開放下載和體驗。Steam 玩家也能從 Steam 商店免費下載遊戲。
《Gigaya》專案的重點並非某個特定功能或產品,而是全面瞭解廣大創作者的需求,改進 Unity 生態系統以惠及所有從業人員。雖然該遊戲尚未面世,但是我們已經針對一些問題制定了有趣的解決方案,比如製作新工具或使用替代技術來解決開發難點。
《Gigaya》在開發過程中著眼於三大重點:趣味的遊戲玩法、沉浸式的世界和遊戲發行。讓我們跟著創作團隊一起來看看《Gigaya》的開發幕後。
趣味的遊戲玩法
在遊戲玩法方面,我們著力挖掘出趣味性,而其中的重點在於團隊內部的通力合作和交流,創造出有趣的角色原型。這個過程依賴於需要快速迭代遊戲原型,摒棄無效的理念。
《Gigaya》的高階角色美術師 Juan Puerta 講解了探索遊戲趣味玩法的過程。
Juan:大家好,我是此專案的高階角色美術師 Juan Puerta,主要負責製作角色。我會向大家介紹我們在製作的角色中的經驗。
首先,我想說創作一個遊戲角色是極具挑戰性的,這一點大家應該感同身受。這個過程需要很多人的共同參與,在細節上反覆推敲。
以我們的主角 Wondu 為例,最開始的時候我毫無頭緒,所以嘗試了很多不同的設計,直到設計出了一個我覺得很有趣的形象。然後我就立即向團隊成員展示了這個角色,然後逐步給他增加了紋理、簡單的動畫,大家反響很好。整個團隊從一開始就全體參與,開了很多場會,討論是否要給他配一把槍、是否要賦予他某種能力,以及我們該如何實現這些功能。
確定創意方向的過程十分耗時,雖然每次討論的都是一些細節,但是這些細節與遊戲玩法設計息息相關,需要反覆推敲。我一共做了 4 個版本的 Wondu,相當於 4 個可用於遊戲的角色。
很感謝與我協助角色製作的主管,他鼓勵我勇往直前,嘗試以往絕不會選擇的方向,比如使用更鮮亮新穎的顏色,這些嘗試最終得到了團隊成員的認可。
接下來就是將角色拖放到 Unity 中,我把 Wondu 先拖入了 Substance,發現效果不錯,然後我把它置入了 Unity。此時我面臨的主要問題在於,無法建立著色器,畢竟我是一名美術,而著色器的開發依賴於程式。
我們團隊的 Ciro 主動聯絡了我,說他們製作了著色器檢視工具。這個工具簡直是太棒了,我彷彿化身為程式設計師,自己就能建立專屬著色器。這幫我節省了大量時間,讓我能夠專注於自己的工作。
我利用這個著色器先後建立了皮膚、頭髮著色器,可以靈活調整並且自由嘗試不同的模式。使用頭髮著色器,我不僅可以調整發色,還能夠了解角色在移動時,光線對髮色的影響,從而在遊戲照明條件下找到最理想的效果。諸如此類,這個工具實在是幫了大忙。
當然,作為一個美術,它背後的執行邏輯我一竅不通。在《Gigaya》的製作過程中,程式開發的工具對我很有幫助,程式的工具加上美術的設計,大大提高了角色原型的創作。
接下來我想展示一下 Wondu 在遊戲中的勁敵,也是一個很棒的模型。打造它的過程中,我試用了團隊研發的 LookDev 程式。在我製作這個模型的時候,他們在同步研發 LookDev,所以就讓我試用一下。
試用體驗讓我非常驚訝,因為用起來實在太棒了。在這個程式中,我只需拖放然後新增材料,就能讓角色動起來。這是我工作流程中的重要環節,因為我需要以儘可能理想的方式向創意主管展示我製作的角色。
有一次為了演示,我拜託同事 Jason 製作了一段動畫。我把他製作的動畫新增到程式中,拖入角色,然後角色就動了起來。
這對我來說實在太神奇了,無需繁瑣的步驟就能做出這麼精良的動畫效果,我還可以檢視其中的光照設定,確保角色在任意光線下的效果都很好。
沉浸式的遊戲世界
建立好角色後,我們還需要給 Wondu 建立一個世界,讓他能在其中展開精彩的探險。
打造遊戲世界的重點不一定是製作效果絕佳的圖形或精美無比的環境,重點在於打造生動自然的沉浸式世界。在這個世界裡,一切都是生動自然的,草地、樹葉、機械,以及它們與角色間的互動,這些細節會讓玩家愛上游戲並沉浸其中。
Juan:我們希望打造一個極具沉浸感的遊戲世界,即便角色不在其中時,這個世界本身也生機盎然。我們一開始研究了大量影像,接著制定了一些概念,團隊內部也開了很多會,大家都努力想做出獨具個性的遊戲。
要營造沉浸式體驗,遊戲世界必須保持統一且合情合理,不能在其中隨意新增元素。因此我們製作了美術指南,明確了各種規則,所有的設計需要遵守一定的規則。有了這份指南,大家就能更輕鬆地朝著同一個方向前進,而不是毫無目的地隨意發揮。
我們是個小型團隊,團隊中只有 2 位環境美術師,他們建立了一個彙集不同資源的精美資源庫。只需要將不同資源組合起來,就可以搭建起一個世界,這個過程就像是在拼樂高,非常有趣。
大家在螢幕上看到的這些結構,它們彼此毫無關係,但基本上是用相同的資訊製成的,資源庫對整個專案幫助很大。
角色有了,靜態的世界有了,該如何讓遊戲中所有的事物都動起來呢?接下來就是程式的主場了。
Ciro:大家好,我叫 Ciro Continisio,是本專案的技術主管。我們也是個小團隊,現在共有 5 位程式設計師。
我們的主要挑戰是將 Juan 剛剛介紹的所有內容,在技術層面讓它們成為現實。
先從角色講起,專案初期做出的決策之一就是使用物理角色控制器,我們希望 Wondu 融入遊戲世界,並非僅僅是一個四處移動的膠囊碰撞體,而是一個能影響遊戲世界並被遊戲世界所影響的角色。
我們的程式設計師 Andy Touch 很快就開發出了控制器,接著要將它與動畫匹配起來。我們和 Juan 剛剛提到的動畫師 Jason 共同進行開發,他為各個傾斜度建立了不同的工作週期,我記得他建立了 4 個週期,還為靜止狀態單獨建立了 1 個週期,然後讓它們彼此融合,這是個很有趣的方法。因為我們其實並未選擇反向動力學,雖然它顯然是一個更合乎邏輯的解決方案,但是動畫師 Jason 覺得反向動力學會略微削弱作品的表達力。
沉浸感的另一個重要方面是音效,如果 Wondu 在不同表面行走時,發出了不恰當的聲音,就會讓玩家“跳戲”。因此我們的程式設計師 Amel 開發了一個小工具,它能附著在渲染材料表面,新增 1 個我們稱之為物質型別(Substance Type)的欄位。它的主要功能是定義材料表面的型別,然後再向下計算,根據表面播放適當的音效。
植被顯然是遊戲世界中的另一重要部分,因此技術美術師們確保了所有植被都能與角色進行互動。可以看到當 Wondu 在草地上行走時,草會彎折,這對營造沉浸感至關重要,不僅是為了視覺上的美觀,也是為了讓人感覺他真的身處遊戲世界,讓人覺得他的確與這個世界融為一體。
他們用了些小技巧,大家可能都有所瞭解,比如根據角色位置,移動頂點位置;還用蒙版,在角色周圍建立類球體,從而向外推動頂點……
沉浸感的另一個重要組成部分是我們使用的粒子,我們可以在 Unity 中使用各種技巧和工具,Wondu 在助推器中使用混合 Shuriken 粒子,此外還有很多其他粒子。
水也是重要元素,它形成了地面上的綠洲,我們在此使用了 Unity 技術美術師 Andre McGrail 親手製作的自定義著色器。
他做了個帶 Gerstner 波浪的著色器,其中也包含漂浮物件,它們會因推力而上下浮動。它們其實是遊戲物件,其中所含的剛體推動 Wondu 上下浮動,這就形成了閉環。這不僅是為了呈現視覺效果,而是迴歸角色並影響角色,我們會看到角色以真實的狀態移動。
遊戲中當然還有各種生物,我們製作了幾種野生生物,比如頭野獸形似豬獾,它力大無窮,能把 Wondu 推開;還有像松鼠的齧齒類生物,他們怕人,遇到 Wondu 就會躲。
要讓角色移動起來,我們必須選擇如何移動,我在專案初期決定使用狀態機。除了很優秀的動畫外,我們還利用狀態機以有趣的方式融合不同行為,玩家難以察覺其中的過渡,Unity 利用狀態機制定了解決方案。
我利用狀態機以視覺化的方式處理複雜的敵人,從而輕鬆理解其結構。其實你會發現狀態機的重點並非狀態本身,而是狀態間的過渡。如有必要,你可以從任意狀態過渡至任意狀態,因為這就是生物的行為方式。無需預先設定好的行為流,而是能瞬間轉至下一個行為,可以看到這些狀態間有很多連線,狀態機有助於我以視覺化的方式理解並控制這些聯絡。
在狀態內部,我同樣選擇儘可能少用一般本地節點,僅將它們用於計時器和隨機性,還有 if 等邏輯語句。我基本上是在賭這個方法會起效。
我選擇將所有元素都包含在程式碼中,然後使用公共函式,公共函式會生成節點,這樣我就可以用這些節點在狀態機中建立行為。但它其實是程式碼,所以我隨時都能返回程式碼,修改並改進程式碼,我覺得這也會讓程式變得更穩定些。因為現在一切元素都包含在程式碼中,這就大幅降低了出現失誤以及狀態機發生故障的概率,讓我們能快速推進工作。
如果工具能加快你的工作速度,你就有餘裕犯更多錯,做出更多嘗試並剔除更多無效內容。我認為這是打造優秀遊戲的首要關鍵,重點在於精簡,而非盲目給遊戲新增更多內容。
為了讓角色動起來,我決定使用 NavMesh。人們通常將 NavMesh 視作偏固定的解決方案,但只要用幾個小技巧就可以讓角色依舊保持真實自然的狀態。
我們選擇了這個目前處於實驗狀態的軟體包,Unity 製作的人工智慧導航(AI Navigation)有了這款工具,我們就無需使用 1 個巨大的 NavMesh,而是可以將 NavMesh 作為遊戲物件,這樣就能將它們四處移動。
這個功能極其實用,因為我們甚至可以將 NavMesh 拖至吊車上。吊車是遊戲中的旋轉結構,這樣 NavMesh 就可以隨吊車移動,我們可以讓這些會飛的敵人繞吊車飛行,同時讓它們保持在 NavMesh 的覆蓋範圍內,一切都自然整合為一體。
我們還製作了一個自定義 NavMesh 碰撞平面,我在 Polybrush 中建立了這些物件,給它們建了模,將所有屋頂連了起來,然後烘焙了 1 個 NavMesh,令會飛的敵人停留在空中.
我覺得最終效果很贊,它們總會棲停在這些高杆上,接著它們會起飛,飛入開放空間。但其實它們仍在 NavMesh 的覆蓋範圍內,它們會稍微上下盤旋一會兒,看上去彷彿漂在空中,十分真實自然,同時也很穩定可靠。每當美術團隊想變更環境,我只需點選烘焙,Unity 會自動處理邊界情況,這個功能特別棒。
我們還做了些造型像蟹的野生動物,我稱它們為 Chinchinllas。它們也在狀態機中,原理十分簡單,它們會四處爬動,當 Wondu 靠近時它們會逃回我稱為避難所的地點。關卡設計師可將此地點置於地圖上的任意位置,只要在 NavMesh 上就行了。
遊戲效果相當好,當你遊戲中打鬥、跳躍、做任務時,這些野生動物會對你的行為做出反應。這種行為雖極其簡單,但能讓你更深切地感受到遊戲世界的生機,我的介紹大致到此結束。
以上就是我要講的全部內容,接下來將由 Ben 介紹我們的第 3 個支柱,即發行。
遊戲發行
遊戲發行的重點在於明確遊戲開發週期,整體流程中的痛點,開發人員通常能用 Unity 製作出優秀的遊戲,隨之而來的挑戰在於如何讓玩家體驗遊戲。過去,我們在推廣普及遊戲開發方面表現出色,如今我們想更進一步,為大家提供全生命週期的幫助。
Ben:我知道發行是很多人都會經歷的棘手部分,它對我們也十分重要,我首先想說明一下我們為什麼要正式發行這個專案。
大概一年多以前,《Gigaya》專案正式啟動,許多成員都來自別的組,開發目標也不一樣,比如讓更多人下載某種工具,或者增加某條視訊的點選量……設定目標並沒有錯,實際上這提升了我們技術開發的速度,但也帶來了新的挑戰。如果團隊或個人專注於實現某個想法,視野就難免變窄,過於集中在一點就會失去大局觀。
在座的各位應該都是開發者,我相信你們在工作中肯定遇到過這種問題,有了好想法就在上面花了過多時間。我們也犯過這種錯。
如果你的團隊給力,或者製作人懂行,那他們也許會及時把團隊拉回遊戲開發;又或者,他們覺得這個功能真的很棒,願意再給你一點研發時間進行深入探索。
就我們團隊來說,最重要的目的就是把遊戲做出來正式發行。要達成這個目標,首先得組建團隊。
正如大家所見,我們團隊裡的崗位和職責跟一箇中小型遊戲工作室的配置一致,我們的運營方式也和其他工作室一樣。但在 Unity 內部,我們的運營方式還是獨一份,團隊建立之初大家都非常激動,我們的任務就是做一些能真正幫助到使用者的實事。
問題慢慢地演變成了想法,想法則引發了討論,討論後自然要用實驗來驗證,驗證出的答案 也不完全都是成功案例,就像 Ciro 說的失敗是常事。只要迭代夠快,我們就能找到較為正確的解法。
很多人都覺得我們做的是樣本遊戲分發給開發者們,幫助大家掌握其中要點並應用到自己的專案裡,但這充其量只是《Gigaya》專案的副產品。
我們希望更深入地理解各位開發的需求,切身體驗大家的工作流程。新工具和新功能確實很吸引人,但我們要牢記遊戲開發的本質,呈現最好看的圖形效果或者達到最佳效能只是其中的一個目的。更重要的是,遊戲開發是一種人文體驗,過程中滿是各種創造性的試驗,不管你最後創造出了什麼,無論成功還是失敗,這個過程和技術一樣重要。因此,我們希望通過這次的試驗,爭取讓大家的擔子輕一點。
親歷了這段旅程之後,我們對自身的優缺點有了更深刻的理解,也把相關的反饋直接推給了功能開發團隊,希望能給他們提供一些技術角度之外的視角,瞭解產品在遊戲實際製作過程中的表現。此外,我們堅持以 Unity 團隊的身份協作,旨在提升遊戲開發過程的體驗,惠及所有開發者。
迄今為止,我們跟很多團隊都有深度合作,我們並不是要挑 Bug,而是要了解在遊戲開發的過程中,我們的解決方案是否能夠徹底解決問題,比如工具是否足夠高效,促進美術和程式間的協作,等等。
以通用渲染管線(URP)為例,我們在專案初期就決定用通用渲染管線(URP),所以在推進的過程中會和 URP 團隊緊密合作,我們喜歡或不喜歡的點都會及時反饋給他們。
BTW,無論是想要選用哪種渲染管線,大家一定要儘早做決定,因為這會影響專案的整體程式。
我們希望讓這個專案長遠地發展下去,完整地體驗大家的開發流程,這個專案的意義就在於此。我們之後會提供各類深度剖析和開發日誌等內容,不斷拉近和社群的距離。
《Gigaya》是我們在 Steam 正式發行的第一個樣本專案。我們這一次想要體驗遊戲的全生命週期,不是做完就萬事大吉了,我們要一路把它做到能在商店上架的程度,發現開發者們的共有痛點,最好還能解決現存的問題。
《Gigaya》絕對值得大家的期待。
近期,我們正式向大家介紹了由 Unity 研發的首款遊戲《Gigaya》。該遊戲目前仍處於開發階段,在開發完成後,遊戲本體包括其資產和原始碼都將免費向所有 Unity 使用者開放下載和體驗。Steam 玩家也能從 Steam 商店免費下載遊戲。
《Gigaya》專案的重點並非某個特定功能或產品,而是全面瞭解廣大創作者的需求,改進 Unity 生態系統以惠及所有從業人員。雖然該遊戲尚未面世,但是我們已經針對一些問題制定了有趣的解決方案,比如製作新工具或使用替代技術來解決開發難點。
《Gigaya》在開發過程中著眼於三大重點:趣味的遊戲玩法、沉浸式的世界和遊戲發行。讓我們跟著創作團隊一起來看看《Gigaya》的開發幕後。
趣味的遊戲玩法
在遊戲玩法方面,我們著力挖掘出趣味性,而其中的重點在於團隊內部的通力合作和交流,創造出有趣的角色原型。這個過程依賴於需要快速迭代遊戲原型,摒棄無效的理念。
《Gigaya》的高階角色美術師 Juan Puerta 講解了探索遊戲趣味玩法的過程。
Juan:大家好,我是此專案的高階角色美術師 Juan Puerta,主要負責製作角色。我會向大家介紹我們在製作的角色中的經驗。
首先,我想說創作一個遊戲角色是極具挑戰性的,這一點大家應該感同身受。這個過程需要很多人的共同參與,在細節上反覆推敲。
以我們的主角 Wondu 為例,最開始的時候我毫無頭緒,所以嘗試了很多不同的設計,直到設計出了一個我覺得很有趣的形象。然後我就立即向團隊成員展示了這個角色,然後逐步給他增加了紋理、簡單的動畫,大家反響很好。整個團隊從一開始就全體參與,開了很多場會,討論是否要給他配一把槍、是否要賦予他某種能力,以及我們該如何實現這些功能。
確定創意方向的過程十分耗時,雖然每次討論的都是一些細節,但是這些細節與遊戲玩法設計息息相關,需要反覆推敲。我一共做了 4 個版本的 Wondu,相當於 4 個可用於遊戲的角色。
很感謝與我協助角色製作的主管,他鼓勵我勇往直前,嘗試以往絕不會選擇的方向,比如使用更鮮亮新穎的顏色,這些嘗試最終得到了團隊成員的認可。
接下來就是將角色拖放到 Unity 中,我把 Wondu 先拖入了 Substance,發現效果不錯,然後我把它置入了 Unity。此時我面臨的主要問題在於,無法建立著色器,畢竟我是一名美術,而著色器的開發依賴於程式。
我們團隊的 Ciro 主動聯絡了我,說他們製作了著色器檢視工具。這個工具簡直是太棒了,我彷彿化身為程式設計師,自己就能建立專屬著色器。這幫我節省了大量時間,讓我能夠專注於自己的工作。
我利用這個著色器先後建立了皮膚、頭髮著色器,可以靈活調整並且自由嘗試不同的模式。使用頭髮著色器,我不僅可以調整發色,還能夠了解角色在移動時,光線對髮色的影響,從而在遊戲照明條件下找到最理想的效果。諸如此類,這個工具實在是幫了大忙。
當然,作為一個美術,它背後的執行邏輯我一竅不通。在《Gigaya》的製作過程中,程式開發的工具對我很有幫助,程式的工具加上美術的設計,大大提高了角色原型的創作。
接下來我想展示一下 Wondu 在遊戲中的勁敵,也是一個很棒的模型。打造它的過程中,我試用了團隊研發的 LookDev 程式。在我製作這個模型的時候,他們在同步研發 LookDev,所以就讓我試用一下。
試用體驗讓我非常驚訝,因為用起來實在太棒了。在這個程式中,我只需拖放然後新增材料,就能讓角色動起來。這是我工作流程中的重要環節,因為我需要以儘可能理想的方式向創意主管展示我製作的角色。
有一次為了演示,我拜託同事 Jason 製作了一段動畫。我把他製作的動畫新增到程式中,拖入角色,然後角色就動了起來。
這對我來說實在太神奇了,無需繁瑣的步驟就能做出這麼精良的動畫效果,我還可以檢視其中的光照設定,確保角色在任意光線下的效果都很好。
沉浸式的遊戲世界
建立好角色後,我們還需要給 Wondu 建立一個世界,讓他能在其中展開精彩的探險。
打造遊戲世界的重點不一定是製作效果絕佳的圖形或精美無比的環境,重點在於打造生動自然的沉浸式世界。在這個世界裡,一切都是生動自然的,草地、樹葉、機械,以及它們與角色間的互動,這些細節會讓玩家愛上游戲並沉浸其中。
Juan:我們希望打造一個極具沉浸感的遊戲世界,即便角色不在其中時,這個世界本身也生機盎然。我們一開始研究了大量影像,接著制定了一些概念,團隊內部也開了很多會,大家都努力想做出獨具個性的遊戲。
要營造沉浸式體驗,遊戲世界必須保持統一且合情合理,不能在其中隨意新增元素。因此我們製作了美術指南,明確了各種規則,所有的設計需要遵守一定的規則。有了這份指南,大家就能更輕鬆地朝著同一個方向前進,而不是毫無目的地隨意發揮。
我們是個小型團隊,團隊中只有 2 位環境美術師,他們建立了一個彙集不同資源的精美資源庫。只需要將不同資源組合起來,就可以搭建起一個世界,這個過程就像是在拼樂高,非常有趣。
大家在螢幕上看到的這些結構,它們彼此毫無關係,但基本上是用相同的資訊製成的,資源庫對整個專案幫助很大。
角色有了,靜態的世界有了,該如何讓遊戲中所有的事物都動起來呢?接下來就是程式的主場了。
Ciro:大家好,我叫 Ciro Continisio,是本專案的技術主管。我們也是個小團隊,現在共有 5 位程式設計師。
我們的主要挑戰是將 Juan 剛剛介紹的所有內容,在技術層面讓它們成為現實。
先從角色講起,專案初期做出的決策之一就是使用物理角色控制器,我們希望 Wondu 融入遊戲世界,並非僅僅是一個四處移動的膠囊碰撞體,而是一個能影響遊戲世界並被遊戲世界所影響的角色。
我們的程式設計師 Andy Touch 很快就開發出了控制器,接著要將它與動畫匹配起來。我們和 Juan 剛剛提到的動畫師 Jason 共同進行開發,他為各個傾斜度建立了不同的工作週期,我記得他建立了 4 個週期,還為靜止狀態單獨建立了 1 個週期,然後讓它們彼此融合,這是個很有趣的方法。因為我們其實並未選擇反向動力學,雖然它顯然是一個更合乎邏輯的解決方案,但是動畫師 Jason 覺得反向動力學會略微削弱作品的表達力。
沉浸感的另一個重要方面是音效,如果 Wondu 在不同表面行走時,發出了不恰當的聲音,就會讓玩家“跳戲”。因此我們的程式設計師 Amel 開發了一個小工具,它能附著在渲染材料表面,新增 1 個我們稱之為物質型別(Substance Type)的欄位。它的主要功能是定義材料表面的型別,然後再向下計算,根據表面播放適當的音效。
植被顯然是遊戲世界中的另一重要部分,因此技術美術師們確保了所有植被都能與角色進行互動。可以看到當 Wondu 在草地上行走時,草會彎折,這對營造沉浸感至關重要,不僅是為了視覺上的美觀,也是為了讓人感覺他真的身處遊戲世界,讓人覺得他的確與這個世界融為一體。
他們用了些小技巧,大家可能都有所瞭解,比如根據角色位置,移動頂點位置;還用蒙版,在角色周圍建立類球體,從而向外推動頂點……
沉浸感的另一個重要組成部分是我們使用的粒子,我們可以在 Unity 中使用各種技巧和工具,Wondu 在助推器中使用混合 Shuriken 粒子,此外還有很多其他粒子。
水也是重要元素,它形成了地面上的綠洲,我們在此使用了 Unity 技術美術師 Andre McGrail 親手製作的自定義著色器。
他做了個帶 Gerstner 波浪的著色器,其中也包含漂浮物件,它們會因推力而上下浮動。它們其實是遊戲物件,其中所含的剛體推動 Wondu 上下浮動,這就形成了閉環。這不僅是為了呈現視覺效果,而是迴歸角色並影響角色,我們會看到角色以真實的狀態移動。
遊戲中當然還有各種生物,我們製作了幾種野生生物,比如頭野獸形似豬獾,它力大無窮,能把 Wondu 推開;還有像松鼠的齧齒類生物,他們怕人,遇到 Wondu 就會躲。
要讓角色移動起來,我們必須選擇如何移動,我在專案初期決定使用狀態機。除了很優秀的動畫外,我們還利用狀態機以有趣的方式融合不同行為,玩家難以察覺其中的過渡,Unity 利用狀態機制定了解決方案。
我利用狀態機以視覺化的方式處理複雜的敵人,從而輕鬆理解其結構。其實你會發現狀態機的重點並非狀態本身,而是狀態間的過渡。如有必要,你可以從任意狀態過渡至任意狀態,因為這就是生物的行為方式。無需預先設定好的行為流,而是能瞬間轉至下一個行為,可以看到這些狀態間有很多連線,狀態機有助於我以視覺化的方式理解並控制這些聯絡。
在狀態內部,我同樣選擇儘可能少用一般本地節點,僅將它們用於計時器和隨機性,還有 if 等邏輯語句。我基本上是在賭這個方法會起效。
我選擇將所有元素都包含在程式碼中,然後使用公共函式,公共函式會生成節點,這樣我就可以用這些節點在狀態機中建立行為。但它其實是程式碼,所以我隨時都能返回程式碼,修改並改進程式碼,我覺得這也會讓程式變得更穩定些。因為現在一切元素都包含在程式碼中,這就大幅降低了出現失誤以及狀態機發生故障的概率,讓我們能快速推進工作。
如果工具能加快你的工作速度,你就有餘裕犯更多錯,做出更多嘗試並剔除更多無效內容。我認為這是打造優秀遊戲的首要關鍵,重點在於精簡,而非盲目給遊戲新增更多內容。
為了讓角色動起來,我決定使用 NavMesh。人們通常將 NavMesh 視作偏固定的解決方案,但只要用幾個小技巧就可以讓角色依舊保持真實自然的狀態。
我們選擇了這個目前處於實驗狀態的軟體包,Unity 製作的人工智慧導航(AI Navigation)有了這款工具,我們就無需使用 1 個巨大的 NavMesh,而是可以將 NavMesh 作為遊戲物件,這樣就能將它們四處移動。
這個功能極其實用,因為我們甚至可以將 NavMesh 拖至吊車上。吊車是遊戲中的旋轉結構,這樣 NavMesh 就可以隨吊車移動,我們可以讓這些會飛的敵人繞吊車飛行,同時讓它們保持在 NavMesh 的覆蓋範圍內,一切都自然整合為一體。
我們還製作了一個自定義 NavMesh 碰撞平面,我在 Polybrush 中建立了這些物件,給它們建了模,將所有屋頂連了起來,然後烘焙了 1 個 NavMesh,令會飛的敵人停留在空中.
我覺得最終效果很贊,它們總會棲停在這些高杆上,接著它們會起飛,飛入開放空間。但其實它們仍在 NavMesh 的覆蓋範圍內,它們會稍微上下盤旋一會兒,看上去彷彿漂在空中,十分真實自然,同時也很穩定可靠。每當美術團隊想變更環境,我只需點選烘焙,Unity 會自動處理邊界情況,這個功能特別棒。
我們還做了些造型像蟹的野生動物,我稱它們為 Chinchinllas。它們也在狀態機中,原理十分簡單,它們會四處爬動,當 Wondu 靠近時它們會逃回我稱為避難所的地點。關卡設計師可將此地點置於地圖上的任意位置,只要在 NavMesh 上就行了。
遊戲效果相當好,當你遊戲中打鬥、跳躍、做任務時,這些野生動物會對你的行為做出反應。這種行為雖極其簡單,但能讓你更深切地感受到遊戲世界的生機,我的介紹大致到此結束。
以上就是我要講的全部內容,接下來將由 Ben 介紹我們的第 3 個支柱,即發行。
遊戲發行
遊戲發行的重點在於明確遊戲開發週期,整體流程中的痛點,開發人員通常能用 Unity 製作出優秀的遊戲,隨之而來的挑戰在於如何讓玩家體驗遊戲。過去,我們在推廣普及遊戲開發方面表現出色,如今我們想更進一步,為大家提供全生命週期的幫助。
Ben:我知道發行是很多人都會經歷的棘手部分,它對我們也十分重要,我首先想說明一下我們為什麼要正式發行這個專案。
大概一年多以前,《Gigaya》專案正式啟動,許多成員都來自別的組,開發目標也不一樣,比如讓更多人下載某種工具,或者增加某條視訊的點選量……設定目標並沒有錯,實際上這提升了我們技術開發的速度,但也帶來了新的挑戰。如果團隊或個人專注於實現某個想法,視野就難免變窄,過於集中在一點就會失去大局觀。
在座的各位應該都是開發者,我相信你們在工作中肯定遇到過這種問題,有了好想法就在上面花了過多時間。我們也犯過這種錯。
如果你的團隊給力,或者製作人懂行,那他們也許會及時把團隊拉回遊戲開發;又或者,他們覺得這個功能真的很棒,願意再給你一點研發時間進行深入探索。
就我們團隊來說,最重要的目的就是把遊戲做出來正式發行。要達成這個目標,首先得組建團隊。
正如大家所見,我們團隊裡的崗位和職責跟一箇中小型遊戲工作室的配置一致,我們的運營方式也和其他工作室一樣。但在 Unity 內部,我們的運營方式還是獨一份,團隊建立之初大家都非常激動,我們的任務就是做一些能真正幫助到使用者的實事。
問題慢慢地演變成了想法,想法則引發了討論,討論後自然要用實驗來驗證,驗證出的答案 也不完全都是成功案例,就像 Ciro 說的失敗是常事。只要迭代夠快,我們就能找到較為正確的解法。
很多人都覺得我們做的是樣本遊戲分發給開發者們,幫助大家掌握其中要點並應用到自己的專案裡,但這充其量只是《Gigaya》專案的副產品。
我們希望更深入地理解各位開發的需求,切身體驗大家的工作流程。新工具和新功能確實很吸引人,但我們要牢記遊戲開發的本質,呈現最好看的圖形效果或者達到最佳效能只是其中的一個目的。更重要的是,遊戲開發是一種人文體驗,過程中滿是各種創造性的試驗,不管你最後創造出了什麼,無論成功還是失敗,這個過程和技術一樣重要。因此,我們希望通過這次的試驗,爭取讓大家的擔子輕一點。
親歷了這段旅程之後,我們對自身的優缺點有了更深刻的理解,也把相關的反饋直接推給了功能開發團隊,希望能給他們提供一些技術角度之外的視角,瞭解產品在遊戲實際製作過程中的表現。此外,我們堅持以 Unity 團隊的身份協作,旨在提升遊戲開發過程的體驗,惠及所有開發者。
迄今為止,我們跟很多團隊都有深度合作,我們並不是要挑 Bug,而是要了解在遊戲開發的過程中,我們的解決方案是否能夠徹底解決問題,比如工具是否足夠高效,促進美術和程式間的協作,等等。
以通用渲染管線(URP)為例,我們在專案初期就決定用通用渲染管線(URP),所以在推進的過程中會和 URP 團隊緊密合作,我們喜歡或不喜歡的點都會及時反饋給他們。
BTW,無論是想要選用哪種渲染管線,大家一定要儘早做決定,因為這會影響專案的整體程式。
我們希望讓這個專案長遠地發展下去,完整地體驗大家的開發流程,這個專案的意義就在於此。我們之後會提供各類深度剖析和開發日誌等內容,不斷拉近和社群的距離。
《Gigaya》是我們在 Steam 正式發行的第一個樣本專案。我們這一次想要體驗遊戲的全生命週期,不是做完就萬事大吉了,我們要一路把它做到能在商店上架的程度,發現開發者們的共有痛點,最好還能解決現存的問題。
《Gigaya》絕對值得大家的期待。
相關文章
- 中小遊戲開發團隊如何保持創作力?<經驗篇>遊戲開發
- 網易遊戲啟動“創作熱愛者計劃”,全面扶持內容創作遊戲
- “特別好評”的黑客遊戲,《全網公敵》創作歷程分享黑客遊戲
- 《鬼泣 5》開發團隊訪談:四年創作歷程的收穫與總結
- CyDesignation創作特展 團隊成員暢談遊戲美術設計心得遊戲
- 天刀手游上線,團隊講述背後的武俠江湖故事創作
- 製作遊戲的遊戲:創作樂趣的樂趣遊戲
- 讓熱愛發光,網易遊戲創作熱愛者計劃啟動百萬冬季創作營!遊戲
- Facebook遊戲配對計劃:幫助優秀獨立、初創團隊遊戲
- 用遊戲重繪歷史:《帝國時代2》劇情戰役《李定國》的創作經歷遊戲
- 手繪風格獨立遊戲《失眠》製作人分享創作靈感和開發歷程遊戲
- 使用Unity製作遊戲AIUnity遊戲AI
- 《宇宙機器人》系列背後的創作團隊——Team Asobi機器人
- 主創去世後,這支團隊如何完成他的遺作?
- 如何製作遊戲設計文件:讓團隊快速且高效協作遊戲設計
- 網路直播:玩遊戲等於“創作”?遊戲
- PUBG公司成立新3A遊戲研發部門,計劃製作一款“PUBG世界觀”原創遊戲遊戲
- 聊齋志怪古風敘事遊戲《鐵山奇譚》,學生團隊的強創作力遊戲
- 米哈遊再發乾貨,分享《原神》新角色魈的創作歷程
- 把創作權交給玩家 網易遊戲520宣傳曲首發遊戲
- 團隊作業
- 文案策劃必修課(1):從零開始的遊戲劇情創作遊戲
- 飛行巨獸空鬥遊戲《世紀:灰燼紀元》創作思路和開發歷程分享遊戲
- 如何有效追熱點打造爆款作品,教你快速創作
- 《英靈亂戰》累計玩家數突破1億 研發團隊講述遊戲發展歷程遊戲
- Unity推出業內首款智慧化AR創作工具MARSUnity
- 待創作
- 團隊作業2
- 團隊作業一
- 團隊作業3
- 團隊作業6
- 團隊作業4
- 團隊作業1
- 團隊作業5
- B站遊戲涉足MOBA賽道,專訪《重構:阿塔提斯》製作團隊遊戲
- 囊括多項年度最佳遊戲!《黑帝斯》製作團隊談論本作起源遊戲
- 【簡潔是美德】淺談遊戲劇本創作遊戲
- 《巴比倫的隕落》主創團隊訪談:白金工作室有史以來的首款線上遊戲遊戲