您現在的位置是:首頁 > 遊戲

從《Breakwaters》學習開發小規模合作遊戲所必需的8大要素

由 GameRes遊資網 發表于 遊戲2022-07-17
簡介按照上方標準,《Boss Room》的表現如下: 延遲:延遲不超過 200ms(包括從中轉伺服器上跳轉) 同場玩家數:最多 10 人,遊戲託管於常見 PC 上 同步模擬規模:支援所有玩家和 AI 的變換、動畫以及活動精確度:休閒性戰鬥機制僅

開發遊戲需要學什麼

本文首發“unity官方平臺”

多人遊戲的開發相較於其它遊戲型別,需要開發者做更多的前期準備,包括專業的開發知識、玩家通訊等長期服務。

本文中,我們會介紹製作多人遊戲時需考慮的八大要素,及其對小規模合作遊戲的影響。同時,我們與 Soaring Pixels Games 的 Phillip Heckinger 討論了工作室最新的作品《Breakwaters》,深入瞭解了團隊的開發方式及其背後的考慮。

多人遊戲開發的8大要素

在選擇或開發多人遊戲聯網方案時,我們通常需要考慮以下八個關鍵要素。

從《Breakwaters》學習開發小規模合作遊戲所必需的8大要素

網路延遲:遊戲可接受的延遲量

從《Breakwaters》學習開發小規模合作遊戲所必需的8大要素

同場玩家數:每場遊戲中的網路玩家數量

從《Breakwaters》學習開發小規模合作遊戲所必需的8大要素

同步模擬規模:需要在玩家間同步的模擬資料

精確性:玩家聯網體驗時,資料的準確性

運維成本:建立、維護和運營遊戲的成本

複雜性:聯網方案的複雜程度,應用方案對團隊經驗的要求

反作弊:防止玩家作弊

從《Breakwaters》學習開發小規模合作遊戲所必需的8大要素

方案鎖定:在未來替換方案的難度

在考慮好這八個要素,並瞭解每種聯網模式所提供的支援後,你就可以開始選擇一個模式,著手遊戲的開發了。

從《Breakwaters》學習開發小規模合作遊戲所必需的8大要素

開發小規模合作遊戲所需考慮的8個因素

《Boss Room》就是此類遊戲最好的例子,它的玩家和模擬規模都較小,需要玩家多人合作,它的遊戲房間託管於客戶端。

按照上方標準,《Boss Room》的表現如下:

延遲:

延遲不超過 200ms(包括從中轉伺服器上跳轉)

同場玩家數:

最多 10 人,遊戲託管於常見 PC 上

同步模擬規模:

支援所有玩家和 AI 的變換、動畫以及活動

精確度:

休閒性戰鬥機制僅要求有適當的資料精度

運維成本:

伺服器建立和維護零成本,遊戲執行時可使用中轉伺服器降低成本

複雜度:

低複雜度,方便開發者學習多人遊戲開發基礎

反作弊:

合作性 PVE 遊戲不必特別擔心作弊行為,因為作弊收益不大

從《Breakwaters》學習開發小規模合作遊戲所必需的8大要素

方案鎖定:

將來會升級該樣板遊戲至專用伺服器上執行

需要注意的是,某些小規模合作遊戲相比於其他遊戲有著獨特的需求。例如,《Overcooked!》背後的 Team17 工作室最初使用的是點對點直連(P2P),但在開發過程中又改成了專用伺服器。這樣做的目的是為了應對遊戲推出時的需求高峰和總玩家規模。

那麼,你該如何找到適合自己的聯網模式呢?我們採訪了 Soaring Pixels Games 的老闆菲利普·赫金格(Phillip Heckinger)來了解為什麼《Breakwaters》選擇了當前的聯網模式。

《Breakwaters》為何選擇這種聯網模式

從《Breakwaters》學習開發小規模合作遊戲所必需的8大要素

《Breakwaters》是一款以海洋世界為背景的動作冒險遊戲,玩家需要用自己的雙手建造建築、製作物品、努力生存下去,遊戲目前處於搶先體驗階段。我們採訪了 Soaring Pixel Games 來詢問以上八個因素在選擇《Breakwaters》的聯網模式時起了怎樣的作用。

從《Breakwaters》學習開發小規模合作遊戲所必需的8大要素

同場玩家數

該遊戲的線上合作模式支援多名玩家一起探索海洋,並且允許四名玩家組隊對抗巨人。根據玩家的喜愛情況,SoaringPixels 會考慮增加每場遊戲的玩家數量。

複雜性

《Breakwaters》是一款雄心勃勃的遊戲,它使用了高水準的水模擬系統。為了保證遊戲的流暢性、減少載入時間,Soaring Pixels Games 將不同的模擬分成了幾個抽象層。

水的模擬會根據水的空間位置和距玩家的距離來啟用/禁用,這種啟用系統已從單人遊戲應用到了多人遊戲。模擬、渲染和 AI 都由單獨的系統處理。這不僅能最佳化單人遊戲的效能,還能將多人遊戲的模擬和主機資料更輕鬆地傳輸給其他玩家。

精確度

《Breakwaters》使用了一個基於 PhysX 打造的定製偽確定性(pseudo-deterministic)物理引擎,並將模擬精度鎖定在一定範圍內。為了能做出更自然的反應,遊戲內的許多系統只需要知道某樣東西的大致位置即可,低精度能讓系統快速捕捉到由某些事件或玩家行為而產生的狀態更新。

大部分時候,物件的旋轉值甚至與模擬運算毫無關係。如果模擬需要有更高的精度,系統則會透過提高更新頻率來增加精度。

反作弊

由於遊戲以玩家合作為主,Heckinger 表示反作弊並非團隊目前的重點關注事項。這使得遊戲在其他因素上能投入更多考慮,比如以哪個裝置作為頭號模擬資料來源。

