遊戲中PVP戰場框架的設計

2021-08-22 06:04:47 字數 1314 閱讀 9760

mmorpg類的遊戲中,pvp戰場是很常見的乙個遊戲功能,這裡分享一種專案中使用的設計方式。

在設計前,先理清下戰場我們需要維護的東西:

戰鬥的階段(如登入、準備、戰鬥、結算等階段)

戰鬥的積分(擊殺玩家得分、占領得分、助攻得分)

對於戰鬥的階段劃分,每一類具體的戰場,需要的戰鬥階段可能都是不同的,比如某些需要倒計時階段,某些需要加速階段。這都需要根據具體戰場的業務邏輯來調整。這個階段不應該由程式硬編碼實現,需要支援由策劃進行動態配置。基於這個需求,戰鬥的階段也應該抽象成乙個類來維護。具體不同的階段繼承自乙個基類即可。

對於戰鬥的積分,設計思路與戰鬥階段型別,也應該需要支援由策劃進行動態的配置,支援在某具體的戰場中能有特定的加分型別(有些戰場擊殺得分,有些占領得分等等)。所以積分,也是需要抽象出乙個類來維護。具體不同的積分規則繼承自乙個基類即可。

對於戰鬥階段的維護、階段的轉換、具體戰場的規則玩法等這些功能也肯定需要乙個單獨的類來維護,這裡稱之為戰鬥模式。

對於積分的維護(包括個人積分、團隊積分、npc積分等數值相關的)都交由乙個積分模式的類來統一管理維護。

對於戰鬥模式和積分模式,再統一由乙個總的戰鬥管理器來維護。

這個管理器具體掛載在哪個業務上,這個具體看自己的專案實現。比如在我這個專案組,所有的戰鬥、劇情之類的其實都是基於副本來實現的,所以,對於pvp戰場其實可以理解為在普通的副本類上初始化了這個戰鬥管理器,將進入副本後的操作交由這個戰鬥管理器來維護。

基於上述的分析,對涉及到的類做乙個名詞定義,方便後面的書寫。

設定戰鬥型別

讀取對應型別的配置,初始化配置資料

建立戰鬥模式,初始化戰鬥模式

3.1 戰鬥模式初始化時讀取配置,建立該型別配置的所有的戰鬥階段,並加入到階段表中

建立積分模式,初始化積分模式

4.1 積分模式初始化時讀取配置,建立該型別配置的所有積分模式,並加入到積分表中

不同的戰鬥階段繼承自乙個虛基類,該虛基類抽象出當前階段的開始、結束、下階段等同樣的介面。根據c++多型特性,得以將不同的階段採用其父類指標的模式儲存在一張階段表中,階段段可以採用形如《階段型別,stagebase*>這樣子的乙個map來實現。階段表由戰鬥模式來維護。戰鬥模式需要乙個時間輪詢,以處理階段轉化等戰鬥事件的輪訓檢測。

積分的設計和管理和戰鬥階段是類似的,都是基於多型性,採用乙個不同的積分表來維護,積分表可以採用形如《積分型別,scorebase*>這樣子的乙個map來實現。

上面這些是針對乙個pvp戰場玩法而言的設計,對於乙個戰場來說,玩家的段位、積分、排名等資料則不應該和上面說的積分混淆,這些資料需要再單獨設計乙個戰鬥的積分類來維護,這個類掛載在玩家的身上即可。

【未完,待續】

遊戲框架設計 遊戲中的事件機制

事件機制在很多高階程式語言中都有支援。譬如vb c delegate c builder 並不屬於c 的範疇。c builder中的事件處理器必須用關鍵字closure 閉包 修飾 等等,甚至在html中也可以見到它的身影。事件機制的引入使軟體系統變得更加易於理解 它使一種語言 平台 更加接近於這個...

遊戲中幾種概率設計

遊戲中常見的4種概率設計 1 常規做法,直接配置概率,程式直接判定 2 在1的基礎上,加個保底次數,當連續不發生的次數高於保底時,強制發生 3 設定基礎概率,事件不發生概率翻倍 4 設定陣列,將事件發生概率變成陣列元素 設定預計平均發生概率為1 20 20次發生1次 模擬10w次方案1 3後得結果 ...

遊戲中任務系統設計

1 任務分類 遊戲中任務可以分為主線任務 支線任務 日常任務 周任務 節日活動任務,其中周任務和節日任務可以根據設定的日期進行開啟關閉,屬於重複性任務。2 遊戲條件 各類任務開啟條件 1 玩家等級 2 玩家攻擊力3 前置任務等等 完成條件 玩家進行任務進度是否達成 任務關閉 1 玩家領取獎勵後關閉任...