This document is about: FUSION 1
SWITCH TO

Impostor

Level 4

概述

這個範例使用主機端模式拓撲。

Fusion Impostor 展示了一個方法,說明如何開發一個最多達10位玩家的社交推斷遊戲的核心迴圈,以及如何整合及處理與附有一個Fusion專案的Photon Voice SDK的交流。如需更多關於Photon Voice的資訊,請參見操作手冊中的Voice頁面

這個範例執行一個已連線的狀態機器,以輔助同步及遊戲狀態處理

這個範例的一些聚焦點有:

  • 在遊戲前大廳及遊戲中的語音交流
  • 完全已連線的遊戲狀態機器及系統,其中包含遊戲前、遊玩中、會議,以及遊戲後結果
  • 共享的互動點,比如工作站及共同工作人員身體
  • 客製化遊戲設定(冒名頂替者的數量、移動速度、玩家碰撞等等)
  • 在比如門的世界中的物件的已同步狀態
  • 在一個模組化的互動系統上組建的各種共同工作人員的工作
  • 使用Photon Voice來提供處理各種語音交流類型
  • 將房間設定為主機端,使用房間碼以讓客戶端加入
  • 地區設定、暱稱,及麥克風選擇

技術資訊

  • Unity 2021.3

在您開始之前

為了運行範例

  • PhotonEngine 儀表板中建立一個Fusion應用程式帳號,並且將它貼上到即時設定(可從Fusion選單中到達)中的App Id Fusion欄位之中。
  • PhotonEngine儀表板中建立一個Voice應用程式帳號,並且將它貼上到即時設定中的App Id Voice欄位之中
  • 然後載入Launch場景並且按下Play

下載

版本 發佈日期 下載
1.1.3 Oct 21, 2022 Fusion Impostor 1.1.3 Build 5

資料夾架構

主要指令碼資料夾/Scripts有一個子資料夾名為Networking,其包含範例中的主要網路執行方式,以及已連線的狀態機器。其他子資料夾,比如PlayerManagers,分別含有針對遊戲遊玩行為及管理的邏輯。

玩家登錄

PlayerRegistry儲存一個參照到房間中的各個玩家,並且針對在一位或多位玩家上選取以及執行動作,來提供公用程式方法。

遊戲狀態

遊戲邏輯的流程及行為由GameState網路行為所控制。GameState定義一個遊戲的階段的列舉,其中已連線StateMachine屬性是作為其狀態。 StateMachine<T>定義一個StateHooks類別,其有3個欄位:onEnteronExit,及onUpdate。當使用狀態機器類別時,各個列舉狀態可能有StateHooks,其定義在進入時及結束時發生什麼,同時積極地維持在狀態之中。

進入一個遊戲

使用者可以使用房間碼來加入或成為房間主機端。如果使用者選擇成為主機端,可選擇是否輸入一個房間碼。當在一個房間之中時,加入所需的房間碼將顯示於畫面的底端。

透過 runner.SessionInfo.Name來存取房間碼。

NetworkStartBridge作為一個中繼到NetworkDebugStart。如果沒有指定一個特定碼,StartHost()將從RoomCode得到一個隨機4字元字串。

遊戲前

在遊戲前階段,玩家可以選擇從大廳區域的中心的桌面來設定它們的顏色,從設定來選擇他們偏好的麥克風裝置。主機端可以自訂遊戲設定並且負責開始遊戲。

處理輸入

PlayerInputBehaviour.cs指令碼中輪詢已連線輸入。也在這裡完成了輸入封鎖。此外,在執行輸入之前,在PlayerMovement.cs中完成伺服器端檢查。 使用FixedInput.cs類別來完成本機輸入輪詢。

鍵盤

  • WASD以行走
  • E以互動
  • 鍵盤Enter以開始遊戲(只在遊戲前作為主機端時)

滑鼠

  • 按一下左鍵以行走
  • 按一下UI中的按鈕以互動

玩家

玩家的行為由三個不同的元件所定義:

  • PlayerObject:持有一個參照到這個物件相關聯的PlayerRef,並且含有在房間中的玩家的索引、它們的暱稱,及選取的顏色。PlayerObject也是進入點以調用Rpc_Kill方法。
  • PlayerMovement:負責玩家運動及輸入。它也持有遊戲遊玩——基礎資料及方法——特別是IsDeadIsSuspect,及EmergencyMeetingUses屬性。
  • PlayerData:玩家的視覺效果元件。它主要處理材質,設定動畫屬性及具現化暱稱UI。

可互動物

  • 顏色亭 :位於遊戲前房間的中心桌面。玩家可以從12個預設的顏色中選擇任意一個還沒有被另一位玩家選擇的顏色。
  • 設定亭 :位於遊戲前房間的頂端,主機端可以選擇遊戲設定並且從這裡開始遊戲
  • 緊急按鈕 :在每一回合可以按下有限次數的緊急按鈕,以召開一個會議
  • 工作 :14個工作站,有5個獨特的工作迷你遊戲,其放置在地圖各個角落,讓共同工作人員來完成
  • 屍體 :可以報告一個被謀殺的玩家的屍體,以由共同工作人員來免費召開一個會議,或是由冒名頂替者召開以試著掩飾他們的蹤跡

工作

工作站放置在地圖各個角落。當共同工作人員在它們的範圍之中時,可以與它們互動。

  • 控溫器 (TemperatureTask.cs):按上或下箭頭來讓兩個數字相等
  • 滑桿 (SlidersTask.cs):拖動各個滑桿以對齊紅色邊框。它們在正確定位時將鎖住。
  • 圖樣配對 (PatternMatchTask.cs):右側面板的按鈕與左側面板的閃爍的燈光序列相配對。
  • 數字序列 (NumberSequenceTask.cs):以遞增數字順序(1到10)來按下各個數字
  • 下載檔案 (DownloadTask.cs):按下下載按鈕並且等待長條填滿以完成它。

語音

針對在Fusion Impostor中的Voice 2整合,使用兩個由Photon Voice 2提供的指令碼:

  • Fusion語音網路 被新增到PrototypeRunner預製件。
  • 語音網路物件 用於Player預製件,也有一個Speaker作為給定的預製件的一個下層。
Back to top