This document is about: FUSION 1
SWITCH TO

Game Core

Level 4

遊戲遊玩模式

主要指令碼,其控制遊戲遊玩並且評估獲勝情況。GameplayMode的一部分是玩家擊殺/死亡的處理流程及寫入玩家的統計資料。

殊死戰

最基礎的遊戲遊玩模式,附有標準的殊死戰功能性。

殲滅戰

玩家具有有限的生命數。最後一位留下的玩家獲勝。這個遊戲遊玩模式附有一個縮減區域的功能,其隨著時間來減少可用的地圖空間。

shrinking area
在殲滅戰遊戲遊玩模式中的縮減區域

大亂鬥

玩家在一個繞著縮減區域飛行的飛機上開始。在開始跳下之後,飛機進入啟用的地圖區域,而玩家可以跳下並且以他們的噴射背包來著陸。玩家只有一次生命,最後一位留下的玩家獲勝。

在飛機中時,玩家的輸入由AirplaneAgent來處理。

battle royale airplane
注意事項:伺服器可以控制何時開始跳下,可以是直接開始跳下或延長自動開始倒數計時器的時間。

縮減區域

縮減區域是一個圓形的區域,其隨著時間縮小,並且對於在此區域外的玩家造成傷害。縮減分成多個步驟來進行。在每個步驟之前,在UI中將顯示一個警告及一個剩餘時間。在縮減步驟之間的時間是基於存活的玩家——存活的玩家越少,區域縮減的速度越快。

announcements

在大亂鬥及殲滅戰模式中啟用縮減區域。

廣播器

Announcer系統是一個簡單的系統,其告知玩家們遊戲內事件,比如多重擊殺、剩餘時間、剩餘玩家,以及更多事件。每個遊戲遊玩模式可以定義一個不同的廣播集,其被評估並且呈現給玩家。

announcements
在大亂鬥遊戲遊玩模式中的廣播

一個Announcement是一個可指令碼物件,其定義一個遊戲內事件。每個廣播物件有自訂評估邏輯,並且含有在觸發後應該呈現給玩家的訊息或語音片段。廣播可以有不同的優先性,並且可以在特定的頻道中播放。當同時觸發在相同頻道的兩個廣播時,只會呈現具有較高優先性的廣播。舉例而言,這確保了在同時啟用雙重擊殺及三重擊殺的廣播時,只會顯示三重擊殺的廣播。

關卡生成

因為針對200名玩家來建立有意義的關卡是相當花時間的,我們選擇透過程式碼來半程序地生成關卡。

genarea 7
GenArea 7場景含有七個著色區域

每個關卡是在伺服器載入場景時,基於運行階段特定的參數來生成。在生成流程中含有一些隨機性,所以每次運行都不相同。

GenArea2GenArea 7場景只在位於Gameplay/NetworkGame遊戲物件上的參數設定中有所不同。

genarea7 generation
用於GenArea 7生成的值

關卡生成詳細資料已經超出本文檔的範圍,但是簡單的說,關卡被分為各個 區域(著色區段)。每個區域由 區塊(預先製作的預製件)所建構而成,並且區塊以 連接器(預先製作的預製件——坡道形,一堆方盒)來連接。各個區域的中心由一個特別的 區塊來定義。控制生成的值可在LevelGenerator指令碼中找到。

level generator
關卡生成器檢查器

每個區塊可以定義可能的玩家繁衍位置及物品盒的位置。物品盒作為生成流程的一部分來被繁衍到關卡中。

網路遊戲

網路遊戲處理已連線玩家的加入及離開,並且針對各個客戶端來繁衍一個Player預製件。儲存中斷連線的玩家,所以可以在重新連線的情況下回復他們的資料。NetworkGame在初始化流程時繁衍GameplayMode

場景及場景內容

**Scene**處理場景特定的功能性及服務(SceneService),比如UI、相機、音樂、迷你地圖,及其他事項。從Scene手動地更新場景服務,所以可以在任何時候初始化、啟用、停用,及更新它們。

**SceneContext**提供安全的存取到常用服務或在程式碼庫之間所需的其他資訊,而不需使用靜態。在GameplayNetworkObjectPool中,場景內容被自動地傳送到場景服務,並且被指派到已連線的物件。為了存取到SceneContext,需要繼承於ContextBehaviourContextSimulationBehaviour而非NetworkBehaviourSimulationBehaviour

遊戲核心

以下圖片描述了應用程式迴圈:

application loop
應用程式迴圈

以下圖表展示了核心遊戲指令碼的週期:

game core
核心遊戲指令碼的週期
Back to top