Game Core
遊戲遊玩模式
主要指令碼,其控制遊戲遊玩並且評估獲勝情況。GameplayMode
的一部分是玩家擊殺/死亡的處理流程及寫入玩家的統計資料。
殊死戰
最基礎的遊戲遊玩模式,附有標準的殊死戰功能性。
殲滅戰
玩家具有有限的生命數。最後一位留下的玩家獲勝。這個遊戲遊玩模式附有一個縮減區域的功能,其隨著時間來減少可用的地圖空間。
大亂鬥
玩家在一個繞著縮減區域飛行的飛機上開始。在開始跳下之後,飛機進入啟用的地圖區域,而玩家可以跳下並且以他們的噴射背包來著陸。玩家只有一次生命,最後一位留下的玩家獲勝。
在飛機中時,玩家的輸入由AirplaneAgent
來處理。
縮減區域
縮減區域是一個圓形的區域,其隨著時間縮小,並且對於在此區域外的玩家造成傷害。縮減分成多個步驟來進行。在每個步驟之前,在UI中將顯示一個警告及一個剩餘時間。在縮減步驟之間的時間是基於存活的玩家——存活的玩家越少,區域縮減的速度越快。
在大亂鬥及殲滅戰模式中啟用縮減區域。
廣播器
Announcer
系統是一個簡單的系統,其告知玩家們遊戲內事件,比如多重擊殺、剩餘時間、剩餘玩家,以及更多事件。每個遊戲遊玩模式可以定義一個不同的廣播集,其被評估並且呈現給玩家。
一個Announcement
是一個可指令碼物件,其定義一個遊戲內事件。每個廣播物件有自訂評估邏輯,並且含有在觸發後應該呈現給玩家的訊息或語音片段。廣播可以有不同的優先性,並且可以在特定的頻道中播放。當同時觸發在相同頻道的兩個廣播時,只會呈現具有較高優先性的廣播。舉例而言,這確保了在同時啟用雙重擊殺及三重擊殺的廣播時,只會顯示三重擊殺的廣播。
關卡生成
因為針對200名玩家來建立有意義的關卡是相當花時間的,我們選擇透過程式碼來半程序地生成關卡。
每個關卡是在伺服器載入場景時,基於運行階段特定的參數來生成。在生成流程中含有一些隨機性,所以每次運行都不相同。
GenArea2
到GenArea 7
場景只在位於Gameplay/NetworkGame
遊戲物件上的參數設定中有所不同。
關卡生成詳細資料已經超出本文檔的範圍,但是簡單的說,關卡被分為各個 區域(著色區段)。每個區域由 區塊(預先製作的預製件)所建構而成,並且區塊以 連接器(預先製作的預製件——坡道形,一堆方盒)來連接。各個區域的中心由一個特別的 塔 區塊來定義。控制生成的值可在LevelGenerator
指令碼中找到。
每個區塊可以定義可能的玩家繁衍位置及物品盒的位置。物品盒作為生成流程的一部分來被繁衍到關卡中。
網路遊戲
網路遊戲處理已連線玩家的加入及離開,並且針對各個客戶端來繁衍一個Player
預製件。儲存中斷連線的玩家,所以可以在重新連線的情況下回復他們的資料。NetworkGame
在初始化流程時繁衍GameplayMode
。
場景及場景內容
**Scene
**處理場景特定的功能性及服務(SceneService
),比如UI、相機、音樂、迷你地圖,及其他事項。從Scene
手動地更新場景服務,所以可以在任何時候初始化、啟用、停用,及更新它們。
**SceneContext
**提供安全的存取到常用服務或在程式碼庫之間所需的其他資訊,而不需使用靜態。在Gameplay
及NetworkObjectPool
中,場景內容被自動地傳送到場景服務,並且被指派到已連線的物件。為了存取到SceneContext
,需要繼承於ContextBehaviour
及ContextSimulationBehaviour
而非NetworkBehaviour
及SimulationBehaviour
。
遊戲核心
以下圖片描述了應用程式迴圈:
以下圖表展示了核心遊戲指令碼的週期:
Back to top