本文翻譯自 Dev Diaries: Character Customization and Core Gameplay 2025年1月24日
歡迎回到我們的 Photon 開發日誌!在這裡,我們會分享合作夥伴在共享專案上的最新進展和心得。在上一部分中,我們提到 Team Nthusia 如何利用 Photon Fusion 的共享模式來打造受《動物之森》啟發的樣本。現在假期已經過去了,我們也稍微喘口氣,這次回來我們要繼續第二部分,深入了解這個樣本的核心機制。
在這部分的開發日誌中,你可以期待:
- 核心遊戲機制:展現玩家在共享社交模擬世界中可以體驗的互動行為。
- Fusion 共享模式:讓玩家在客戶端主導的網路中輕鬆合作,特別適合休閒和社群驅動的遊戲。
- 可分享的物品系統:讓物品交換變得更順暢,確保持續的擁有權,並為合作遊戲建立一個遊戲內的經濟體系。
- 角色自訂:一個簡單高效的系統,可以在網路環境中動態同步玩家的外觀。
加入核心遊戲機制
這個範例的整體概念是打造一個輕鬆的社交模擬,讓玩家能夠進入一個共享的世界。在這裡,他們可以自由探索、與環境互動,並改變地圖上的內容。
玩家擁有斧頭、鏟子、網子和噴壺等工具,可以用來種植和澆灌樹木。隨著時間的推移,樹木會成長並結出可供出售的果實。玩家還可以與 NPC 互動,進行物品的買賣。遊戲玩法包含砍樹、挖洞、埋藏物品以及收集貝殼等活動。這一切都是為了讓玩家能夠放鬆並享受一個共享且互動的世界,真的是 Fusion 共享模式的完美樂園。
Fusion 共享模式有什麼特別之處?
Fusion 支援三種網路拓撲:伺服器模式、主機模式和共用模式。Fusion Shared 是一種 100% 用戶端主導的模式,這意味著每個用戶端都有完全的權限,而不需要依賴中央伺服器或單一具有完全權限的主機。所有用戶端各自運行自己的遊戲模擬,並且所有的更新訊息都是透過 Photon Cloud 傳遞到其他用戶端。由於遊戲客戶端對於生成或管理物件擁有完全的權限,所有客戶端共同承擔擁有和追蹤物件狀態的責任。
共享模式非常適合休閒遊戲或擁有大量玩家的遊戲,特別是在玩家頻繁進出時,因為這不會影響遊戲的流暢性。對於不需要深入了解網路程式設計的開發人員來說,這種模式非常容易採用,且在操作成本和複雜性上也相對較低。
在快節奏或競爭激烈的遊戲中,保持玩家之間的一切同步會變得非常困難,並且由於缺乏中央權威,共享模式更容易受到作弊行為的影響。為了解決防作弊的問題,Fusion 將會運用我們成熟的插件技術,讓開發者能夠快速建立自訂的伺服器程式碼並上傳到 Enterprise Photon Cloud。
Team Nthusia 正在開發的樣本受到《動物之森》的啟發,非常適合共享模式。玩家可以一起建造和維護村莊——比如種植樹木、交易物品等等。
遊戲世界的成長依賴於每個人的努力,沒有任何一位玩家能獨自掌控一切。這一切都是為了促進創造力、社區感和協作精神。
The Photon Quadrant
使用可分享的物品系統
這個範例遊戲中的可共享庫存系統的優點在於,當玩家離開時,可以輕鬆轉移掉落物品的所有權,避免物品消失。由於有了這個可共享的庫存系統,玩家將能夠進行物品和金錢的交換,而具體的細節仍在確定中。玩家能夠收集和丟棄物品,包括金錢物品,這樣他們就能參與遊戲內的經濟並進行物品交易。
系統確保當玩家離開遊戲時,掉落的物品不會消失;相反,它們的所有權會順利轉移,以防物品遺失。這是透過利用 Fusion Shared 來實現的,避免了專案僅與特定的客戶端或伺服器綁定。庫存中的物品具有「掉落」、「種植」和「埋藏」等特定特性,方便玩家的使用和共享。
如何讓你的角色看起來很棒
Nthusia 的客製化系統設計簡潔且高效。玩家可以自訂角色的皮膚、頭髮和衣服顏色,以及髮型、帽子和配件。當玩家出現時,這些選擇將應用到他們的角色上,並與遊戲中的其他所有玩家共享。該系統使用 Networked 自訂 INetworkStruct 屬性,這是一種將相關資料綁在一起,並使其成為遊戲網路模擬一部分的方法。這樣做比單獨同步每個資料要有效率得多。
客製化系統透過幾種方式優先考慮效率。首先,它使用位元組索引來儲存選擇,而不是像完整 RGB 顏色代碼那樣的大數據值,這樣可以減少需要透過網路傳送的資料量。其次,所有的客製化資料都被打包成一個屬性,從而簡化了同步過程。
INetworkStruct 屬性具有 OnChangedRender 特性,這意味著每當客製化資料變更時,此特性就會自動更新視覺效果。Photon Fusion 的「編織器」負責處理這些資料的共享,因此開發人員不必手動處理這個問題。在這個特定的範例中,客製化資料只需設定一次,之後就可以透過 OnChangedRender 回呼自動更新。
以下是一個例子:
[Networked(OnChanged = nameof(OnChangedRender))]
public struct CustomizationData : INetworkStruct {
public byte SkinColorIndex;
public byte HairColorIndex;
public byte ClothingColorIndex;
public byte HairstyleIndex;
public byte HatIndex;
public byte AccessoryIndex;
}
private void OnChangedRender(Changed<CustomizationData> changed) {
// Apply visual changes here based on updated properties
}
良好的開端
透過這些實現,您的範例將擁有良好的建置基礎。就像 Nthusia 一樣,您可以利用 Fusion Shared 創建一個小世界,讓角色可以在其中漫遊,玩家可以互相認識。現在我們已經準備好進入這個範例的最後階段,我們將在下一部分也是最後一部分的開發日誌中展示該範例,仔細研究如何完善庫存管理、以用戶友好的方式實現對話、添加控制器支援,並設定發布範例。
準備好建立自己的成功多人遊戲了嗎?
透過 Photon 的 Fusion,將尖端的多人遊戲功能整合到您的專案中從未如此簡單。我們提供業界最先進的工具、全面的支援以及您入門所需的一切——從可下載的範例到詳細的文件。
今天就踏出第一步——下載 Fusion 並開始建置。如果您正在尋求深入的幫助,請加入我們的Gaming Circle,您可以直接與我們的開發人員聯繫,並在整個旅程中獲得專家指導。
您的多人遊戲成功故事就從這裡開始!
請在 Discord, YouTube, BlueSky, X 和 LinkedIn 加入我們—我們迫不及待想看看你創造的作品!
評論
0 條評論
請登入寫評論。