天天看點

戰棋遊戲開發-序

前言

該系列文章為本人開發戰棋遊戲的回顧總結。

遊戲玩法設計

遊戲玩法上會主要參考火焰紋章系列1,待遊戲開發到一定進度時會進行自定義的玩法擴充。

戰棋遊戲開發-序

主要系統

  1. 網格地圖
  2. 回合制戰鬥
  3. 戰棋角色培養

開發工具

下面是遊戲開發使用的引擎和架構。

  • 遊戲引擎: Unity3D
  • 遊戲架構: GameFramework

遊戲開發進度

  1. 網格地圖基礎功能 - 完成
  2. 回合制戰鬥流程 - 完成
  3. 戰鬥系統擴充(技能 & Buff系統) - 進行中

遊戲源碼

項目源碼GitHub

戰棋遊戲開發-序

系統整體結構

系統整體結構包括: 戰棋戰鬥系統, 戰鬥編輯器系統, 其他輔助功能子產品

戰棋戰鬥系統包括: 戰場地圖子產品, 戰鬥機關子產品, 戰鬥流程子產品

戰鬥編輯器系統包括: 地圖資料編輯器, 戰鬥資料編輯器

戰場地圖子產品

戰場地圖設定為四邊形網格地圖, 使用字典儲存地圖網格單中繼資料。

戰場生成步驟:

  1. 反序列化戰場地圖資料 - 借助newtonsoft.json
  2. 戰場地圖渲染 - 借助Unity元件tilemap

戰鬥機關子產品

戰鬥機關BattleUnit繼承于網格機關GridUnit。把和地圖互動的基礎功能放在基類中, 後續實作例如地圖建築之類的功能時也可以繼承GirdUnit, 可以友善的實作擴充。

構造: 不同的戰鬥機關通過id讀取配置表對應的資料進行構造。

與其他子產品互動: 盡量使用事件以降低和其他子產品的耦合。

戰鬥機關自動行動AI初步設計

  1. 攻擊目标搜尋
  2. 最優移動位置選擇
  3. 移動并攻擊
後續可能會使用行為樹來優化自動行動AI

戰鬥流程子產品

使用有限狀态機管理戰鬥的各個流程, 有限狀态機的實作來自于遊戲架構GameFramework。

戰鬥狀态初步劃分為: 回合切換狀态, 戰鬥機關行動狀态, 戰鬥機關結束行動狀态

尋路子產品

暫時使用普通的廣度優先搜尋, 待有性能需求之後改成A*尋路。

尋路時, 将網格單中繼資料包裝成導航節點資料, 導航節點資料執行個體使用引用池進行管理以降低頻繁配置設定記憶體的性能消耗。引用池的實作來自于遊戲架構GameFramework。

戰鬥資料編輯器子產品

  1. 借助Unity的tilemap元件進行地圖繪制, 戰鬥單元格放置。
  2. 讀取并解析放置的内容為地圖資料執行個體和戰鬥資料執行個體。
  3. 使用newtonsoft.json提供的功能把資料序列化為json格式并儲存。

UI子產品

使用UGUI進行UI界面的開發, 使用GameFramework的UI子產品進行輔助管理。

UI開發流程大緻為:

  1. 編輯UI界面
  2. 儲存為預制體
  3. 配置表填寫預制體路徑
  4. 編寫UI界面邏輯

參考

  1. 火焰紋章wiki ↩︎