“我們並不非常注重競技性,如果遊戲表現夠好,競技性可能會在日後被提上日程。現階段我們更關心遊戲的樂趣,就算有部分玩家作弊,也不會對遊戲體驗產生重大影響。“赫金格補充說。

從《Breakwaters》學習開發小規模合作遊戲所必需的8大要素

同步模擬的資料規模

在一個巨大的開放世界裡,相互獨立的遊戲系統會根據玩家的位置來啟用或禁用。這時玩家自己的裝置決定了客戶端的模擬結果,而多人遊戲的遊戲世界則是由多個玩家共同建立的。Soaring Pixel Games 透過巧妙的設計,利用單人遊戲的遊戲架構來完成模擬。

“得益於遊戲的設計,許多潛在的網路問題我們都先在單人遊戲中解決了。”Heckinger說。

多虧了遊戲複雜的細節層級和空間位置系統,團隊可在多人遊戲中找出那些必要的模擬及直接影響玩家的遊戲區域。

他們可以在模擬出的世界中找出哪些內容需要用到網格元件,因為並非所有的東西都要有一張網格。非獨立網路實體物件或不帶聯網元件的目標物件將被分配到一個帶有獨立可定址聯網元件的系統中。這些元件會關聯到所有公共模擬的目標物件上,減少系統需要同步的資料。

網路延遲

《Breakwaters》並不依賴低延遲或 Twitch(某直播平臺)輸入。另外,由於 Soaring Pixel Games 決定將模擬下放到客戶端,所以遊戲的大部分系統都可以直接改變客戶端的狀態,無需透過伺服器許可(遠端呼叫)來改變狀態。

Heckinger 說:“我們的遊戲玩法相比其他型別的遊戲能容許更多的延遲,延遲對我們而言不算什麼大問題。”

此外,Soaring Pixel Games 經驗豐富的工程師們能夠最佳化資料大小、分段傳輸資料,並用一個自制系統預先標記好某次事件,在延遲最多半秒後再進行傳輸。Soaring Pixels Games 希望玩家明白“方法不佳、結果也會不佳”。

團隊決定不限制世界各地的玩家們相互連線,讓網路延遲隨距離的變化而變化。他們也不會阻止玩家在一個地點砍下並丟掉 1000 棵樹。Phillip 承認,專門的託管服務可以極大地改善網路延遲和多人遊戲體驗,這就引出下一個因素:

運維成本

就預算和成本而言,Soaring Pixels Games 認為客戶端的監聽伺服器是專案初期最具價效比的選擇。遊戲的許多元素的確可以支援客戶端的監聽伺服器,但即便如此,他們也更願意使用專用伺服器。這裡的決定性因素是商務運營和成本。

“要不是市場上的伺服器普遍很貴,我們一定會用伺服器託管的方案,”Heckinger 說,“我們不覺得伺服器託管在這款遊戲中能有多高的價效比,但我們打算在未來讓使用者能接入自己的伺服器,讓他們的遊戲世界能儲存地更久。”

方案鎖定

在所有因素中,Soaring Pixel Games 最關心的似乎是方案鎖定。Heckinger 他們經常會問自己:“怎樣才能以最合理實惠的方式來避免系統依賴性?”

《Breakwaters》團隊知道幾個目標平臺都有著各自的要求。對他們來說,更重要的是解決方案要有簡單的整合方法,方便提取、封裝程式碼,讓遊戲程式碼能更輕鬆地移植到不同的服務和堆疊。

與其只選擇一種解決方案,他們決定在客戶端和主機/伺服器端上用簡化的 C# 建立自己的 netcode 層。

從《Breakwaters》學習開發小規模合作遊戲所必需的8大要素

最終決定

為了避免方案鎖定以及考慮到其他因素,特別是遊戲的基本架構裡已經包含了類似的模式,Soaring Pixels Games 最終選擇了客戶端——伺服器聯網模式。他們的聯網模式包括一個由玩家裝置執行的監聽伺服器,伺服器可向玩家們廣播遊戲公共模擬的權威資料。

如果有一天,遊戲業務有了新需要,他們也能將主機和伺服器功能轉移到專用伺服器上。這就保證了遊戲開發的靈活性,還允許遊戲的聯網模式在規模擴張、玩家變多後做出修改。

你的遊戲是否類似於《Breakwaters》呢?如果是,那建立使用“監聽-伺服器”的“客戶端—伺服器”解決方案也可能是你的選擇。

適用於小規模合作遊戲的Unity產品

你是否也想製作一款小規模合作遊戲?那就快來用 Netcode for GameObjects 讓遊戲聯網、用 Relay 和 Lobby 讓玩家們彼此連線起來吧。

Netcode for GameObjects

Unity 的新 Netcode 解決方案 Netcode for GameObjects 可為類似《Breakwaters》客戶端主持的多人合作遊戲提供解決方案。此類遊戲可容忍較高的延遲(約200毫秒),不需要有嚴格的反作弊措施,並且遊戲互動速度更偏向於較緩。

*你可以直接訪問MIT許可下的開源GitHub程式碼庫來了解其它遊戲型別的聯網方案。

Relay

經濟又安全的 Relay 服務非常適用於小規模合作遊戲的聯機。目前處於 Beta 公測階段的 Relay 服務可讓玩家們直接聯機進行遊戲,無需用到昂貴的遊戲伺服器。

Lobby

那玩家怎樣互相共享遊戲呢?處於 Beta 公測階段的 Lobby 服務可能會給你答案。

Lobby 允許玩家用簡單的遊戲設定建立公開遊戲房間,供其他玩家搜尋、查詢和加入。玩家還可以建立私人遊戲房間,透過邀請的方式讓指定玩家加入。

推薦文章