3月 日誌之 2 — 數值設計、表格與JSON
演化循環 Evolooption-Prototype » Devlog
3/10 ~ 3/21
遊戲數值的平衡與維護:Table -> JSON -> Game的資訊流
當遊戲中有許多需要預先設計、平衡數值的物件,如角色、種族、職業、道具、技能、敵人、任務、報酬……,或是其他任何更特殊的,一個遊戲設計中重要的資料(人物關係相性、影響對話方向的特質標籤……),此時除了在程式中設計出一個資料結構並與系統整合之外,更需要為「迭代數值平衡」這件將會不斷發生、頻繁變動的事,提供一個合適的工具介面,一個便捷、有效率的workflow;換句話說,讓你的設計師或你的「設計師腦」可以輕鬆一點,專注在設計與平衡的任務上。
此時至少會有3種選擇:
- 繼承遊戲引擎中可以預先編輯、儲存的自定義數據類別:如Unity的ScriptableObject,或是Godot中的Resources;它們也大多也提供了客製化編輯面板、分類整理屬性的方式(Unity的Inspector Attributes、Godot的@export keyword),這相當於是一個引擎內的物件編輯工具。這種方式的workflow大概是:創建自定義的類別物件->編輯物件屬性->測試遊戲平衡性->一個個點選物件調整數值。這樣的方式在資料物件數量不多,且物件屬性較簡單的情況下很方便,屬性型別、從屬關係也明確,很適合在開發早期實驗什麼樣的資料結構較符合遊戲系統的需要。但這樣卻有幾個明顯的缺點:
- 一次只能顯示、編輯一筆資料,要靠設計者去記憶或翻找物件間的相對差異。
- 很多很多創建、選取等重複的點擊。
- 每個獨立物件都是一個檔案,造成資料夾凌亂雜多
- 使用表格工具編輯再轉成遊戲方便的讀取的檔案格式:相較之下,表格是個更加有效率且同樣易讀的資料呈現方式,一個n×m的表格就得以同時併呈n個獨立物件各自的m個屬性,物件間的相對差異清楚明瞭;使用Google Sheet或Excel亦可加上條件化格式與資料驗證來進一步客製化編輯介面;這個方式的挑戰在於將表格資料匯出再由遊戲讀取。以使用Google Sheet和Godot為例,可以用App Script編寫程式碼,或使用如Export Sheet Data(說明文件)等add-on將表格資料匯出成JSON檔案,再於Godot中使用FileAccess和JSON類別的函式讀取成Dictionary或Array來使用。這方法提供我們所需的大量、頻繁且便捷的編輯流程,此外亦容易分享共同編輯;比較主要的缺點僅是:
- JSON支援基本的資料型別,但不區分整數與浮點數,需在讀取時轉換。
- 匯出檔案稍嫌麻煩,但可以累積大量編輯之後再一次匯出。
- 自製編輯工具:如果以上方式的彈性都不足以滿足你的開發需求。
目前為了和戰鬥系統對接以完成核心循還,在演化樹的成長系統上完成了:
- 調整生物、部位、技能、性狀類別,現在技能、性狀皆是讀取自JSON而例現。
- 數值類別現在支援:
- 永久成長
- 戰鬥增益與削減
- 增益與削減乘數
- 更新演化節點的描述、演化成本與選擇可衍生部位的UI
- 程序化數值成長技能與主動技能的文字描述。
- 每次演化至新的節點,演化樹隨機發現2個新的演化分支
- 程序化演化樹動態擴張的分支分布
- 部位化的HP Bars:
- 依發達程度分配各部位獨立的HP Bar(處理了餘數問題)
- 呈現各部位HP和總和
- 部位依排序承受傷害
待完成:
- UI:
- 進入戰鬥選項(暫時)
- 與演化樹整合的遇敵機制(長期方向)
- 呈現各部位所屬能力
- 較特殊的技能效果:
- 觸發型
- 附加狀態疊加
- 附加狀態:可疊加的一組特定效果集合
- 條件型
- 狀態:
- 部位致殘
- 瀕死
- 戰鬥後的結果/獎勵選擇畫面:
- 殺戮
- 擊敗
- 嚇退
- 逃跑
- 死亡
- 美術:
- 圖示Icon
- 像素生物
- 環境
- 動畫特效
Get 演化循環 Evolooption-Prototype
演化循環 Evolooption-Prototype
Becoming, Never-Ending.
Status | Prototype |
Author | ljack60317@gmail.com |
Genre | Strategy |
Tags | Pixel Art, Roguelike, Turn-Based Combat |
More posts
- 5月 日誌之 1 — 我所知的必然May 19, 2023
- 4月 日誌之 1 — 設計核心的重新思考Apr 07, 2023
- 3月 日誌之 1 — 起點,再一次Mar 10, 2023
Leave a comment
Log in with itch.io to leave a comment.