Game Core
遊戲遊玩模式
控制遊戲遊玩並評估獲勝條件的主指令碼。GameplayMode
的一部分是處理玩家的擊殺/死亡,和寫入玩家的統計資料。
死亡競賽
具有標準死亡競賽功能的最基本的遊戲模式。
淘汰賽
玩家的生命數量有限。最後一個存活的玩家獲勝。此遊戲模式的特點是縮小區域,它隨著時間的推移減少可用地圖空間。

皇家對戰
玩家從圍繞縮小區域盤旋的飛機開始。跳傘開始後,飛機進入活動地圖區域,玩家可以攜帶噴射背包跳傘降落。玩家只有一次生命,最後一個存活的人獲勝。
在飛機上時,玩家的輸入由AirplaneAgent
處理。

縮小區域
縮小區域是一個圓形區域,隨著時間的推移而收縮,並對該區域以外的玩家造成傷害。收縮分為多個步驟。在執行每個步驟之前,UI中將顯示一個警告和剩餘時間。收縮步驟之間的時間取決於活躍玩家——活躍玩家越少,區域收縮得越快。

縮小區域在皇家對戰和淘汰賽模式中啟用。
公告器
Announcer
系統是一個簡單的系統,可以向玩家通知遊戲中的事件,如多次擊殺、剩餘時間、剩餘玩家等。每個遊戲模式都可以定義一組不同的公告,這些公告被評估並呈現給玩家。

Announcement
是定義遊戲中事件的可指令碼物件。每個公告物件都有自訂的評估邏輯,並包含觸發後應向玩家顯示的訊息或音訊片段。公告可以有不同的優先順序,並且可以在特定頻道中播放。當同時觸發同一頻道中的兩個公告時,只顯示優先順序較高的公告。這確保了例如,即使Double Kill和Triple Kill公告都已啟動,也只顯示Triple Kill公告。
關卡生成
由於為200名玩家建立有意義的關卡非常耗時,我們選擇了半自動地透過程式碼生成關卡。

當伺服器載入場景時,每個關卡都是基於運行階段指定的參數生成的。生成過程中涉及到一些隨機性,因此每次運行都是不同的。
場景GenArea2
- GenArea 7
的不同之處僅在於位於Gameplay/NetworkGame
遊戲物件上的參數設置。

關卡生成細節不在本文檔的範圍內,但簡而言之,關卡分為 區域(著色部分)。每個區域都由 塊(預製的預製件)建造,塊與 連接器(預製的預製件-坡道,一堆箱子)連接。每個區域的中心由一個特殊的 塔 塊定義。控制生成的值可以在LevelGenerator
指令碼中找到。

每個塊都可以定義玩家可能生成的位置和物品盒的位置。作為生成過程的一部分,物品盒被生成到關卡中。
網路遊戲
NetworkGame
處理連線玩家的加入和離開,並為每個客戶端生成一個Player
預製件。中斷連線的玩家會被儲存,以便在重新連線時恢復他們的資料。NetworkGame
在初始化過程中生成GameplayMode
。
場景與場景內容
Scene
處理特定於場景的功能和服務(繼承自SceneService
),如UI、相機、音樂、小地圖和其他。場景服務是從Scene
手動更新的,因此它們可以隨時被初始化、啟用、停用和更新。
SceneContext
提供對跨程式碼庫所需的常用服務或其他資訊的安全存取,而無需使用靜態。場景內容自動傳遞給場景服務,並指派給Gameplay
和NetworkObjectPool
中的聯網物件。存取SceneContext
需要從ContextBehaviour
而不是從NetworkBehaviour
繼承。
遊戲核心
下圖說明了應用程式迴圈:

下圖顯示了核心遊戲指令碼的生命週期:
